<?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>163418</bug_id>
          
          <creation_ts>2016-10-13 16:30:35 -0700</creation_ts>
          <short_desc>Move BackForwardList from WebCore to WebKitLegacy</short_desc>
          <delta_ts>2016-10-14 10:17:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1240010</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-10-13 16:30:35 -0700</bug_when>
    <thetext>Move BackForwardList from WebCore to WebKitLegacy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240011</commentid>
    <comment_count>1</comment_count>
      <attachid>291535</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-10-13 16:34:29 -0700</bug_when>
    <thetext>Created attachment 291535
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240012</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-13 16:37:11 -0700</bug_when>
    <thetext>Attachment 291535 did not pass style-queue:


ERROR: Source/WebKit/mac/History/BackForwardList.mm:97:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/History/BackForwardList.mm:100:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebKit/mac/History/BackForwardList.mm:145:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/History/BackForwardList.mm:209:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/History/WebBackForwardList.mm:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/mac/History/WebBackForwardList.mm:335:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebKit/mac/WebView/WebView.mm:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/mac/History/WebBackForwardListInternal.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
Total errors found: 8 in 15 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>1240015</commentid>
    <comment_count>3</comment_count>
      <attachid>291537</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-10-13 16:43:21 -0700</bug_when>
    <thetext>Created attachment 291537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240016</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-13 16:44:50 -0700</bug_when>
    <thetext>Attachment 291537 did not pass style-queue:


ERROR: Source/WebKit/mac/History/BackForwardList.mm:97:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/History/BackForwardList.mm:100:  Omit int when using unsigned  [runtime/unsigned] [1]
ERROR: Source/WebKit/mac/History/BackForwardList.mm:145:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/History/BackForwardList.mm:209:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/History/WebBackForwardList.mm:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/mac/History/WebBackForwardList.mm:335:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebKit/mac/WebView/WebView.mm:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/mac/History/WebBackForwardListInternal.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
Total errors found: 8 in 15 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>1240019</commentid>
    <comment_count>5</comment_count>
      <attachid>291538</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-10-13 16:50:55 -0700</bug_when>
    <thetext>Created attachment 291538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240021</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-13 16:53:36 -0700</bug_when>
    <thetext>Attachment 291538 did not pass style-queue:


ERROR: Source/WebKit/mac/History/BackForwardList.mm:27:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
ERROR: Source/WebKit/mac/History/BackForwardList.mm:96:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/History/BackForwardList.mm:144:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/History/BackForwardList.mm:208:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: Source/WebKit/mac/History/WebBackForwardList.mm:32:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/mac/History/WebBackForwardList.mm:335:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebKit/mac/WebView/WebView.mm:34:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/WebKit/mac/History/WebBackForwardListInternal.h:0:  Use #pragma once header guard.  [build/header_guard] [5]
Total errors found: 8 in 15 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>1240324</commentid>
    <comment_count>7</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-10-14 10:17:19 -0700</bug_when>
    <thetext>Committed r207345: &lt;http://trac.webkit.org/changeset/207345&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291535</attachid>
            <date>2016-10-13 16:34:29 -0700</date>
            <delta_ts>2016-10-13 16:43:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163418-20161013163103.patch</filename>
            <type>text/plain</type>
            <size>48125</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDExYjMzNzZiMWNhNWZj
NmRjYTUwYzVhYjViYzMxOGEwNmRjOGQ5MS4uMTVhOGE0ODdhYWRmMzkzNzBjZjI3NTg4YjAyZjU2
MTgzZTYxMzM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTEwLTEzICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBCYWNrRm9y
d2FyZExpc3QgZnJvbSBXZWJDb3JlIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDE4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaGlzdG9yeS9C
YWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRD
b250cm9sbGVyOjpCYWNrRm9yd2FyZENvbnRyb2xsZXIpOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDb250cm9sbGVyLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpmaWxsV2l0aEVtcHR5Q2xpZW50cyk6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorCiAyMDE2LTEwLTEz
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NsZWFuIFJlbmRl
clRyZWVdIExheW91dFRlc3RzL2ltcG9ydGVkL2JsaW5rL2Zhc3QvdGFibGUvY3Jhc2gtYmFkLWNo
aWxkLXRhYmxlLWNvbnRpbnVhdGlvbi5odG1sIGZhaWxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYTM3ODA2M2Zm
MGZmMjcxOTk3Nzc4OGZhODg4ZTlmMDdlYjMyMDhjLi5iZTcyOTc1YjY5MzYxMjQ2NGJhNjY5YTI5
ODg3MDA4YWUxNDVlMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEwLTEzICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBCYWNr
Rm9yd2FyZExpc3QgZnJvbSBXZWJDb3JlIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDE4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAxNi0xMC0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIENvcHkgQmFja0ZvcndhcmRMaXN0IGZyb20gV2ViQ29yZSB0byBX
ZWJLaXQvd2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOTJlM2I2ZjA5NmI0ZjIyYThiNzcyMzAyNzk5
Y2Y2ZjBjNTNjMTJhYi4uYzkzYzY3NzFlYjAzODhhNTZlNGIzZWFmMjE3NTE5N2M2ZDIzMmNjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTEwLTEzICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBCYWNrRm9yd2FyZExp
c3QgZnJvbSBXZWJDb3JlIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaC4KKyAgICAg
ICAgKEJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKEJhY2tGb3J3YXJkTGlzdDo6
d2ViVmlldyk6CisgICAgICAgICogSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QubW06IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAuCisgICAgICAg
IChCYWNrRm9yd2FyZExpc3Q6OkJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChCYWNrRm9yd2Fy
ZExpc3Q6OmNsb3NlKToKKyAgICAgICAgKEJhY2tGb3J3YXJkTGlzdDo6Y29udGFpbnNJdGVtKToK
KyAgICAgICAgKiBIaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbToKKyAgICAgICAgKGtpdCk6
CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBpbml0V2l0aEJhY2tGb3J3YXJkTGlzdDpd
KToKKyAgICAgICAgKC1bV2ViQmFja0ZvcndhcmRMaXN0IHNldFBhZ2VDYWNoZVNpemU6XSk6Cisg
ICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBwYWdlQ2FjaGVTaXplXSk6CisgICAgICAgICog
SGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJh
bWVWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
VmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnBy
ZWZlcmVuY2VzOmdyb3VwTmFtZTpdKToKKworMjAxNi0xMC0xMyAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgorCiAgICAgICAgIEdldCByaWQgb2YgdGhlIEhpc3RvcnlJdGVt
VmVjdG9yIHR5cGVkZWYKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzM5OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM2M2U1ODE3Mzg1ZjE0ZDdi
NzlhNzAwYWRlODJkOTUwNTMyNGJkYzIuLmIyZjA3MGVhMTc1OTJmMWI5ODc1MGI1Mzk1ZjkwZjI4
OWRkMjVkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNjA0LDcgKzE2MDQsNiBAQCBzZXQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKIAogICAg
IGhpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcAotICAgIGhpc3RvcnkvQmFja0Zvcndh
cmRMaXN0LmNwcAogICAgIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCiAgICAgaGlzdG9yeS9DYWNo
ZWRQYWdlLmNwcAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCmluZGV4IDFlZTZlZWYwMTQ3YmY2Y2NlM2NjMTI5ODE4NTdjM2JiMjRmZDFjZjAuLjhm
YzdkOWI2NzlhOWI0OGQ0NWRiYzllMzQ1ZTIxY2UwYmU4MzBkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCkBAIC02OTAsNyArNjkwLDYgQEAgc2V0KFdlYkNvcmVfRk9SV0FSRElOR19IRUFE
RVJTX0ZJTEVTCiAKICAgICBlZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaAog
Ci0gICAgaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0u
aAogICAgIGhpc3RvcnkvUGFnZUNhY2hlLmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNiMjJhNWE4NGMwMjdkZjAyMDdmYmNj
ODY2YzNiNDc5YWVmNTQ0ZDYuLmU3ODc3Y2I4OTA0YmYxYmRhMTQ2MDEwMTNhMTIwZTBjZWUyM2Yz
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTUyODAsOCArNTI4MCw2IEBACiAJCUJDQTg0NkQ3MERDNjdBMzUwMDI2QzMwOSAv
KiBSZW5kZXJSZXBsaWNhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0E4NDZENTBEQzY3QTM1MDAyNkMzMDkgLyogUmVuZGVyUmVwbGljYS5oICovOyB9
OwogCQlCQ0E4QzgxRTExRTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4QzgxQzEx
RTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNBOEM4MUYxMUUzRDM2OTAwODEy
RkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4QzgxRDExRTNEMzY5MDA4MTJGQjcgLyogQmFja0Zv
cndhcmRDb250cm9sbGVyLmNwcCAqLzsgfTsKLQkJQkNBOENBNUYxMUU0RTZEMTAwODEyRkI3IC8q
IEJhY2tGb3J3YXJkTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0E4Q0E1RDExRTRFNkQxMDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0LmNw
cCAqLzsgfTsKLQkJQkNBOENBNjAxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBOENBNUUx
MUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQUE0ODZGMTRBMDUyNTMwMDg4RkFDNCAv
KiBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUE0ODZEMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2
ZW50RmFjdG9yeU1hYy5tbSAqLzsgfTsKIAkJQkNBQTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBs
YXRmb3JtRXZlbnRGYWN0b3J5TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0FBNDg2RTE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZh
Y3RvcnlNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCQ0FBOTBDMzBBN0VCQTYwMDA4QjEyMjkgLyogU2Nyb2xsYmFyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUE5MEMyMEE3RUJBNjAwMDhC
MTIyOSAvKiBTY3JvbGxiYXIuY3BwICovOyB9OwpAQCAtMTI4MDYsOCArMTI4MDQsNiBAQAogCQlC
Q0E4NDZENTBEQzY3QTM1MDAyNkMzMDkgLyogUmVuZGVyUmVwbGljYS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJSZXBsaWNhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDQThDODFDMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja0ZvcndhcmRDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQThDODFEMTFFM0QzNjkwMDgx
MkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQkNBOENBNUQxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrRm9yd2FyZExp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0E4Q0E1RTExRTRFNkQxMDA4
MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJhY2tGb3J3YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FB
NDg2RDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBQTQ4NkUxNEEwNTI1MzAwODhG
QUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDQUE5MEMyMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxiYXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGJhci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjY5OCw4ICsxNjY5NCw2IEBACiAJCQkJNTE3NDFEMEIw
QjA3MjU5QTAwRUQ0NDJDIC8qIEJhY2tGb3J3YXJkQ2xpZW50LmggKi8sCiAJCQkJQkNBOEM4MUQx
MUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJQkNB
OEM4MUMxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5oICovLAotCQkJ
CUJDQThDQTVEMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3QuY3BwICovLAotCQkJ
CUJDQThDQTVFMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3QuaCAqLywKIAkJCQk1
MUMwQUE0MDBGMkFBMTVFMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwICovLAogCQkJCTUxQzBB
QTM4MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovLAogCQkJCTUxQ0JGQzk4MEQx
MEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oICovLApAQCAtMjQwMDAs
NyArMjM5OTQsNiBAQAogCQkJCTkxQzlGMkY5MUFFM0JFQjAwMDk1QjYxQyAvKiBBWFRleHRTdGF0
ZUNoYW5nZUludGVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3NDFEMEYwQjA3MjU5QTAwRUQ0
NDJDIC8qIEJhY2tGb3J3YXJkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4QzgxRTEx
RTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
LQkJCQlCQ0E4Q0E2MDExRTRFNkQxMDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzEyNEVFODBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDYwQkI2MTYxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2NFV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTYxQ0ExMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VC
dXR0b25JbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3NzksNyArMjc3NzIsNiBAQAog
CQkJCTFBMjk5RkU3MUQ3RjVGQTYwMEE2MDA5MyAvKiBSZW5kZXJUaGVtZUNvY29hLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjlBODEyNEIwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGVN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0E4QzgxRjExRTNEMzY5MDA4MTJGQjcgLyogQmFj
a0ZvcndhcmRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDQThDQTVGMTFFNEU2
RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMx
MjRFRTcwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDYwQkI2MTUxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2NFV0aWxpdGllcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzNzlFNjFDOTEyNkNBNUMzMDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
QmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zv
cndhcmRDb250cm9sbGVyLmNwcAppbmRleCAyMzE3YWQ3MjY1OWNiY2IyYzFkODA1MmIzZGJkNTNh
ZjQyZTI1ZTFkLi4xYmM4YjVhNWY2NzJlMWNlNDhhMGI1NWVjM2Y4YzFjZDE3MzRiYjhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwCkBA
IC0yNiwxOCArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCYWNrRm9y
d2FyZENvbnRyb2xsZXIuaCIKIAotI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgotI2luY2x1
ZGUgIkhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQmFja0ZvcndhcmRDb250cm9s
bGVyOjpCYWNrRm9yd2FyZENvbnRyb2xsZXIoUGFnZSYgcGFnZSwgUmVmUHRyPEJhY2tGb3J3YXJk
Q2xpZW50PiYmIGNsaWVudCkKK0JhY2tGb3J3YXJkQ29udHJvbGxlcjo6QmFja0ZvcndhcmRDb250
cm9sbGVyKFBhZ2UmIHBhZ2UsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4mJiBjbGllbnQpCiAgICAg
OiBtX3BhZ2UocGFnZSkKICAgICAsIG1fY2xpZW50KFdURk1vdmUoY2xpZW50KSkKIHsKLSAgICBp
ZiAoIW1fY2xpZW50KQotICAgICAgICBtX2NsaWVudCA9IEJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRl
KCZwYWdlKTsKIH0KIAogQmFja0ZvcndhcmRDb250cm9sbGVyOjp+QmFja0ZvcndhcmRDb250cm9s
bGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5o
CmluZGV4IDVhMjRmOGVkZTI0NzNkM2VhOGVlNGVjMGVkNWQ4Njg5ZDhlNWNjZmYuLmUwODAxMzIz
MTEyOTAyNGFkNzJmMGZhYzc1NzNlNTY0ODEzNmNhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBQ
YWdlOwogY2xhc3MgQmFja0ZvcndhcmRDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShCYWNrRm9yd2FyZENvbnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBCYWNrRm9yd2FyZENvbnRyb2xsZXIoUGFnZSYsIFJlZlB0cjxCYWNrRm9yd2Fy
ZENsaWVudD4mJik7CisgICAgQmFja0ZvcndhcmRDb250cm9sbGVyKFBhZ2UmLCBSZWY8QmFja0Zv
cndhcmRDbGllbnQ+JiYpOwogICAgIH5CYWNrRm9yd2FyZENvbnRyb2xsZXIoKTsKIAogICAgIEJh
Y2tGb3J3YXJkQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYzNiMjcwMTdiOWJmNmUzMGFmZjE5ZWU3MGU4MGVjYTFlNGQx
ZWM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDI5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKLQotI2luY2x1ZGUgIkZyYW1l
LmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dC5oIgotI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2lu
Y2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKLSNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3Qg
dW5zaWduZWQgRGVmYXVsdENhcGFjaXR5ID0gMTAwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5v
Q3VycmVudEl0ZW1JbmRleCA9IFVJTlRfTUFYOwotCi1CYWNrRm9yd2FyZExpc3Q6OkJhY2tGb3J3
YXJkTGlzdChQYWdlKiBwYWdlKQotICAgIDogbV9wYWdlKHBhZ2UpCi0gICAgLCBtX2N1cnJlbnQo
Tm9DdXJyZW50SXRlbUluZGV4KQotICAgICwgbV9jYXBhY2l0eShEZWZhdWx0Q2FwYWNpdHkpCi0g
ICAgLCBtX2Nsb3NlZCh0cnVlKQotICAgICwgbV9lbmFibGVkKHRydWUpCi17Ci19Ci0KLUJhY2tG
b3J3YXJkTGlzdDo6fkJhY2tGb3J3YXJkTGlzdCgpCi17Ci0gICAgQVNTRVJUKG1fY2xvc2VkKTsK
LX0KLQotdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIG5l
d0l0ZW0pCi17Ci0gICAgaWYgKCFtX2NhcGFjaXR5IHx8ICFtX2VuYWJsZWQpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICAvLyBUb3NzIGFueXRoaW5nIGluIHRoZSBmb3J3YXJkIGxpc3QgICAg
Ci0gICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpIHsKLSAgICAgICAgdW5z
aWduZWQgdGFyZ2V0U2l6ZSA9IG1fY3VycmVudCArIDE7Ci0gICAgICAgIHdoaWxlIChtX2VudHJp
ZXMuc2l6ZSgpID4gdGFyZ2V0U2l6ZSkgewotICAgICAgICAgICAgUmVmPEhpc3RvcnlJdGVtPiBp
dGVtID0gbV9lbnRyaWVzLnRha2VMYXN0KCk7Ci0gICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1v
dmUoaXRlbS5wdHIoKSk7Ci0gICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92
ZShpdGVtKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRvc3MgdGhlIGZpcnN0IGl0ZW0g
aWYgdGhlIGxpc3QgaXMgZ2V0dGluZyB0b28gYmlnLCBhcyBsb25nIGFzIHdlJ3JlIG5vdCB1c2lu
ZyBpdAotICAgIC8vIChvciBldmVuIGlmIHdlIGFyZSwgaWYgd2Ugb25seSB3YW50IDEgZW50cnkp
LgotICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1fY2FwYWNpdHkgJiYgKG1fY3VycmVudCB8
fCBtX2NhcGFjaXR5ID09IDEpKSB7Ci0gICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gaXRlbSA9IFdU
Rk1vdmUobV9lbnRyaWVzWzBdKTsKLSAgICAgICAgbV9lbnRyaWVzLnJlbW92ZSgwKTsKLSAgICAg
ICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0ucHRyKCkpOwotICAgICAgICBQYWdlQ2FjaGU6OnNp
bmdsZXRvbigpLnJlbW92ZShpdGVtKTsKLSAgICAgICAgLS1tX2N1cnJlbnQ7Ci0gICAgfQotCi0g
ICAgbV9lbnRyeUhhc2guYWRkKG5ld0l0ZW0ucHRyKCkpOwotICAgIG1fZW50cmllcy5pbnNlcnQo
bV9jdXJyZW50ICsgMSwgV1RGTW92ZShuZXdJdGVtKSk7Ci0gICAgKyttX2N1cnJlbnQ7Ci19Ci0K
LXZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb0JhY2soKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQg
PiAwKTsKLSAgICBpZiAobV9jdXJyZW50ID4gMCkgewotICAgICAgICBtX2N1cnJlbnQtLTsKLSAg
ICB9Ci19Ci0KLXZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb0ZvcndhcmQoKQotewotICAgIEFTU0VS
VChtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSk7Ci0gICAgaWYgKG1fY3VycmVudCA8
IG1fZW50cmllcy5zaXplKCkgLSAxKSB7Ci0gICAgICAgIG1fY3VycmVudCsrOwotICAgIH0KLX0K
LQotdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQotewot
ICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSB8fCAhaXRlbSkKLSAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKLSAgICB1bnNpZ25lZCBpbnQgaW5kZXggPSAwOwotICAgIGZvciAoOyBpbmRleCA8IG1f
ZW50cmllcy5zaXplKCk7ICsraW5kZXgpCi0gICAgICAgIGlmIChtX2VudHJpZXNbaW5kZXhdLnB0
cigpID09IGl0ZW0pCi0gICAgICAgICAgICBicmVhazsKLSAgICBpZiAoaW5kZXggPCBtX2VudHJp
ZXMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fY3VycmVudCA9IGluZGV4OwotICAgIH0KLX0KLQotSGlz
dG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6YmFja0l0ZW0oKQotewotICAgIGlmIChtX2N1cnJl
bnQgJiYgbV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkKLSAgICAgICAgcmV0dXJuIG1f
ZW50cmllc1ttX2N1cnJlbnQgLSAxXS5wdHIoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQot
SGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Y3VycmVudEl0ZW0oKQotewotICAgIGlmICht
X2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KQotICAgICAgICByZXR1cm4gbV9lbnRyaWVz
W21fY3VycmVudF0ucHRyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUhpc3RvcnlJdGVt
KiBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVtKCkKLXsKLSAgICBpZiAobV9lbnRyaWVzLnNp
emUoKSAmJiBtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSkKLSAgICAgICAgcmV0dXJu
IG1fZW50cmllc1ttX2N1cnJlbnQgKyAxXS5wdHIoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0K
LQotdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0V2l0aExpbWl0KGludCBsaW1pdCwgVmVj
dG9yPFJlZjxIaXN0b3J5SXRlbT4+JiBsaXN0KQotewotICAgIGxpc3QuY2xlYXIoKTsKLSAgICBp
ZiAobV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkgewotICAgICAgICB1bnNpZ25lZCBm
aXJzdCA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSAtIGxpbWl0LCAwKTsK
LSAgICAgICAgZm9yICg7IGZpcnN0IDwgbV9jdXJyZW50OyArK2ZpcnN0KQotICAgICAgICAgICAg
bGlzdC5hcHBlbmQobV9lbnRyaWVzW2ZpcnN0XS5nZXQoKSk7Ci0gICAgfQotfQotCi12b2lkIEJh
Y2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBWZWN0b3I8UmVm
PEhpc3RvcnlJdGVtPj4mIGxpc3QpCi17Ci0gICAgQVNTRVJUKGxpbWl0ID4gLTEpOwotICAgIGxp
c3QuY2xlYXIoKTsKLSAgICBpZiAoIW1fZW50cmllcy5zaXplKCkpCi0gICAgICAgIHJldHVybjsK
LSAgICAgICAgCi0gICAgdW5zaWduZWQgbGFzdEVudHJ5ID0gbV9lbnRyaWVzLnNpemUoKSAtIDE7
Ci0gICAgaWYgKG1fY3VycmVudCA8IGxhc3RFbnRyeSkgewotICAgICAgICBpbnQgbGFzdCA9IHN0
ZDo6bWluKG1fY3VycmVudCArIGxpbWl0LCBsYXN0RW50cnkpOwotICAgICAgICBsaW1pdCA9IG1f
Y3VycmVudCArIDE7Ci0gICAgICAgIGZvciAoOyBsaW1pdCA8PSBsYXN0OyArK2xpbWl0KQotICAg
ICAgICAgICAgbGlzdC5hcHBlbmQobV9lbnRyaWVzW2xpbWl0XS5nZXQoKSk7Ci0gICAgfQotfQot
Ci1pbnQgQmFja0ZvcndhcmRMaXN0OjpjYXBhY2l0eSgpCi17Ci0gICAgcmV0dXJuIG1fY2FwYWNp
dHk7Ci19Ci0KLXZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRDYXBhY2l0eShpbnQgc2l6ZSkKLXsg
ICAgCi0gICAgd2hpbGUgKHNpemUgPCBzdGF0aWNfY2FzdDxpbnQ+KG1fZW50cmllcy5zaXplKCkp
KSB7Ci0gICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy50YWtlTGFzdCgp
OwotICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7Ci0gICAgICAgIFBhZ2VD
YWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOwotICAgIH0KLQotICAgIGlmICghc2l6ZSkK
LSAgICAgICAgbV9jdXJyZW50ID0gTm9DdXJyZW50SXRlbUluZGV4OwotICAgIGVsc2UgaWYgKG1f
Y3VycmVudCA+IG1fZW50cmllcy5zaXplKCkgLSAxKSB7Ci0gICAgICAgIG1fY3VycmVudCA9IG1f
ZW50cmllcy5zaXplKCkgLSAxOwotICAgIH0KLSAgICBtX2NhcGFjaXR5ID0gc2l6ZTsKLX0KLQot
Ym9vbCBCYWNrRm9yd2FyZExpc3Q6OmVuYWJsZWQoKQotewotICAgIHJldHVybiBtX2VuYWJsZWQ7
Ci19Ci0KLXZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsK
LSAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwotICAgIGlmICghZW5hYmxlZCkgewotICAgICAgICBp
bnQgY2FwYWNpdHkgPSBtX2NhcGFjaXR5OwotICAgICAgICBzZXRDYXBhY2l0eSgwKTsKLSAgICAg
ICAgc2V0Q2FwYWNpdHkoY2FwYWNpdHkpOwotICAgIH0KLX0KLQotaW50IEJhY2tGb3J3YXJkTGlz
dDo6YmFja0xpc3RDb3VudCgpCi17Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBOb0N1cnJlbnRJ
dGVtSW5kZXggPyAwIDogbV9jdXJyZW50OwotfQotCi1pbnQgQmFja0ZvcndhcmRMaXN0Ojpmb3J3
YXJkTGlzdENvdW50KCkKLXsKLSAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1J
bmRleCA/IDAgOiAoaW50KW1fZW50cmllcy5zaXplKCkgLSAobV9jdXJyZW50ICsgMSk7Ci19Ci0K
LUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkKLXsK
LSAgICAvLyBEbyByYW5nZSBjaGVja3Mgd2l0aG91dCBkb2luZyBtYXRoIG9uIGluZGV4IHRvIGF2
b2lkIG92ZXJmbG93LgotICAgIGlmIChpbmRleCA8IC1zdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVu
dCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIGlmIChpbmRleCA+IGZvcndh
cmRMaXN0Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAotICAgIHJl
dHVybiBtX2VudHJpZXNbaW5kZXggKyBtX2N1cnJlbnRdLnB0cigpOwotfQotCi1WZWN0b3I8UmVm
PEhpc3RvcnlJdGVtPj4mIEJhY2tGb3J3YXJkTGlzdDo6ZW50cmllcygpCi17Ci0gICAgcmV0dXJu
IG1fZW50cmllczsKLX0KLQotI2lmIFBMQVRGT1JNKElPUykKLXVuc2lnbmVkIEJhY2tGb3J3YXJk
TGlzdDo6Y3VycmVudCgpCi17Ci0gICAgcmV0dXJuIG1fY3VycmVudDsKLX0KLQotdm9pZCBCYWNr
Rm9yd2FyZExpc3Q6OnNldEN1cnJlbnQodW5zaWduZWQgbmV3Q3VycmVudCkKLXsKLSAgICBtX2N1
cnJlbnQgPSBuZXdDdXJyZW50OwotfQotCi1ib29sIEJhY2tGb3J3YXJkTGlzdDo6Y2xlYXJBbGxQ
YWdlQ2FjaGVzKCkKLXsKLSAgICBib29sIGRpZFJlbW92ZUF0TGVhc3RPbmVJdGVtID0gZmFsc2U7
Ci0gICAgZm9yIChhdXRvJiBpdGVtIDogbV9lbnRyaWVzKSB7Ci0gICAgICAgIGlmIChpdGVtLT5p
c0luUGFnZUNhY2hlKCkpIHsKLSAgICAgICAgICAgIGRpZFJlbW92ZUF0TGVhc3RPbmVJdGVtID0g
dHJ1ZTsKLSAgICAgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBkaWRSZW1vdmVBdExlYXN0T25lSXRlbTsKLX0K
LSNlbmRpZgotCi12b2lkIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2UoKQotewotICAgIGZvciAoYXV0
byYgaXRlbSA6IG1fZW50cmllcykKLSAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1v
dmUoaXRlbSk7Ci0gICAgbV9lbnRyaWVzLmNsZWFyKCk7Ci0gICAgbV9lbnRyeUhhc2guY2xlYXIo
KTsKLSAgICBtX3BhZ2UgPSBudWxscHRyOwotICAgIG1fY2xvc2VkID0gdHJ1ZTsKLX0KLQotYm9v
bCBCYWNrRm9yd2FyZExpc3Q6OmNsb3NlZCgpCi17Ci0gICAgcmV0dXJuIG1fY2xvc2VkOwotfQot
Ci12b2lkIEJhY2tGb3J3YXJkTGlzdDo6cmVtb3ZlSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKLXsK
LSAgICBpZiAoIWl0ZW0pCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9lbnRyaWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2VudHJp
ZXNbaV0ucHRyKCkgPT0gaXRlbSkgewotICAgICAgICAgICAgbV9lbnRyaWVzLnJlbW92ZShpKTsK
LSAgICAgICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAgICAgICAgIGlmICht
X2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4IHx8IG1fY3VycmVudCA8IGkpCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAobV9jdXJyZW50ID4gaSkKLSAgICAgICAg
ICAgICAgICBtX2N1cnJlbnQtLTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IHNpemVfdCBjb3VudCA9IG1fZW50cmllcy5zaXplKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1f
Y3VycmVudCA+PSBjb3VudCkKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gY291bnQg
PyBjb3VudCAtIDEgOiBOb0N1cnJlbnRJdGVtSW5kZXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLX0KLQotYm9vbCBCYWNrRm9yd2FyZExpc3Q6
OmNvbnRhaW5zSXRlbShIaXN0b3J5SXRlbSogZW50cnkpCi17Ci0gICAgcmV0dXJuIG1fZW50cnlI
YXNoLmNvbnRhaW5zKGVudHJ5KTsKLX0KLQotfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1N2M0NGFiZDhjODBkNTE4NDliNzI1OGY5ODhlOWVkMTk3ODAyM2MzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBCYWNrRm9yd2FyZExpc3RfaAot
I2RlZmluZSBCYWNrRm9yd2FyZExpc3RfaAotCi0jaW5jbHVkZSAiQmFja0ZvcndhcmRDbGllbnQu
aCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQYWdlOwotCi10eXBlZGVmIEhhc2hTZXQ8UmVm
UHRyPEhpc3RvcnlJdGVtPj4gSGlzdG9yeUl0ZW1IYXNoU2V0OwotCi1jbGFzcyBCYWNrRm9yd2Fy
ZExpc3QgOiBwdWJsaWMgQmFja0ZvcndhcmRDbGllbnQgewotcHVibGljOiAKLSAgICBzdGF0aWMg
UmVmPEJhY2tGb3J3YXJkTGlzdD4gY3JlYXRlKFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQmFja0ZvcndhcmRMaXN0KHBhZ2UpKTsgfQotICAgIHZpcnR1YWwgfkJhY2tGb3J3YXJk
TGlzdCgpOwotCi0gICAgUGFnZSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQotCi0gICAgdm9p
ZCBhZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnb0JhY2soKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdvRm9yd2FyZCgpOwot
ICAgIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKLSAgICAgICAgCi0gICAg
V0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0qIGJhY2tJdGVtKCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgSGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9y
eUl0ZW0qIGZvcndhcmRJdGVtKCk7Ci0gICAgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGludCkg
b3ZlcnJpZGU7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJhY2tMaXN0V2l0aExpbWl0KGlu
dCwgVmVjdG9yPFJlZjxIaXN0b3J5SXRlbT4+Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
b3J3YXJkTGlzdFdpdGhMaW1pdChpbnQsIFZlY3RvcjxSZWY8SGlzdG9yeUl0ZW0+PiYpOwotCi0g
ICAgV0VCQ09SRV9FWFBPUlQgaW50IGNhcGFjaXR5KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDYXBhY2l0eShpbnQpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZW5hYmxlZCgpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RW5hYmxlZChib29sKTsKLSAgICBpbnQgYmFja0xp
c3RDb3VudCgpIG92ZXJyaWRlOwotICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc0l0ZW0oSGlzdG9yeUl0ZW0qKTsKLQot
ICAgIHZvaWQgY2xvc2UoKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNsb3Nl
ZCgpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVJdGVtKEhpc3RvcnlJdGVtKik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlZjxIaXN0b3J5SXRlbT4+JiBlbnRyaWVzKCk7
Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgdW5zaWduZWQgY3VycmVudCgpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2V0Q3VycmVudCh1bnNpZ25lZCBuZXdDdXJyZW50KSBvdmVycmlkZTsKLQotICAg
IGJvb2wgY2xlYXJBbGxQYWdlQ2FjaGVzKCkgb3ZlcnJpZGU7Ci0jZW5kaWYKLQotcHJpdmF0ZToK
LSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBCYWNrRm9yd2FyZExpc3QoUGFnZSopOwotCi0g
ICAgUGFnZSogbV9wYWdlOwotICAgIFZlY3RvcjxSZWY8SGlzdG9yeUl0ZW0+PiBtX2VudHJpZXM7
Ci0gICAgSGlzdG9yeUl0ZW1IYXNoU2V0IG1fZW50cnlIYXNoOwotICAgIHVuc2lnbmVkIG1fY3Vy
cmVudDsKLSAgICB1bnNpZ25lZCBtX2NhcGFjaXR5OwotICAgIGJvb2wgbV9jbG9zZWQ7Ci0gICAg
Ym9vbCBtX2VuYWJsZWQ7Ci19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gQmFja0ZvcndhcmRMaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAKaW5kZXggMGU0ZmJlOTY3MjY0YWJiYzc4NTlmNzE1MjYzNjQ3NDE5YzM0ZDU0OS4uZTRlMzVk
OWRjNjNlNjRjMGE4MDkyZWI1NTBlM2RmMzc2YWU3ZjFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFbXB0eUNsaWVu
dHMuaCIKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCisjaW5jbHVkZSAi
QmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKICNpbmNsdWRl
ICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVByb3ZpZGVyLmgiCkBAIC0x
NDAsNiArMTQxLDIxIEBAIGNsYXNzIEVtcHR5VmlzaXRlZExpbmtTdG9yZSBmaW5hbCA6IHB1Ymxp
YyBWaXNpdGVkTGlua1N0b3JlIHsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKFBhZ2UmLCBMaW5r
SGFzaCkgb3ZlcnJpZGUgeyB9CiB9OwogCitjbGFzcyBFbXB0eUJhY2tGb3J3YXJkQ2xpZW50IGZp
bmFsIDogcHVibGljIEJhY2tGb3J3YXJkQ2xpZW50IHsKKyAgICB2b2lkIGFkZEl0ZW0oUmVmPEhp
c3RvcnlJdGVtPiYmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVt
Kikgb3ZlcnJpZGUgeyB9CisgICAgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGludCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIGludCBiYWNrTGlzdENvdW50KCkgb3ZlcnJpZGUg
eyByZXR1cm4gMDsgfQorICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgb3ZlcnJpZGUgeyByZXR1
cm4gMDsgfQorICAgIHZvaWQgY2xvc2UoKSBvdmVycmlkZSB7IH0KKworI2lmIFBMQVRGT1JNKElP
UykKKyAgICB1bnNpZ25lZCBjdXJyZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIHZv
aWQgc2V0Q3VycmVudCh1bnNpZ25lZCBuZXdDdXJyZW50KSBvdmVycmlkZSB7IH0KKyAgICBib29s
IGNsZWFyQWxsUGFnZUNhY2hlcygpIG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYK
K307CisKIHZvaWQgZmlsbFdpdGhFbXB0eUNsaWVudHMoUGFnZUNvbmZpZ3VyYXRpb24mIHBhZ2VD
b25maWd1cmF0aW9uKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxFbXB0eUNocm9tZUNs
aWVudD4gZHVtbXlDaHJvbWVDbGllbnQ7CkBAIC0xNjksNiArMTg1LDcgQEAgdm9pZCBmaWxsV2l0
aEVtcHR5Q2xpZW50cyhQYWdlQ29uZmlndXJhdGlvbiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPEVtcHR5UHJvZ3Jlc3NUcmFja2VyQ2xpZW50PiBkdW1teVBy
b2dyZXNzVHJhY2tlckNsaWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNr
ZXJDbGllbnQgPSAmZHVtbXlQcm9ncmVzc1RyYWNrZXJDbGllbnQuZ2V0KCk7CiAKKyAgICBwYWdl
Q29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCA9IGFkb3B0UmVmKG5ldyBFbXB0eUJhY2tG
b3J3YXJkQ2xpZW50KTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5kaWFnbm9zdGljTG9nZ2luZ0Ns
aWVudCA9IHN0ZDo6bWFrZV91bmlxdWU8RW1wdHlEaWFnbm9zdGljTG9nZ2luZ0NsaWVudD4oKTsK
IAogICAgIHBhZ2VDb25maWd1cmF0aW9uLmFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlID0gQXBwbGlj
YXRpb25DYWNoZVN0b3JhZ2U6OmNyZWF0ZShTdHJpbmcoKSwgU3RyaW5nKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKaW5kZXggYjE0MGEzOTc4MThmYzA1OWQwM2I0NzBkZGI4MDEyODdmMzIyMDE5OS4uN2Zh
ZWMxNDQ5YTVmMDk0ZjAwZjhhMzkyYTI4MmYxMWRkMTYwMDNkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CkBAIC0xNzgsNyArMTc4LDcgQEAgUGFnZTo6UGFnZShQYWdlQ29uZmlndXJhdGlvbiYmIHBhZ2VD
b25maWd1cmF0aW9uKQogI2VuZGlmCiAgICAgLCBtX3NldHRpbmdzKFNldHRpbmdzOjpjcmVhdGUo
dGhpcykpCiAgICAgLCBtX3Byb2dyZXNzKHN0ZDo6bWFrZV91bmlxdWU8UHJvZ3Jlc3NUcmFja2Vy
PigqcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50KSkKLSAgICAsIG1fYmFj
a0ZvcndhcmRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVy
PigqdGhpcywgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2FyZENsaWVudCkpKQor
ICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIoc3RkOjptYWtlX3VuaXF1ZTxCYWNrRm9yd2Fy
ZENvbnRyb2xsZXI+KCp0aGlzLCAqV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbi5iYWNrRm9yd2Fy
ZENsaWVudCkpKQogICAgICwgbV9tYWluRnJhbWUoTWFpbkZyYW1lOjpjcmVhdGUoKnRoaXMsIHBh
Z2VDb25maWd1cmF0aW9uKSkKICAgICAsIG1fdGhlbWUoUmVuZGVyVGhlbWU6OnRoZW1lRm9yUGFn
ZSh0aGlzKSkKICAgICAsIG1fZWRpdG9yQ2xpZW50KFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24u
ZWRpdG9yQ2xpZW50KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDIyMmFlN2IzNTE2MTlkZWYxMGIzZmQ2YjhiZDA4YmJjN2NkODlmZDgu
LjY2NDc3MjVhY2RiZTNjYmE5NjdhYzQ5YWRjMWUzMDdhNzRjOWMyZjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTUsNiArNTUsOCBA
QAogCQkxQTg2Q0NENDFBRDQ4QTYyMDA3NEJBODkgLyogV2ViQXBwbGljYXRpb25DYWNoZUludGVy
bmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTg2
Q0NEMzFBRDQ4QTYyMDA3NEJBODkgLyogV2ViQXBwbGljYXRpb25DYWNoZUludGVybmFsLmggKi87
IH07CiAJCTFBOERFRDUwMEVFODhCOEEwMEYyNTAyMiAvKiBIb3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4
REVENEUwRUU4OEI4QTAwRjI1MDIyIC8qIEhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLmggKi87
IH07CiAJCTFBOERFRDUxMEVFODhCOEEwMEYyNTAyMiAvKiBIb3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
OERFRDRGMEVFODhCOEEwMEYyNTAyMiAvKiBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbSAq
LzsgfTsKKwkJMUE5MTE5RjYxREIwNDcwQTAwODdEMUZEIC8qIEJhY2tGb3J3YXJkTGlzdC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTExOUY0MURC
MDQ3MEEwMDg3RDFGRCAvKiBCYWNrRm9yd2FyZExpc3QubW0gKi87IH07CisJCTFBOTExOUY3MURC
MDQ3MEEwMDg3RDFGRCAvKiBCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOTExOUY1MURCMDQ3MEEwMDg3RDFGRCAvKiBCYWNr
Rm9yd2FyZExpc3QuaCAqLzsgfTsKIAkJMUFBODNGODMxQTVDNEFFNDAwMDI2RUM2IC8qIFdlYkRh
dGFiYXNlUHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUFBODNGODExQTVDNEFFNDAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIu
Y3BwICovOyB9OwogCQkxQUE4M0Y4NDFBNUM0QUU0MDAwMjZFQzYgLyogV2ViRGF0YWJhc2VQcm92
aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFB
ODNGODIxQTVDNEFFNDAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuaCAqLzsgfTsKIAkJ
MUFBODc5QjYxMUNCRTlCRjAwM0M2NjRGIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFBODc5QjQxMUNCRTlC
RjAwM0M2NjRGIC8qIFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5oICovOyB9OwpAQCAtODQ5LDYgKzg1
MSw4IEBACiAJCTFBODZDQ0QzMUFENDhBNjIwMDc0QkE4OSAvKiBXZWJBcHBsaWNhdGlvbkNhY2hl
SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQXBwbGljYXRp
b25DYWNoZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBOERFRDRF
MEVFODhCOEEwMEYyNTAyMiAvKiBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQThERUQ0RjBFRTg4QjhBMDBGMjUwMjIgLyog
SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMUE5MTE5RjQxREIwNDcwQTAwODdEMUZEIC8qIEJhY2tGb3J3YXJk
TGlzdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJhY2tGb3J3
YXJkTGlzdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMUE5MTE5RjUxREIwNDcw
QTAwODdEMUZEIC8qIEJhY2tGb3J3YXJkTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBCYWNrRm9yd2FyZExpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MUFBODNGODExQTVDNEFFNDAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViRGF0YWJhc2VQcm92aWRlci5jcHA7
IHBhdGggPSAuLi8uLi9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkxQUE4M0Y4MjFBNUM0QUU0MDAwMjZFQzYgLyogV2ViRGF0YWJh
c2VQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJEYXRhYmFz
ZVByb3ZpZGVyLmg7IHBhdGggPSAuLi8uLi9TdG9yYWdlL1dlYkRhdGFiYXNlUHJvdmlkZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUFBODc5QjQxMUNCRTlCRjAwM0M2NjRGIC8q
IFdlYlBsYXRmb3JtU3RyYXRlZ2llcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE4NDgsNiArMTg1Miw4IEBACiAJCTI1QTgxNzY4MDFCNTQ3NEIwRUNBMTQ5RSAvKiBIaXN0b3J5
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkxQTkxMTlG
NDFEQjA0NzBBMDA4N0QxRkQgLyogQmFja0ZvcndhcmRMaXN0Lm1tICovLAorCQkJCTFBOTExOUY1
MURCMDQ3MEEwMDg3RDFGRCAvKiBCYWNrRm9yd2FyZExpc3QuaCAqLywKIAkJCQkxQTYwNTE4RDE3
NTAyQTVEMDBCQzYyRjUgLyogQmluYXJ5UHJvcGVydHlMaXN0LmNwcCAqLywKIAkJCQkxQTYwNTE4
RTE3NTAyQTVEMDBCQzYyRjUgLyogQmluYXJ5UHJvcGVydHlMaXN0LmggKi8sCiAJCQkJMUE2MDUx
OTAxNzUwMkE1RDAwQkM2MkY1IC8qIEhpc3RvcnlQcm9wZXJ0eUxpc3QuaCAqLywKQEAgLTI4OTUs
NiArMjkwMSw3IEBACiAJCQkJOTNENDM3NjUxRDU3QUJFRjAwQUI4NUVBIC8qIERPTVByb2Nlc3Np
bmdJbnN0cnVjdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q0Mzc2NjFENTdB
QkVGMDBBQjg1RUEgLyogRE9NUHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNE
NDM3NjgxRDU3QUJFRjAwQUI4NUVBIC8qIERPTVJhbmdlLmggaW4gSGVhZGVycyAqLywKKwkJCQkx
QTkxMTlGNzFEQjA0NzBBMDA4N0QxRkQgLyogQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0Q0Mzc2QTFENTdBQkVGMDBBQjg1RUEgLyogRE9NUmFuZ2VFeGNlcHRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTkzRDQzNzZCMUQ1N0FCRUYwMEFCODVFQSAvKiBET01SYW5nZUlu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Q0Mzc2QzFENTdBQkVGMDBBQjg1RUEgLyog
RE9NUmFuZ2VzLmggaW4gSGVhZGVycyAqLywKQEAgLTM1MzksNiArMzU0Niw3IEBACiAJCQkJQ0VE
QTEyREIxNTJDQkU2ODAwRDlFMDhEIC8qIFdlYkFsdGVybmF0aXZlVGV4dENsaWVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUI2Q0U1QzI0MTAwQkM1Q0UwMDIxOTkzNiAvKiBXZWJBcHBsaWNhdGlv
bkNhY2hlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVERUZDMTQxMUQ1MzQ0QjAwODg1MjczIC8q
IFdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQkx
QTkxMTlGNjFEQjA0NzBBMDA4N0QxRkQgLyogQmFja0ZvcndhcmRMaXN0Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTM5ODExMUQwODI0QkYwMTAwOERGMDM4IC8qIFdlYkFyY2hpdmUubW0gaW4gU291
cmNlcyAqLywKIAkJCQk5Mzk4MTBDRjA4MjRCRjAxMDA4REYwMzggLyogV2ViQXV0aGVudGljYXRp
b25QYW5lbC5tIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5ODEwQkMwODI0QkYwMTAwOERGMDM4IC8q
IFdlYkJhY2tGb3J3YXJkTGlzdC5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaCBiL1NvdXJjZS9XZWJLaXQvbWFj
L0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmQxM2VmM2M0MjljOTMxNTk2
NGFiNmY5YzBiMGRkOTMzYTczNDFkZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwNiwgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViQ29yZS9C
YWNrRm9yd2FyZENsaWVudC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorCitPQkpDX0NMQVNTIFdlYlZpZXc7CisKK3R5cGVkZWYgSGFzaFNldDxS
ZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+PiBIaXN0b3J5SXRlbUhhc2hTZXQ7CisKK2NsYXNz
IEJhY2tGb3J3YXJkTGlzdCA6IHB1YmxpYyBXZWJDb3JlOjpCYWNrRm9yd2FyZENsaWVudCB7Citw
dWJsaWM6IAorICAgIHN0YXRpYyBSZWY8QmFja0ZvcndhcmRMaXN0PiBjcmVhdGUoV2ViVmlldyAq
d2ViVmlldykgeyByZXR1cm4gYWRvcHRSZWYoKm5ldyBCYWNrRm9yd2FyZExpc3Qod2ViVmlldykp
OyB9CisgICAgdmlydHVhbCB+QmFja0ZvcndhcmRMaXN0KCk7CisKKyAgICBXZWJWaWV3ICp3ZWJW
aWV3KCkgeyByZXR1cm4gbV93ZWJWaWV3OyB9CisKKyAgICB2b2lkIGFkZEl0ZW0oUmVmPFdlYkNv
cmU6Okhpc3RvcnlJdGVtPiYmKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdv
QmFjaygpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZ29Gb3J3YXJkKCk7CisgICAgdm9pZCBn
b1RvSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopIG92ZXJyaWRlOworICAgICAgICAKKyAgICBX
RUJDT1JFX0VYUE9SVCBXZWJDb3JlOjpIaXN0b3J5SXRlbSogYmFja0l0ZW0oKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBXZWJDb3JlOjpIaXN0b3J5SXRlbSogY3VycmVudEl0ZW0oKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBXZWJDb3JlOjpIaXN0b3J5SXRlbSogZm9yd2FyZEl0ZW0oKTsKKyAgICBXZWJD
b3JlOjpIaXN0b3J5SXRlbSogaXRlbUF0SW5kZXgoaW50KSBvdmVycmlkZTsKKworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgYmFja0xpc3RXaXRoTGltaXQoaW50LCBWZWN0b3I8UmVmPFdlYkNvcmU6
Okhpc3RvcnlJdGVtPj4mKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvcndhcmRMaXN0V2l0
aExpbWl0KGludCwgVmVjdG9yPFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4+Jik7CisKKyAgICBX
RUJDT1JFX0VYUE9SVCBpbnQgY2FwYWNpdHkoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dENhcGFjaXR5KGludCk7CisgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBlbmFibGVkKCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRFbmFibGVkKGJvb2wpOworICAgIGludCBiYWNrTGlzdENv
dW50KCkgb3ZlcnJpZGU7CisgICAgaW50IGZvcndhcmRMaXN0Q291bnQoKSBvdmVycmlkZTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBib29sIGNvbnRhaW5zSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSop
OworCisgICAgdm9pZCBjbG9zZSgpIG92ZXJyaWRlOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wg
Y2xvc2VkKCk7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbW92ZUl0ZW0oV2ViQ29yZTo6
SGlzdG9yeUl0ZW0qKTsKKyAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8UmVmPFdlYkNvcmU6Okhp
c3RvcnlJdGVtPj4mIGVudHJpZXMoKTsKKworI2lmIFBMQVRGT1JNKElPUykKKyAgICB1bnNpZ25l
ZCBjdXJyZW50KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRDdXJyZW50KHVuc2lnbmVkIG5ld0N1
cnJlbnQpIG92ZXJyaWRlOworCisgICAgYm9vbCBjbGVhckFsbFBhZ2VDYWNoZXMoKSBvdmVycmlk
ZTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIFdFQkNPUkVfRVhQT1JUIGV4cGxpY2l0IEJhY2tG
b3J3YXJkTGlzdChXZWJWaWV3ICopOworCisgICAgV2ViVmlldyogbV93ZWJWaWV3OworICAgIFZl
Y3RvcjxSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+PiBtX2VudHJpZXM7CisgICAgSGlzdG9yeUl0
ZW1IYXNoU2V0IG1fZW50cnlIYXNoOworICAgIHVuc2lnbmVkIG1fY3VycmVudDsKKyAgICB1bnNp
Z25lZCBtX2NhcGFjaXR5OworICAgIGJvb2wgbV9jbG9zZWQ7CisgICAgYm9vbCBtX2VuYWJsZWQ7
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9CYWNrRm9yd2FyZExp
c3QubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5tbQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi41NGM4ODE4NTJiOGIwODU5ZWMxODZhMjY3OTM3M2RlNjkzNWU2ODgzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QubW0K
QEAgLTAsMCArMSwyODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBUb3JjaCBN
b2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5j
b20vKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgorCisjaW5jbHVkZSA8
V2ViQ29yZS9QYWdlQ2FjaGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRp
YyBjb25zdCB1bnNpZ25lZCBEZWZhdWx0Q2FwYWNpdHkgPSAxMDA7CitzdGF0aWMgY29uc3QgdW5z
aWduZWQgTm9DdXJyZW50SXRlbUluZGV4ID0gVUlOVF9NQVg7CisKK0JhY2tGb3J3YXJkTGlzdDo6
QmFja0ZvcndhcmRMaXN0KFdlYlZpZXcgKndlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmll
dykKKyAgICAsIG1fY3VycmVudChOb0N1cnJlbnRJdGVtSW5kZXgpCisgICAgLCBtX2NhcGFjaXR5
KERlZmF1bHRDYXBhY2l0eSkKKyAgICAsIG1fY2xvc2VkKHRydWUpCisgICAgLCBtX2VuYWJsZWQo
dHJ1ZSkKK3sKK30KKworQmFja0ZvcndhcmRMaXN0Ojp+QmFja0ZvcndhcmRMaXN0KCkKK3sKKyAg
ICBBU1NFUlQobV9jbG9zZWQpOworfQorCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6YWRkSXRlbShS
ZWY8SGlzdG9yeUl0ZW0+JiYgbmV3SXRlbSkKK3sKKyAgICBpZiAoIW1fY2FwYWNpdHkgfHwgIW1f
ZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIC8vIFRvc3MgYW55dGhpbmcgaW4g
dGhlIGZvcndhcmQgbGlzdCAgICAKKyAgICBpZiAobV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1J
bmRleCkgeworICAgICAgICB1bnNpZ25lZCB0YXJnZXRTaXplID0gbV9jdXJyZW50ICsgMTsKKyAg
ICAgICAgd2hpbGUgKG1fZW50cmllcy5zaXplKCkgPiB0YXJnZXRTaXplKSB7CisgICAgICAgICAg
ICBSZWY8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBtX2VudHJpZXMudGFrZUxhc3QoKTsKKyAgICAgICAg
ICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtLnB0cigpKTsKKyAgICAgICAgICAgIFBhZ2VDYWNo
ZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOworICAgICAgICB9CisgICAgfQorCisgICAgLy8g
VG9zcyB0aGUgZmlyc3QgaXRlbSBpZiB0aGUgbGlzdCBpcyBnZXR0aW5nIHRvbyBiaWcsIGFzIGxv
bmcgYXMgd2UncmUgbm90IHVzaW5nIGl0CisgICAgLy8gKG9yIGV2ZW4gaWYgd2UgYXJlLCBpZiB3
ZSBvbmx5IHdhbnQgMSBlbnRyeSkuCisgICAgaWYgKG1fZW50cmllcy5zaXplKCkgPT0gbV9jYXBh
Y2l0eSAmJiAobV9jdXJyZW50IHx8IG1fY2FwYWNpdHkgPT0gMSkpIHsKKyAgICAgICAgUmVmPEhp
c3RvcnlJdGVtPiBpdGVtID0gV1RGTW92ZShtX2VudHJpZXNbMF0pOworICAgICAgICBtX2VudHJp
ZXMucmVtb3ZlKDApOworICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7Cisg
ICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOworICAgICAgICAtLW1f
Y3VycmVudDsKKyAgICB9CisKKyAgICBtX2VudHJ5SGFzaC5hZGQobmV3SXRlbS5wdHIoKSk7Cisg
ICAgbV9lbnRyaWVzLmluc2VydChtX2N1cnJlbnQgKyAxLCBXVEZNb3ZlKG5ld0l0ZW0pKTsKKyAg
ICArK21fY3VycmVudDsKK30KKwordm9pZCBCYWNrRm9yd2FyZExpc3Q6OmdvQmFjaygpCit7Cisg
ICAgQVNTRVJUKG1fY3VycmVudCA+IDApOworICAgIGlmIChtX2N1cnJlbnQgPiAwKQorICAgICAg
ICBtX2N1cnJlbnQtLTsKK30KKwordm9pZCBCYWNrRm9yd2FyZExpc3Q6OmdvRm9yd2FyZCgpCit7
CisgICAgQVNTRVJUKG1fY3VycmVudCA8IG1fZW50cmllcy5zaXplKCkgLSAxKTsKKyAgICBpZiAo
bV9jdXJyZW50IDwgbV9lbnRyaWVzLnNpemUoKSAtIDEpCisgICAgICAgIG1fY3VycmVudCsrOwor
fQorCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Z29Ub0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCit7
CisgICAgaWYgKCFtX2VudHJpZXMuc2l6ZSgpIHx8ICFpdGVtKQorICAgICAgICByZXR1cm47Cisg
ICAgICAgIAorICAgIHVuc2lnbmVkIGludCBpbmRleCA9IDA7CisgICAgZm9yICg7IGluZGV4IDwg
bV9lbnRyaWVzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAobV9lbnRyaWVzW2luZGV4
XS5wdHIoKSA9PSBpdGVtKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKGlu
ZGV4IDwgbV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgbV9jdXJyZW50ID0gaW5kZXg7Cit9CisK
K0hpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6OmJhY2tJdGVtKCkKK3sKKyAgICBpZiAobV9j
dXJyZW50ICYmIG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpCisgICAgICAgIHJldHVy
biBtX2VudHJpZXNbbV9jdXJyZW50IC0gMV0ucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9
CisKK0hpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnRJdGVtKCkKK3sKKyAgICBp
ZiAobV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkKKyAgICAgICAgcmV0dXJuIG1fZW50
cmllc1ttX2N1cnJlbnRdLnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQorCitIaXN0b3J5
SXRlbSogQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkSXRlbSgpCit7CisgICAgaWYgKG1fZW50cmll
cy5zaXplKCkgJiYgbV9jdXJyZW50IDwgbV9lbnRyaWVzLnNpemUoKSAtIDEpCisgICAgICAgIHJl
dHVybiBtX2VudHJpZXNbbV9jdXJyZW50ICsgMV0ucHRyKCk7CisgICAgcmV0dXJuIG51bGxwdHI7
Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdFdpdGhMaW1pdChpbnQgbGltaXQs
IFZlY3RvcjxSZWY8SGlzdG9yeUl0ZW0+PiYgbGlzdCkKK3sKKyAgICBsaXN0LmNsZWFyKCk7Cisg
ICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpIHsKKyAgICAgICAgdW5zaWdu
ZWQgZmlyc3QgPSBzdGQ6Om1heChzdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudCkgLSBsaW1pdCwg
MCk7CisgICAgICAgIGZvciAoOyBmaXJzdCA8IG1fY3VycmVudDsgKytmaXJzdCkKKyAgICAgICAg
ICAgIGxpc3QuYXBwZW5kKG1fZW50cmllc1tmaXJzdF0uZ2V0KCkpOworICAgIH0KK30KKwordm9p
ZCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0V2l0aExpbWl0KGludCBsaW1pdCwgVmVjdG9y
PFJlZjxIaXN0b3J5SXRlbT4+JiBsaXN0KQoreworICAgIEFTU0VSVChsaW1pdCA+IC0xKTsKKyAg
ICBsaXN0LmNsZWFyKCk7CisgICAgaWYgKCFtX2VudHJpZXMuc2l6ZSgpKQorICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgIHVuc2lnbmVkIGxhc3RFbnRyeSA9IG1fZW50cmllcy5zaXplKCkg
LSAxOworICAgIGlmIChtX2N1cnJlbnQgPCBsYXN0RW50cnkpIHsKKyAgICAgICAgaW50IGxhc3Qg
PSBzdGQ6Om1pbihtX2N1cnJlbnQgKyBsaW1pdCwgbGFzdEVudHJ5KTsKKyAgICAgICAgbGltaXQg
PSBtX2N1cnJlbnQgKyAxOworICAgICAgICBmb3IgKDsgbGltaXQgPD0gbGFzdDsgKytsaW1pdCkK
KyAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmllc1tsaW1pdF0uZ2V0KCkpOworICAgIH0K
K30KKworaW50IEJhY2tGb3J3YXJkTGlzdDo6Y2FwYWNpdHkoKQoreworICAgIHJldHVybiBtX2Nh
cGFjaXR5OworfQorCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6c2V0Q2FwYWNpdHkoaW50IHNpemUp
Cit7ICAgIAorICAgIHdoaWxlIChzaXplIDwgc3RhdGljX2Nhc3Q8aW50PihtX2VudHJpZXMuc2l6
ZSgpKSkgeworICAgICAgICBSZWY8SGlzdG9yeUl0ZW0+IGl0ZW0gPSBtX2VudHJpZXMudGFrZUxh
c3QoKTsKKyAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0ucHRyKCkpOworICAgICAgICBQ
YWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZShpdGVtKTsKKyAgICB9CisKKyAgICBpZiAoIXNp
emUpCisgICAgICAgIG1fY3VycmVudCA9IE5vQ3VycmVudEl0ZW1JbmRleDsKKyAgICBlbHNlIGlm
IChtX2N1cnJlbnQgPiBtX2VudHJpZXMuc2l6ZSgpIC0gMSkKKyAgICAgICAgbV9jdXJyZW50ID0g
bV9lbnRyaWVzLnNpemUoKSAtIDE7CisKKyAgICBtX2NhcGFjaXR5ID0gc2l6ZTsKK30KKworYm9v
bCBCYWNrRm9yd2FyZExpc3Q6OmVuYWJsZWQoKQoreworICAgIHJldHVybiBtX2VuYWJsZWQ7Cit9
CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAg
ICBtX2VuYWJsZWQgPSBlbmFibGVkOworICAgIGlmICghZW5hYmxlZCkgeworICAgICAgICBpbnQg
Y2FwYWNpdHkgPSBtX2NhcGFjaXR5OworICAgICAgICBzZXRDYXBhY2l0eSgwKTsKKyAgICAgICAg
c2V0Q2FwYWNpdHkoY2FwYWNpdHkpOworICAgIH0KK30KKworaW50IEJhY2tGb3J3YXJkTGlzdDo6
YmFja0xpc3RDb3VudCgpCit7CisgICAgcmV0dXJuIG1fY3VycmVudCA9PSBOb0N1cnJlbnRJdGVt
SW5kZXggPyAwIDogbV9jdXJyZW50OworfQorCitpbnQgQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJk
TGlzdENvdW50KCkKK3sKKyAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1JbmRl
eCA/IDAgOiAoaW50KW1fZW50cmllcy5zaXplKCkgLSAobV9jdXJyZW50ICsgMSk7Cit9CisKK0hp
c3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkKK3sKKyAg
ICAvLyBEbyByYW5nZSBjaGVja3Mgd2l0aG91dCBkb2luZyBtYXRoIG9uIGluZGV4IHRvIGF2b2lk
IG92ZXJmbG93LgorICAgIGlmIChpbmRleCA8IC1zdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVudCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIGlmIChpbmRleCA+IGZvcndhcmRM
aXN0Q291bnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIAorICAgIHJldHVy
biBtX2VudHJpZXNbaW5kZXggKyBtX2N1cnJlbnRdLnB0cigpOworfQorCitWZWN0b3I8UmVmPEhp
c3RvcnlJdGVtPj4mIEJhY2tGb3J3YXJkTGlzdDo6ZW50cmllcygpCit7CisgICAgcmV0dXJuIG1f
ZW50cmllczsKK30KKworI2lmIFBMQVRGT1JNKElPUykKK3Vuc2lnbmVkIEJhY2tGb3J3YXJkTGlz
dDo6Y3VycmVudCgpCit7CisgICAgcmV0dXJuIG1fY3VycmVudDsKK30KKwordm9pZCBCYWNrRm9y
d2FyZExpc3Q6OnNldEN1cnJlbnQodW5zaWduZWQgbmV3Q3VycmVudCkKK3sKKyAgICBtX2N1cnJl
bnQgPSBuZXdDdXJyZW50OworfQorCitib29sIEJhY2tGb3J3YXJkTGlzdDo6Y2xlYXJBbGxQYWdl
Q2FjaGVzKCkKK3sKKyAgICBib29sIGRpZFJlbW92ZUF0TGVhc3RPbmVJdGVtID0gZmFsc2U7Cisg
ICAgZm9yIChhdXRvJiBpdGVtIDogbV9lbnRyaWVzKSB7CisgICAgICAgIGlmIChpdGVtLT5pc0lu
UGFnZUNhY2hlKCkpIHsKKyAgICAgICAgICAgIGRpZFJlbW92ZUF0TGVhc3RPbmVJdGVtID0gdHJ1
ZTsKKyAgICAgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBkaWRSZW1vdmVBdExlYXN0T25lSXRlbTsKK30KKyNl
bmRpZgorCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2UoKQoreworICAgIGZvciAoYXV0byYg
aXRlbSA6IG1fZW50cmllcykKKyAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1vdmUo
aXRlbSk7CisgICAgbV9lbnRyaWVzLmNsZWFyKCk7CisgICAgbV9lbnRyeUhhc2guY2xlYXIoKTsK
KyAgICBtX3dlYlZpZXcgPSBudWxscHRyOworICAgIG1fY2xvc2VkID0gdHJ1ZTsKK30KKworYm9v
bCBCYWNrRm9yd2FyZExpc3Q6OmNsb3NlZCgpCit7CisgICAgcmV0dXJuIG1fY2xvc2VkOworfQor
Cit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6cmVtb3ZlSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKK3sK
KyAgICBpZiAoIWl0ZW0pCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9lbnRyaWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2VudHJp
ZXNbaV0ucHRyKCkgPT0gaXRlbSkgeworICAgICAgICAgICAgbV9lbnRyaWVzLnJlbW92ZShpKTsK
KyAgICAgICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKKyAgICAgICAgICAgIGlmICht
X2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4IHx8IG1fY3VycmVudCA8IGkpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAobV9jdXJyZW50ID4gaSkKKyAgICAgICAg
ICAgICAgICBtX2N1cnJlbnQtLTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAg
IHNpemVfdCBjb3VudCA9IG1fZW50cmllcy5zaXplKCk7CisgICAgICAgICAgICAgICAgaWYgKG1f
Y3VycmVudCA+PSBjb3VudCkKKyAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gY291bnQg
PyBjb3VudCAtIDEgOiBOb0N1cnJlbnRJdGVtSW5kZXg7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBCYWNrRm9yd2FyZExpc3Q6
OmNvbnRhaW5zSXRlbShIaXN0b3J5SXRlbSogZW50cnkpCit7CisgICAgcmV0dXJuIG1fZW50cnlI
YXNoLmNvbnRhaW5zKGVudHJ5KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hp
c3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9X
ZWJCYWNrRm9yd2FyZExpc3QubW0KaW5kZXggMTI2YzdkOThlZTE2MGUwNmQ2YjgzNTgzOWM2NjM5
NDc2Njg1NWQ5Mi4uN2I4MGQzYWVmZDZlZGY5M2IyMWM2YjlkZTMxMzg4MWI4N2NiNTc4NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KQEAg
LTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIldlYkJhY2tGb3J3YXJkTGlzdC5oIgogI2ltcG9ydCAi
V2ViQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCIKIAorI2ltcG9ydCAiQmFja0ZvcndhcmRMaXN0
LmgiCiAjaW1wb3J0ICJXZWJGcmFtZUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJIaXN0b3J5SXRl
bUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJIaXN0b3J5SXRlbVByaXZhdGUuaCIKQEAgLTM4LDcg
KzM5LDYgQEAKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2Vi
VHlwZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViVmlld1ByaXZhdGUuaCIKLSNpbXBvcnQgPFdl
YkNvcmUvQmFja0ZvcndhcmRMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hpc3RvcnlJdGVtLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGFnZUNhY2hlLmg+
CkBAIC04MiwxNyArODIsMTcgQEAgV2ViQmFja0ZvcndhcmRMaXN0ICpraXQoQmFja0ZvcndhcmRM
aXN0KiBiYWNrRm9yd2FyZExpc3QpCiAgICAgaWYgKFdlYkJhY2tGb3J3YXJkTGlzdCAqd2ViQmFj
a0ZvcndhcmRMaXN0ID0gYmFja0ZvcndhcmRMaXN0cygpLmdldChiYWNrRm9yd2FyZExpc3QpKQog
ICAgICAgICByZXR1cm4gd2ViQmFja0ZvcndhcmRMaXN0OwogCi0gICAgcmV0dXJuIFtbW1dlYkJh
Y2tGb3J3YXJkTGlzdCBhbGxvY10gaW5pdFdpdGhCYWNrRm9yd2FyZExpc3Q6YmFja0ZvcndhcmRM
aXN0XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFtbW1dlYkJhY2tGb3J3YXJkTGlzdCBhbGxv
Y10gaW5pdFdpdGhCYWNrRm9yd2FyZExpc3Q6KmJhY2tGb3J3YXJkTGlzdF0gYXV0b3JlbGVhc2Vd
OwogfQogCi0tIChpZClpbml0V2l0aEJhY2tGb3J3YXJkTGlzdDooUGFzc1JlZlB0cjxCYWNrRm9y
d2FyZExpc3Q+KWJhY2tGb3J3YXJkTGlzdAorLSAoaWQpaW5pdFdpdGhCYWNrRm9yd2FyZExpc3Q6
KFJlZjxCYWNrRm9yd2FyZExpc3Q+JiYpYmFja0ZvcndhcmRMaXN0CiB7ICAgCiAgICAgV2ViQ29y
ZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKICAgICBzZWxmID0gW3N1cGVyIGluaXRd
OwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIF9wcml2YXRlID0g
cmVpbnRlcnByZXRfY2FzdDxXZWJCYWNrRm9yd2FyZExpc3RQcml2YXRlKj4oYmFja0ZvcndhcmRM
aXN0LmxlYWtSZWYoKSk7CisgICAgX3ByaXZhdGUgPSByZWludGVycHJldF9jYXN0PFdlYkJhY2tG
b3J3YXJkTGlzdFByaXZhdGUqPigmYmFja0ZvcndhcmRMaXN0LmxlYWtSZWYoKSk7CiAgICAgYmFj
a0ZvcndhcmRMaXN0cygpLnNldChjb3JlKHNlbGYpLCBzZWxmKTsKICAgICByZXR1cm4gc2VsZjsK
IH0KQEAgLTMzMiwxMiArMzMyLDEyIEBAIHN0YXRpYyBib29sIGJ1bXBlckNhckJhY2tGb3J3YXJk
SGFja05lZWRlZCgpCiAKIC0gKHZvaWQpc2V0UGFnZUNhY2hlU2l6ZTooTlNVSW50ZWdlcilzaXpl
CiB7Ci0gICAgW2tpdChjb3JlKHNlbGYpLT5wYWdlKCkpIHNldFVzZXNQYWdlQ2FjaGU6c2l6ZSAh
PSAwXTsKKyAgICBbY29yZShzZWxmKS0+d2ViVmlldygpIHNldFVzZXNQYWdlQ2FjaGU6c2l6ZSAh
PSAwXTsKIH0KIAogLSAoTlNVSW50ZWdlcilwYWdlQ2FjaGVTaXplCiB7Ci0gICAgcmV0dXJuIFtr
aXQoY29yZShzZWxmKS0+cGFnZSgpKSB1c2VzUGFnZUNhY2hlXSA/IFBhZ2VDYWNoZTo6c2luZ2xl
dG9uKCkubWF4U2l6ZSgpIDogMDsKKyAgICByZXR1cm4gW2NvcmUoc2VsZiktPndlYlZpZXcoKSB1
c2VzUGFnZUNhY2hlXSA/IFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkubWF4U2l6ZSgpIDogMDsKIH0K
IAogLSAoaW50KWJhY2tMaXN0Q291bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hp
c3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL0hp
c3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaAppbmRleCAzYTMwYjhhYjMwNGZhZDIz
ZDU5NjAyN2Y5YzNjZGFmM2ZhYWQyNzRmLi44ZGUwZTMxOWQ2YmFlMWFkNDg5YzFlZTI4ZjU0YzI4
YTIxMTcyMGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJhY2tG
b3J3YXJkTGlzdEludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJC
YWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oCkBAIC0yOSwxMyArMjksMTEgQEAKICNpbXBvcnQgPFdl
YktpdExlZ2FjeS9XZWJCYWNrRm9yd2FyZExpc3QuaD4KICNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRy
Lmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJhY2tGb3J3YXJkTGlzdDsKLX0KIAot
V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0KiBjb3JlKFdlYkJhY2tGb3J3YXJkTGlzdCAqKTsKLVdl
YkJhY2tGb3J3YXJkTGlzdCAqa2l0KFdlYkNvcmU6OkJhY2tGb3J3YXJkTGlzdCopOworQmFja0Zv
cndhcmRMaXN0KiBjb3JlKFdlYkJhY2tGb3J3YXJkTGlzdCAqKTsKK1dlYkJhY2tGb3J3YXJkTGlz
dCAqa2l0KEJhY2tGb3J3YXJkTGlzdCopOwogCiBAaW50ZXJmYWNlIFdlYkJhY2tGb3J3YXJkTGlz
dCAoKQotLSAoaWQpaW5pdFdpdGhCYWNrRm9yd2FyZExpc3Q6KFBhc3NSZWZQdHI8V2ViQ29yZTo6
QmFja0ZvcndhcmRMaXN0PiliYWNrRm9yd2FyZExpc3Q7CistIChpZClpbml0V2l0aEJhY2tGb3J3
YXJkTGlzdDooUmVmPEJhY2tGb3J3YXJkTGlzdD4mJiliYWNrRm9yd2FyZExpc3Q7CiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCmluZGV4IGI0ZjUzNTg0MzE1MmU1Y2JkMWViNzdkZGViY2UyYzZjZjczNGIy
MDEuLjgyMTFkMzY2MTE5OTFlODExODU2MjFkNmYxZjIzZTY3Nzk4MGQ4ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIldlYkZyYW1lTG9hZGVyQ2xpZW50
LmgiCiAKKyNpbXBvcnQgIkJhY2tGb3J3YXJkTGlzdC5oIgogI2ltcG9ydCAiRE9NRWxlbWVudElu
dGVybmFsLmgiCiAjaW1wb3J0ICJET01IVE1MRm9ybUVsZW1lbnRJbnRlcm5hbC5oIgogI2ltcG9y
dCAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCkBAIC03NSw3ICs3Niw2IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0F1dGhlbnRpY2F0aW9uQ0YuaD4KICNpbXBvcnQgPFdlYkNvcmUvQXV0aGVudGljYXRpb25N
YWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRDb250cm9sbGVyLmg+Ci0jaW1wb3J0
IDxXZWJDb3JlL0JhY2tGb3J3YXJkTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9DYWNoZWRGcmFt
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DaHJvbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRE5TLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbSBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCmluZGV4IGRkODNlZTZk
YThhYmQ0YzA0YTI2YWI1NzFmNTk4NjMxZmFlOWYwZmYuLjVlYzE5Nzg1ZGE3Mjk3YjFhMjQ0YzU3
NjMyMDcwYzRiZGU5NDZiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVW
aWV3Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIldlYkZyYW1lVmlldy5oIgogCisj
aW1wb3J0ICJCYWNrRm9yd2FyZExpc3QuaCIKICNpbXBvcnQgIldlYkNsaXBWaWV3LmgiCiAjaW1w
b3J0ICJXZWJEYXRhU291cmNlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV2ViRG9jdW1lbnQuaCIKQEAg
LTUyLDcgKzUzLDYgQEAKICNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCiAjaW1wb3J0IDxGb3Vu
ZGF0aW9uL05TVVJMUmVxdWVzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9yd2FyZENvbnRy
b2xsZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0V2ZW50SGFuZGxlci5o
PgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCmluZGV4IGMyM2U2MmNjYmJmMDY1NTAzYWFmZTZiYzVlZDJjMjNjMjY4MmY2ZjIuLmJlZDQw
ODQxNWUwMTY3YjliNTU3ZmY4OTU1YzBkZTFhOTVjMTEyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNpbXBvcnQgIldlYlZpZXdJbnRlcm5h
bC5oIgogI2ltcG9ydCAiV2ViVmlld0RhdGEuaCIKIAorI2ltcG9ydCAiQmFja0ZvcndhcmRMaXN0
LmgiCiAjaW1wb3J0ICJET01DU1NTdHlsZURlY2xhcmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQg
IkRPTURvY3VtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTUludGVybmFsLmgiCkBAIC0xMjEs
NyArMTIyLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvQW5pbWF0aW9uQ29udHJvbGxlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRM
aXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQSS5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9DaHJvbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JNYWMuaD4KQEAgLTEwMzIsNiArMTAz
Miw4IEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxpemVHYW1lcGFkUHJvdmlkZXJJZk5lY2Vz
c2FyeSgpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYklu
c3BlY3RvckNsaWVudChzZWxmKTsKICNlbmRpZgogCisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYmFj
a0ZvcndhcmRDbGllbnQgPSBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZShzZWxmKTsKKwogI2lmIEVO
QUJMRShBUFBMRV9QQVkpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucGF5bWVudENvb3JkaW5hdG9y
Q2xpZW50ID0gbmV3IFdlYlBheW1lbnRDb29yZGluYXRvckNsaWVudCgpOwogI2VuZGlmCkBAIC0x
MjgxLDYgKzEyODMsNyBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3Zp
ZGVySWZOZWNlc3NhcnkoKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29yZGluYXRv
ckNsaWVudCA9IG5ldyBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQoKTsKICNlbmRpZgogCisg
ICAgcGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQgPSBCYWNrRm9yd2FyZExpc3Q6
OmNyZWF0ZShzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5pbnNwZWN0b3JDbGllbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHNlbGYpOwogICAgIHBhZ2VDb25maWd1cmF0aW9uLmxvYWRl
ckNsaWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxvYWRlckNsaWVudDsKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQgPSBuZXcgV2ViUHJvZ3Jlc3NUcmFj
a2VyQ2xpZW50KHNlbGYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291537</attachid>
            <date>2016-10-13 16:43:21 -0700</date>
            <delta_ts>2016-10-13 16:50:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163418-20161013163955.patch</filename>
            <type>text/plain</type>
            <size>48114</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDExYjMzNzZiMWNhNWZj
NmRjYTUwYzVhYjViYzMxOGEwNmRjOGQ5MS4uMTVhOGE0ODdhYWRmMzkzNzBjZjI3NTg4YjAyZjU2
MTgzZTYxMzM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTEwLTEzICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBCYWNrRm9y
d2FyZExpc3QgZnJvbSBXZWJDb3JlIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDE4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaGlzdG9yeS9C
YWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRD
b250cm9sbGVyOjpCYWNrRm9yd2FyZENvbnRyb2xsZXIpOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDb250cm9sbGVyLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpmaWxsV2l0aEVtcHR5Q2xpZW50cyk6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorCiAyMDE2LTEwLTEz
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NsZWFuIFJlbmRl
clRyZWVdIExheW91dFRlc3RzL2ltcG9ydGVkL2JsaW5rL2Zhc3QvdGFibGUvY3Jhc2gtYmFkLWNo
aWxkLXRhYmxlLWNvbnRpbnVhdGlvbi5odG1sIGZhaWxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYTM3ODA2M2Zm
MGZmMjcxOTk3Nzc4OGZhODg4ZTlmMDdlYjMyMDhjLi5iZTcyOTc1YjY5MzYxMjQ2NGJhNjY5YTI5
ODg3MDA4YWUxNDVlMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEwLTEzICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBCYWNr
Rm9yd2FyZExpc3QgZnJvbSBXZWJDb3JlIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDE4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAxNi0xMC0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIENvcHkgQmFja0ZvcndhcmRMaXN0IGZyb20gV2ViQ29yZSB0byBX
ZWJLaXQvd2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOTJlM2I2ZjA5NmI0ZjIyYThiNzcyMzAyNzk5
Y2Y2ZjBjNTNjMTJhYi4uYzkzYzY3NzFlYjAzODhhNTZlNGIzZWFmMjE3NTE5N2M2ZDIzMmNjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTEwLTEzICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBCYWNrRm9yd2FyZExp
c3QgZnJvbSBXZWJDb3JlIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaC4KKyAgICAg
ICAgKEJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKEJhY2tGb3J3YXJkTGlzdDo6
d2ViVmlldyk6CisgICAgICAgICogSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QubW06IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAuCisgICAgICAg
IChCYWNrRm9yd2FyZExpc3Q6OkJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChCYWNrRm9yd2Fy
ZExpc3Q6OmNsb3NlKToKKyAgICAgICAgKEJhY2tGb3J3YXJkTGlzdDo6Y29udGFpbnNJdGVtKToK
KyAgICAgICAgKiBIaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbToKKyAgICAgICAgKGtpdCk6
CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBpbml0V2l0aEJhY2tGb3J3YXJkTGlzdDpd
KToKKyAgICAgICAgKC1bV2ViQmFja0ZvcndhcmRMaXN0IHNldFBhZ2VDYWNoZVNpemU6XSk6Cisg
ICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBwYWdlQ2FjaGVTaXplXSk6CisgICAgICAgICog
SGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJh
bWVWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
VmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnBy
ZWZlcmVuY2VzOmdyb3VwTmFtZTpdKToKKworMjAxNi0xMC0xMyAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgorCiAgICAgICAgIEdldCByaWQgb2YgdGhlIEhpc3RvcnlJdGVt
VmVjdG9yIHR5cGVkZWYKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzM5OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM2M2U1ODE3Mzg1ZjE0ZDdi
NzlhNzAwYWRlODJkOTUwNTMyNGJkYzIuLmIyZjA3MGVhMTc1OTJmMWI5ODc1MGI1Mzk1ZjkwZjI4
OWRkMjVkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNjA0LDcgKzE2MDQsNiBAQCBzZXQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKIAogICAg
IGhpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcAotICAgIGhpc3RvcnkvQmFja0Zvcndh
cmRMaXN0LmNwcAogICAgIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCiAgICAgaGlzdG9yeS9DYWNo
ZWRQYWdlLmNwcAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCmluZGV4IDFlZTZlZWYwMTQ3YmY2Y2NlM2NjMTI5ODE4NTdjM2JiMjRmZDFjZjAuLjhm
YzdkOWI2NzlhOWI0OGQ0NWRiYzllMzQ1ZTIxY2UwYmU4MzBkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCkBAIC02OTAsNyArNjkwLDYgQEAgc2V0KFdlYkNvcmVfRk9SV0FSRElOR19IRUFE
RVJTX0ZJTEVTCiAKICAgICBlZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaAog
Ci0gICAgaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0u
aAogICAgIGhpc3RvcnkvUGFnZUNhY2hlLmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNiMjJhNWE4NGMwMjdkZjAyMDdmYmNj
ODY2YzNiNDc5YWVmNTQ0ZDYuLmU3ODc3Y2I4OTA0YmYxYmRhMTQ2MDEwMTNhMTIwZTBjZWUyM2Yz
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTUyODAsOCArNTI4MCw2IEBACiAJCUJDQTg0NkQ3MERDNjdBMzUwMDI2QzMwOSAv
KiBSZW5kZXJSZXBsaWNhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0E4NDZENTBEQzY3QTM1MDAyNkMzMDkgLyogUmVuZGVyUmVwbGljYS5oICovOyB9
OwogCQlCQ0E4QzgxRTExRTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4QzgxQzEx
RTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNBOEM4MUYxMUUzRDM2OTAwODEy
RkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4QzgxRDExRTNEMzY5MDA4MTJGQjcgLyogQmFja0Zv
cndhcmRDb250cm9sbGVyLmNwcCAqLzsgfTsKLQkJQkNBOENBNUYxMUU0RTZEMTAwODEyRkI3IC8q
IEJhY2tGb3J3YXJkTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0E4Q0E1RDExRTRFNkQxMDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0LmNw
cCAqLzsgfTsKLQkJQkNBOENBNjAxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBOENBNUUx
MUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQUE0ODZGMTRBMDUyNTMwMDg4RkFDNCAv
KiBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUE0ODZEMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2
ZW50RmFjdG9yeU1hYy5tbSAqLzsgfTsKIAkJQkNBQTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBs
YXRmb3JtRXZlbnRGYWN0b3J5TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0FBNDg2RTE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZh
Y3RvcnlNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCQ0FBOTBDMzBBN0VCQTYwMDA4QjEyMjkgLyogU2Nyb2xsYmFyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUE5MEMyMEE3RUJBNjAwMDhC
MTIyOSAvKiBTY3JvbGxiYXIuY3BwICovOyB9OwpAQCAtMTI4MDYsOCArMTI4MDQsNiBAQAogCQlC
Q0E4NDZENTBEQzY3QTM1MDAyNkMzMDkgLyogUmVuZGVyUmVwbGljYS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJSZXBsaWNhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDQThDODFDMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja0ZvcndhcmRDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQThDODFEMTFFM0QzNjkwMDgx
MkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQkNBOENBNUQxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrRm9yd2FyZExp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0E4Q0E1RTExRTRFNkQxMDA4
MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJhY2tGb3J3YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FB
NDg2RDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBQTQ4NkUxNEEwNTI1MzAwODhG
QUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDQUE5MEMyMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxiYXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGJhci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjY5OCw4ICsxNjY5NCw2IEBACiAJCQkJNTE3NDFEMEIw
QjA3MjU5QTAwRUQ0NDJDIC8qIEJhY2tGb3J3YXJkQ2xpZW50LmggKi8sCiAJCQkJQkNBOEM4MUQx
MUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJQkNB
OEM4MUMxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5oICovLAotCQkJ
CUJDQThDQTVEMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3QuY3BwICovLAotCQkJ
CUJDQThDQTVFMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3QuaCAqLywKIAkJCQk1
MUMwQUE0MDBGMkFBMTVFMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwICovLAogCQkJCTUxQzBB
QTM4MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovLAogCQkJCTUxQ0JGQzk4MEQx
MEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oICovLApAQCAtMjQwMDAs
NyArMjM5OTQsNiBAQAogCQkJCTkxQzlGMkY5MUFFM0JFQjAwMDk1QjYxQyAvKiBBWFRleHRTdGF0
ZUNoYW5nZUludGVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3NDFEMEYwQjA3MjU5QTAwRUQ0
NDJDIC8qIEJhY2tGb3J3YXJkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4QzgxRTEx
RTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
LQkJCQlCQ0E4Q0E2MDExRTRFNkQxMDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzEyNEVFODBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDYwQkI2MTYxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2NFV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTYxQ0ExMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VC
dXR0b25JbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3NzksNyArMjc3NzIsNiBAQAog
CQkJCTFBMjk5RkU3MUQ3RjVGQTYwMEE2MDA5MyAvKiBSZW5kZXJUaGVtZUNvY29hLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjlBODEyNEIwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGVN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0E4QzgxRjExRTNEMzY5MDA4MTJGQjcgLyogQmFj
a0ZvcndhcmRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDQThDQTVGMTFFNEU2
RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMx
MjRFRTcwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDYwQkI2MTUxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2NFV0aWxpdGllcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzNzlFNjFDOTEyNkNBNUMzMDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
QmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zv
cndhcmRDb250cm9sbGVyLmNwcAppbmRleCAyMzE3YWQ3MjY1OWNiY2IyYzFkODA1MmIzZGJkNTNh
ZjQyZTI1ZTFkLi4xYmM4YjVhNWY2NzJlMWNlNDhhMGI1NWVjM2Y4YzFjZDE3MzRiYjhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwCkBA
IC0yNiwxOCArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCYWNrRm9y
d2FyZENvbnRyb2xsZXIuaCIKIAotI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgotI2luY2x1
ZGUgIkhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQmFja0ZvcndhcmRDb250cm9s
bGVyOjpCYWNrRm9yd2FyZENvbnRyb2xsZXIoUGFnZSYgcGFnZSwgUmVmUHRyPEJhY2tGb3J3YXJk
Q2xpZW50PiYmIGNsaWVudCkKK0JhY2tGb3J3YXJkQ29udHJvbGxlcjo6QmFja0ZvcndhcmRDb250
cm9sbGVyKFBhZ2UmIHBhZ2UsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4mJiBjbGllbnQpCiAgICAg
OiBtX3BhZ2UocGFnZSkKICAgICAsIG1fY2xpZW50KFdURk1vdmUoY2xpZW50KSkKIHsKLSAgICBp
ZiAoIW1fY2xpZW50KQotICAgICAgICBtX2NsaWVudCA9IEJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRl
KCZwYWdlKTsKIH0KIAogQmFja0ZvcndhcmRDb250cm9sbGVyOjp+QmFja0ZvcndhcmRDb250cm9s
bGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5o
CmluZGV4IDVhMjRmOGVkZTI0NzNkM2VhOGVlNGVjMGVkNWQ4Njg5ZDhlNWNjZmYuLmUwODAxMzIz
MTEyOTAyNGFkNzJmMGZhYzc1NzNlNTY0ODEzNmNhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBQ
YWdlOwogY2xhc3MgQmFja0ZvcndhcmRDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShCYWNrRm9yd2FyZENvbnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBCYWNrRm9yd2FyZENvbnRyb2xsZXIoUGFnZSYsIFJlZlB0cjxCYWNrRm9yd2Fy
ZENsaWVudD4mJik7CisgICAgQmFja0ZvcndhcmRDb250cm9sbGVyKFBhZ2UmLCBSZWY8QmFja0Zv
cndhcmRDbGllbnQ+JiYpOwogICAgIH5CYWNrRm9yd2FyZENvbnRyb2xsZXIoKTsKIAogICAgIEJh
Y2tGb3J3YXJkQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYzNiMjcwMTdiOWJmNmUzMGFmZjE5ZWU3MGU4MGVjYTFlNGQx
ZWM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDI5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKLQotI2luY2x1ZGUgIkZyYW1l
LmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dC5oIgotI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2lu
Y2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKLSNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3Qg
dW5zaWduZWQgRGVmYXVsdENhcGFjaXR5ID0gMTAwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5v
Q3VycmVudEl0ZW1JbmRleCA9IFVJTlRfTUFYOwotCi1CYWNrRm9yd2FyZExpc3Q6OkJhY2tGb3J3
YXJkTGlzdChQYWdlKiBwYWdlKQotICAgIDogbV9wYWdlKHBhZ2UpCi0gICAgLCBtX2N1cnJlbnQo
Tm9DdXJyZW50SXRlbUluZGV4KQotICAgICwgbV9jYXBhY2l0eShEZWZhdWx0Q2FwYWNpdHkpCi0g
ICAgLCBtX2Nsb3NlZCh0cnVlKQotICAgICwgbV9lbmFibGVkKHRydWUpCi17Ci19Ci0KLUJhY2tG
b3J3YXJkTGlzdDo6fkJhY2tGb3J3YXJkTGlzdCgpCi17Ci0gICAgQVNTRVJUKG1fY2xvc2VkKTsK
LX0KLQotdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIG5l
d0l0ZW0pCi17Ci0gICAgaWYgKCFtX2NhcGFjaXR5IHx8ICFtX2VuYWJsZWQpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICAvLyBUb3NzIGFueXRoaW5nIGluIHRoZSBmb3J3YXJkIGxpc3QgICAg
Ci0gICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpIHsKLSAgICAgICAgdW5z
aWduZWQgdGFyZ2V0U2l6ZSA9IG1fY3VycmVudCArIDE7Ci0gICAgICAgIHdoaWxlIChtX2VudHJp
ZXMuc2l6ZSgpID4gdGFyZ2V0U2l6ZSkgewotICAgICAgICAgICAgUmVmPEhpc3RvcnlJdGVtPiBp
dGVtID0gbV9lbnRyaWVzLnRha2VMYXN0KCk7Ci0gICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1v
dmUoaXRlbS5wdHIoKSk7Ci0gICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92
ZShpdGVtKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRvc3MgdGhlIGZpcnN0IGl0ZW0g
aWYgdGhlIGxpc3QgaXMgZ2V0dGluZyB0b28gYmlnLCBhcyBsb25nIGFzIHdlJ3JlIG5vdCB1c2lu
ZyBpdAotICAgIC8vIChvciBldmVuIGlmIHdlIGFyZSwgaWYgd2Ugb25seSB3YW50IDEgZW50cnkp
LgotICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1fY2FwYWNpdHkgJiYgKG1fY3VycmVudCB8
fCBtX2NhcGFjaXR5ID09IDEpKSB7Ci0gICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gaXRlbSA9IFdU
Rk1vdmUobV9lbnRyaWVzWzBdKTsKLSAgICAgICAgbV9lbnRyaWVzLnJlbW92ZSgwKTsKLSAgICAg
ICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0ucHRyKCkpOwotICAgICAgICBQYWdlQ2FjaGU6OnNp
bmdsZXRvbigpLnJlbW92ZShpdGVtKTsKLSAgICAgICAgLS1tX2N1cnJlbnQ7Ci0gICAgfQotCi0g
ICAgbV9lbnRyeUhhc2guYWRkKG5ld0l0ZW0ucHRyKCkpOwotICAgIG1fZW50cmllcy5pbnNlcnQo
bV9jdXJyZW50ICsgMSwgV1RGTW92ZShuZXdJdGVtKSk7Ci0gICAgKyttX2N1cnJlbnQ7Ci19Ci0K
LXZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb0JhY2soKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQg
PiAwKTsKLSAgICBpZiAobV9jdXJyZW50ID4gMCkgewotICAgICAgICBtX2N1cnJlbnQtLTsKLSAg
ICB9Ci19Ci0KLXZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb0ZvcndhcmQoKQotewotICAgIEFTU0VS
VChtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSk7Ci0gICAgaWYgKG1fY3VycmVudCA8
IG1fZW50cmllcy5zaXplKCkgLSAxKSB7Ci0gICAgICAgIG1fY3VycmVudCsrOwotICAgIH0KLX0K
LQotdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQotewot
ICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSB8fCAhaXRlbSkKLSAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKLSAgICB1bnNpZ25lZCBpbnQgaW5kZXggPSAwOwotICAgIGZvciAoOyBpbmRleCA8IG1f
ZW50cmllcy5zaXplKCk7ICsraW5kZXgpCi0gICAgICAgIGlmIChtX2VudHJpZXNbaW5kZXhdLnB0
cigpID09IGl0ZW0pCi0gICAgICAgICAgICBicmVhazsKLSAgICBpZiAoaW5kZXggPCBtX2VudHJp
ZXMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fY3VycmVudCA9IGluZGV4OwotICAgIH0KLX0KLQotSGlz
dG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6YmFja0l0ZW0oKQotewotICAgIGlmIChtX2N1cnJl
bnQgJiYgbV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkKLSAgICAgICAgcmV0dXJuIG1f
ZW50cmllc1ttX2N1cnJlbnQgLSAxXS5wdHIoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQot
SGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Y3VycmVudEl0ZW0oKQotewotICAgIGlmICht
X2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KQotICAgICAgICByZXR1cm4gbV9lbnRyaWVz
W21fY3VycmVudF0ucHRyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUhpc3RvcnlJdGVt
KiBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVtKCkKLXsKLSAgICBpZiAobV9lbnRyaWVzLnNp
emUoKSAmJiBtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSkKLSAgICAgICAgcmV0dXJu
IG1fZW50cmllc1ttX2N1cnJlbnQgKyAxXS5wdHIoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0K
LQotdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0V2l0aExpbWl0KGludCBsaW1pdCwgVmVj
dG9yPFJlZjxIaXN0b3J5SXRlbT4+JiBsaXN0KQotewotICAgIGxpc3QuY2xlYXIoKTsKLSAgICBp
ZiAobV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkgewotICAgICAgICB1bnNpZ25lZCBm
aXJzdCA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSAtIGxpbWl0LCAwKTsK
LSAgICAgICAgZm9yICg7IGZpcnN0IDwgbV9jdXJyZW50OyArK2ZpcnN0KQotICAgICAgICAgICAg
bGlzdC5hcHBlbmQobV9lbnRyaWVzW2ZpcnN0XS5nZXQoKSk7Ci0gICAgfQotfQotCi12b2lkIEJh
Y2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBWZWN0b3I8UmVm
PEhpc3RvcnlJdGVtPj4mIGxpc3QpCi17Ci0gICAgQVNTRVJUKGxpbWl0ID4gLTEpOwotICAgIGxp
c3QuY2xlYXIoKTsKLSAgICBpZiAoIW1fZW50cmllcy5zaXplKCkpCi0gICAgICAgIHJldHVybjsK
LSAgICAgICAgCi0gICAgdW5zaWduZWQgbGFzdEVudHJ5ID0gbV9lbnRyaWVzLnNpemUoKSAtIDE7
Ci0gICAgaWYgKG1fY3VycmVudCA8IGxhc3RFbnRyeSkgewotICAgICAgICBpbnQgbGFzdCA9IHN0
ZDo6bWluKG1fY3VycmVudCArIGxpbWl0LCBsYXN0RW50cnkpOwotICAgICAgICBsaW1pdCA9IG1f
Y3VycmVudCArIDE7Ci0gICAgICAgIGZvciAoOyBsaW1pdCA8PSBsYXN0OyArK2xpbWl0KQotICAg
ICAgICAgICAgbGlzdC5hcHBlbmQobV9lbnRyaWVzW2xpbWl0XS5nZXQoKSk7Ci0gICAgfQotfQot
Ci1pbnQgQmFja0ZvcndhcmRMaXN0OjpjYXBhY2l0eSgpCi17Ci0gICAgcmV0dXJuIG1fY2FwYWNp
dHk7Ci19Ci0KLXZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRDYXBhY2l0eShpbnQgc2l6ZSkKLXsg
ICAgCi0gICAgd2hpbGUgKHNpemUgPCBzdGF0aWNfY2FzdDxpbnQ+KG1fZW50cmllcy5zaXplKCkp
KSB7Ci0gICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy50YWtlTGFzdCgp
OwotICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7Ci0gICAgICAgIFBhZ2VD
YWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOwotICAgIH0KLQotICAgIGlmICghc2l6ZSkK
LSAgICAgICAgbV9jdXJyZW50ID0gTm9DdXJyZW50SXRlbUluZGV4OwotICAgIGVsc2UgaWYgKG1f
Y3VycmVudCA+IG1fZW50cmllcy5zaXplKCkgLSAxKSB7Ci0gICAgICAgIG1fY3VycmVudCA9IG1f
ZW50cmllcy5zaXplKCkgLSAxOwotICAgIH0KLSAgICBtX2NhcGFjaXR5ID0gc2l6ZTsKLX0KLQot
Ym9vbCBCYWNrRm9yd2FyZExpc3Q6OmVuYWJsZWQoKQotewotICAgIHJldHVybiBtX2VuYWJsZWQ7
Ci19Ci0KLXZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsK
LSAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwotICAgIGlmICghZW5hYmxlZCkgewotICAgICAgICBp
bnQgY2FwYWNpdHkgPSBtX2NhcGFjaXR5OwotICAgICAgICBzZXRDYXBhY2l0eSgwKTsKLSAgICAg
ICAgc2V0Q2FwYWNpdHkoY2FwYWNpdHkpOwotICAgIH0KLX0KLQotaW50IEJhY2tGb3J3YXJkTGlz
dDo6YmFja0xpc3RDb3VudCgpCi17Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBOb0N1cnJlbnRJ
dGVtSW5kZXggPyAwIDogbV9jdXJyZW50OwotfQotCi1pbnQgQmFja0ZvcndhcmRMaXN0Ojpmb3J3
YXJkTGlzdENvdW50KCkKLXsKLSAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1J
bmRleCA/IDAgOiAoaW50KW1fZW50cmllcy5zaXplKCkgLSAobV9jdXJyZW50ICsgMSk7Ci19Ci0K
LUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkKLXsK
LSAgICAvLyBEbyByYW5nZSBjaGVja3Mgd2l0aG91dCBkb2luZyBtYXRoIG9uIGluZGV4IHRvIGF2
b2lkIG92ZXJmbG93LgotICAgIGlmIChpbmRleCA8IC1zdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVu
dCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIGlmIChpbmRleCA+IGZvcndh
cmRMaXN0Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAotICAgIHJl
dHVybiBtX2VudHJpZXNbaW5kZXggKyBtX2N1cnJlbnRdLnB0cigpOwotfQotCi1WZWN0b3I8UmVm
PEhpc3RvcnlJdGVtPj4mIEJhY2tGb3J3YXJkTGlzdDo6ZW50cmllcygpCi17Ci0gICAgcmV0dXJu
IG1fZW50cmllczsKLX0KLQotI2lmIFBMQVRGT1JNKElPUykKLXVuc2lnbmVkIEJhY2tGb3J3YXJk
TGlzdDo6Y3VycmVudCgpCi17Ci0gICAgcmV0dXJuIG1fY3VycmVudDsKLX0KLQotdm9pZCBCYWNr
Rm9yd2FyZExpc3Q6OnNldEN1cnJlbnQodW5zaWduZWQgbmV3Q3VycmVudCkKLXsKLSAgICBtX2N1
cnJlbnQgPSBuZXdDdXJyZW50OwotfQotCi1ib29sIEJhY2tGb3J3YXJkTGlzdDo6Y2xlYXJBbGxQ
YWdlQ2FjaGVzKCkKLXsKLSAgICBib29sIGRpZFJlbW92ZUF0TGVhc3RPbmVJdGVtID0gZmFsc2U7
Ci0gICAgZm9yIChhdXRvJiBpdGVtIDogbV9lbnRyaWVzKSB7Ci0gICAgICAgIGlmIChpdGVtLT5p
c0luUGFnZUNhY2hlKCkpIHsKLSAgICAgICAgICAgIGRpZFJlbW92ZUF0TGVhc3RPbmVJdGVtID0g
dHJ1ZTsKLSAgICAgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBkaWRSZW1vdmVBdExlYXN0T25lSXRlbTsKLX0K
LSNlbmRpZgotCi12b2lkIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2UoKQotewotICAgIGZvciAoYXV0
byYgaXRlbSA6IG1fZW50cmllcykKLSAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1v
dmUoaXRlbSk7Ci0gICAgbV9lbnRyaWVzLmNsZWFyKCk7Ci0gICAgbV9lbnRyeUhhc2guY2xlYXIo
KTsKLSAgICBtX3BhZ2UgPSBudWxscHRyOwotICAgIG1fY2xvc2VkID0gdHJ1ZTsKLX0KLQotYm9v
bCBCYWNrRm9yd2FyZExpc3Q6OmNsb3NlZCgpCi17Ci0gICAgcmV0dXJuIG1fY2xvc2VkOwotfQot
Ci12b2lkIEJhY2tGb3J3YXJkTGlzdDo6cmVtb3ZlSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKLXsK
LSAgICBpZiAoIWl0ZW0pCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9lbnRyaWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2VudHJp
ZXNbaV0ucHRyKCkgPT0gaXRlbSkgewotICAgICAgICAgICAgbV9lbnRyaWVzLnJlbW92ZShpKTsK
LSAgICAgICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAgICAgICAgIGlmICht
X2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4IHx8IG1fY3VycmVudCA8IGkpCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAobV9jdXJyZW50ID4gaSkKLSAgICAgICAg
ICAgICAgICBtX2N1cnJlbnQtLTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IHNpemVfdCBjb3VudCA9IG1fZW50cmllcy5zaXplKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1f
Y3VycmVudCA+PSBjb3VudCkKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gY291bnQg
PyBjb3VudCAtIDEgOiBOb0N1cnJlbnRJdGVtSW5kZXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLX0KLQotYm9vbCBCYWNrRm9yd2FyZExpc3Q6
OmNvbnRhaW5zSXRlbShIaXN0b3J5SXRlbSogZW50cnkpCi17Ci0gICAgcmV0dXJuIG1fZW50cnlI
YXNoLmNvbnRhaW5zKGVudHJ5KTsKLX0KLQotfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1N2M0NGFiZDhjODBkNTE4NDliNzI1OGY5ODhlOWVkMTk3ODAyM2MzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBCYWNrRm9yd2FyZExpc3RfaAot
I2RlZmluZSBCYWNrRm9yd2FyZExpc3RfaAotCi0jaW5jbHVkZSAiQmFja0ZvcndhcmRDbGllbnQu
aCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQYWdlOwotCi10eXBlZGVmIEhhc2hTZXQ8UmVm
UHRyPEhpc3RvcnlJdGVtPj4gSGlzdG9yeUl0ZW1IYXNoU2V0OwotCi1jbGFzcyBCYWNrRm9yd2Fy
ZExpc3QgOiBwdWJsaWMgQmFja0ZvcndhcmRDbGllbnQgewotcHVibGljOiAKLSAgICBzdGF0aWMg
UmVmPEJhY2tGb3J3YXJkTGlzdD4gY3JlYXRlKFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQmFja0ZvcndhcmRMaXN0KHBhZ2UpKTsgfQotICAgIHZpcnR1YWwgfkJhY2tGb3J3YXJk
TGlzdCgpOwotCi0gICAgUGFnZSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQotCi0gICAgdm9p
ZCBhZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnb0JhY2soKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdvRm9yd2FyZCgpOwot
ICAgIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKLSAgICAgICAgCi0gICAg
V0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0qIGJhY2tJdGVtKCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgSGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9y
eUl0ZW0qIGZvcndhcmRJdGVtKCk7Ci0gICAgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGludCkg
b3ZlcnJpZGU7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJhY2tMaXN0V2l0aExpbWl0KGlu
dCwgVmVjdG9yPFJlZjxIaXN0b3J5SXRlbT4+Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
b3J3YXJkTGlzdFdpdGhMaW1pdChpbnQsIFZlY3RvcjxSZWY8SGlzdG9yeUl0ZW0+PiYpOwotCi0g
ICAgV0VCQ09SRV9FWFBPUlQgaW50IGNhcGFjaXR5KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDYXBhY2l0eShpbnQpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZW5hYmxlZCgpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RW5hYmxlZChib29sKTsKLSAgICBpbnQgYmFja0xp
c3RDb3VudCgpIG92ZXJyaWRlOwotICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc0l0ZW0oSGlzdG9yeUl0ZW0qKTsKLQot
ICAgIHZvaWQgY2xvc2UoKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNsb3Nl
ZCgpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVJdGVtKEhpc3RvcnlJdGVtKik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlZjxIaXN0b3J5SXRlbT4+JiBlbnRyaWVzKCk7
Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgdW5zaWduZWQgY3VycmVudCgpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2V0Q3VycmVudCh1bnNpZ25lZCBuZXdDdXJyZW50KSBvdmVycmlkZTsKLQotICAg
IGJvb2wgY2xlYXJBbGxQYWdlQ2FjaGVzKCkgb3ZlcnJpZGU7Ci0jZW5kaWYKLQotcHJpdmF0ZToK
LSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBCYWNrRm9yd2FyZExpc3QoUGFnZSopOwotCi0g
ICAgUGFnZSogbV9wYWdlOwotICAgIFZlY3RvcjxSZWY8SGlzdG9yeUl0ZW0+PiBtX2VudHJpZXM7
Ci0gICAgSGlzdG9yeUl0ZW1IYXNoU2V0IG1fZW50cnlIYXNoOwotICAgIHVuc2lnbmVkIG1fY3Vy
cmVudDsKLSAgICB1bnNpZ25lZCBtX2NhcGFjaXR5OwotICAgIGJvb2wgbV9jbG9zZWQ7Ci0gICAg
Ym9vbCBtX2VuYWJsZWQ7Ci19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gQmFja0ZvcndhcmRMaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAKaW5kZXggMGU0ZmJlOTY3MjY0YWJiYzc4NTlmNzE1MjYzNjQ3NDE5YzM0ZDU0OS4uYzlhMWJl
Y2ViYWE0NmFkZDkyMDBkZjM3NThhMWJjZWM3MjA1MzE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFbXB0eUNsaWVu
dHMuaCIKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCisjaW5jbHVkZSAi
QmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKICNpbmNsdWRl
ICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVByb3ZpZGVyLmgiCkBAIC0x
NDAsNiArMTQxLDIxIEBAIGNsYXNzIEVtcHR5VmlzaXRlZExpbmtTdG9yZSBmaW5hbCA6IHB1Ymxp
YyBWaXNpdGVkTGlua1N0b3JlIHsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKFBhZ2UmLCBMaW5r
SGFzaCkgb3ZlcnJpZGUgeyB9CiB9OwogCitjbGFzcyBFbXB0eUJhY2tGb3J3YXJkQ2xpZW50IGZp
bmFsIDogcHVibGljIEJhY2tGb3J3YXJkQ2xpZW50IHsKKyAgICB2b2lkIGFkZEl0ZW0oUmVmPEhp
c3RvcnlJdGVtPiYmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVt
Kikgb3ZlcnJpZGUgeyB9CisgICAgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGludCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIGludCBiYWNrTGlzdENvdW50KCkgb3ZlcnJpZGUg
eyByZXR1cm4gMDsgfQorICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgb3ZlcnJpZGUgeyByZXR1
cm4gMDsgfQorICAgIHZvaWQgY2xvc2UoKSBvdmVycmlkZSB7IH0KKworI2lmIFBMQVRGT1JNKElP
UykKKyAgICB1bnNpZ25lZCBjdXJyZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIHZv
aWQgc2V0Q3VycmVudCh1bnNpZ25lZCkgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBjbGVhckFsbFBh
Z2VDYWNoZXMoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCit9OworCiB2b2lk
IGZpbGxXaXRoRW1wdHlDbGllbnRzKFBhZ2VDb25maWd1cmF0aW9uJiBwYWdlQ29uZmlndXJhdGlv
bikKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlDaHJvbWVDbGllbnQ+IGR1bW15
Q2hyb21lQ2xpZW50OwpAQCAtMTY5LDYgKzE4NSw3IEBAIHZvaWQgZmlsbFdpdGhFbXB0eUNsaWVu
dHMoUGFnZUNvbmZpZ3VyYXRpb24mIHBhZ2VDb25maWd1cmF0aW9uKQogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxFbXB0eVByb2dyZXNzVHJhY2tlckNsaWVudD4gZHVtbXlQcm9ncmVzc1RyYWNr
ZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50ID0g
JmR1bW15UHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmdldCgpOwogCisgICAgcGFnZUNvbmZpZ3VyYXRp
b24uYmFja0ZvcndhcmRDbGllbnQgPSBhZG9wdFJlZihuZXcgRW1wdHlCYWNrRm9yd2FyZENsaWVu
dCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCk7CiAKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpjcmVhdGUoU3RyaW5nKCksIFN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IGIxNDBhMzk3ODE4ZmMwNTlkMDNiNDcwZGRiODAxMjg3ZjMyMjAxOTkuLjdmYWVjMTQ0OWE1ZjA5
NGYwMGY4YTM5MmEyODJmMTFkZDE2MDAzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTc4LDcg
KzE3OCw3IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlv
bikKICNlbmRpZgogICAgICwgbV9zZXR0aW5ncyhTZXR0aW5nczo6Y3JlYXRlKHRoaXMpKQogICAg
ICwgbV9wcm9ncmVzcyhzdGQ6Om1ha2VfdW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25m
aWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCkpCi0gICAgLCBtX2JhY2tGb3J3YXJkQ29u
dHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdU
Rk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkKKyAgICAsIG1fYmFj
a0ZvcndhcmRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVy
PigqdGhpcywgKldURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkK
ICAgICAsIG1fbWFpbkZyYW1lKE1haW5GcmFtZTo6Y3JlYXRlKCp0aGlzLCBwYWdlQ29uZmlndXJh
dGlvbikpCiAgICAgLCBtX3RoZW1lKFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UodGhpcykpCiAg
ICAgLCBtX2VkaXRvckNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVu
dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAyMjJhZTdiMzUxNjE5ZGVmMTBiM2ZkNmI4YmQwOGJiYzdjZDg5ZmQ4Li42NjQ3NzI1YWNk
YmUzY2JhOTY3YWM0OWFkYzFlMzA3YTc0YzljMmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU1LDYgKzU1LDggQEAKIAkJMUE4NkND
RDQxQUQ0OEE2MjAwNzRCQTg5IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4NkNDRDMxQUQ0OEE2
MjAwNzRCQTg5IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVJbnRlcm5hbC5oICovOyB9OwogCQkxQThE
RUQ1MDBFRTg4QjhBMDBGMjUwMjIgLyogSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOERFRDRFMEVFODhC
OEEwMEYyNTAyMiAvKiBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oICovOyB9OwogCQkxQThE
RUQ1MTBFRTg4QjhBMDBGMjUwMjIgLyogSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThERUQ0RjBFRTg4
QjhBMDBGMjUwMjIgLyogSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gKi87IH07CisJCTFB
OTExOUY2MURCMDQ3MEEwMDg3RDFGRCAvKiBCYWNrRm9yd2FyZExpc3QubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTkxMTlGNDFEQjA0NzBBMDA4N0Qx
RkQgLyogQmFja0ZvcndhcmRMaXN0Lm1tICovOyB9OworCQkxQTkxMTlGNzFEQjA0NzBBMDA4N0Qx
RkQgLyogQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTkxMTlGNTFEQjA0NzBBMDA4N0QxRkQgLyogQmFja0ZvcndhcmRMaXN0
LmggKi87IH07CiAJCTFBQTgzRjgzMUE1QzRBRTQwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3Zp
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QTgzRjgxMUE1QzRBRTQwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmNwcCAqLzsgfTsK
IAkJMUFBODNGODQxQTVDNEFFNDAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTgzRjgyMUE1QzRB
RTQwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmggKi87IH07CiAJCTFBQTg3OUI2MTFD
QkU5QkYwMDNDNjY0RiAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTg3OUI0MTFDQkU5QkYwMDNDNjY0RiAv
KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLzsgfTsKQEAgLTg0OSw2ICs4NTEsOCBAQAogCQkx
QTg2Q0NEMzFBRDQ4QTYyMDA3NEJBODkgLyogV2ViQXBwbGljYXRpb25DYWNoZUludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFwcGxpY2F0aW9uQ2FjaGVJbnRl
cm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQThERUQ0RTBFRTg4QjhBMDBG
MjUwMjIgLyogSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUE4REVENEYwRUU4OEI4QTAwRjI1MDIyIC8qIEhvc3RlZE5ldHNj
YXBlUGx1Z2luU3RyZWFtLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFBOTExOUY0MURCMDQ3MEEwMDg3RDFGRCAvKiBCYWNrRm9yd2FyZExpc3QubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCYWNrRm9yd2FyZExpc3QubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBOTExOUY1MURCMDQ3MEEwMDg3RDFGRCAv
KiBCYWNrRm9yd2FyZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFj
a0ZvcndhcmRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTgzRjgxMUE1
QzRBRTQwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkRhdGFiYXNlUHJvdmlkZXIuY3BwOyBwYXRoID0gLi4v
Li4vU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUFBODNGODIxQTVDNEFFNDAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViRGF0YWJhc2VQcm92aWRlci5o
OyBwYXRoID0gLi4vLi4vU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQTg3OUI0MTFDQkU5QkYwMDNDNjY0RiAvKiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODQ4LDYgKzE4
NTIsOCBAQAogCQkyNUE4MTc2ODAxQjU0NzRCMEVDQTE0OUUgLyogSGlzdG9yeSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUE5MTE5RjQxREIwNDcwQTAw
ODdEMUZEIC8qIEJhY2tGb3J3YXJkTGlzdC5tbSAqLywKKwkJCQkxQTkxMTlGNTFEQjA0NzBBMDA4
N0QxRkQgLyogQmFja0ZvcndhcmRMaXN0LmggKi8sCiAJCQkJMUE2MDUxOEQxNzUwMkE1RDAwQkM2
MkY1IC8qIEJpbmFyeVByb3BlcnR5TGlzdC5jcHAgKi8sCiAJCQkJMUE2MDUxOEUxNzUwMkE1RDAw
QkM2MkY1IC8qIEJpbmFyeVByb3BlcnR5TGlzdC5oICovLAogCQkJCTFBNjA1MTkwMTc1MDJBNUQw
MEJDNjJGNSAvKiBIaXN0b3J5UHJvcGVydHlMaXN0LmggKi8sCkBAIC0yODk1LDYgKzI5MDEsNyBA
QAogCQkJCTkzRDQzNzY1MUQ1N0FCRUYwMEFCODVFQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENDM3NjYxRDU3QUJFRjAwQUI4NUVB
IC8qIERPTVByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzNzY4MUQ1N0FC
RUYwMEFCODVFQSAvKiBET01SYW5nZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUE5MTE5RjcxREIw
NDcwQTAwODdEMUZEIC8qIEJhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNE
NDM3NkExRDU3QUJFRjAwQUI4NUVBIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0Q0Mzc2QjFENTdBQkVGMDBBQjg1RUEgLyogRE9NUmFuZ2VJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNENDM3NkMxRDU3QUJFRjAwQUI4NUVBIC8qIERPTVJhbmdlcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zNTM5LDYgKzM1NDYsNyBAQAogCQkJCUNFREExMkRCMTUyQ0JF
NjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCNkNFNUMyNDEwMEJDNUNFMDAyMTk5MzYgLyogV2ViQXBwbGljYXRpb25DYWNoZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCUE1REVGQzE0MTFENTM0NEIwMDg4NTI3MyAvKiBXZWJBcHBsaWNh
dGlvbkNhY2hlUXVvdGFNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUE5MTE5RjYxREIw
NDcwQTAwODdEMUZEIC8qIEJhY2tGb3J3YXJkTGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkz
OTgxMTFEMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJBcmNoaXZlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM5ODEwQ0YwODI0QkYwMTAwOERGMDM4IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwubSBp
biBTb3VyY2VzICovLAogCQkJCTkzOTgxMEJDMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJCYWNrRm9y
d2FyZExpc3QubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L0Jh
Y2tGb3J3YXJkTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkMTNlZjNjNDI5YzkzMTU5NjRhYjZmOWMwYjBk
ZDkzM2E3MzQxZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5
L0JhY2tGb3J3YXJkTGlzdC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8v
d3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRD
bGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworT0JKQ19DTEFTUyBXZWJWaWV3OworCit0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFdlYkNv
cmU6Okhpc3RvcnlJdGVtPj4gSGlzdG9yeUl0ZW1IYXNoU2V0OworCitjbGFzcyBCYWNrRm9yd2Fy
ZExpc3QgOiBwdWJsaWMgV2ViQ29yZTo6QmFja0ZvcndhcmRDbGllbnQgeworcHVibGljOiAKKyAg
ICBzdGF0aWMgUmVmPEJhY2tGb3J3YXJkTGlzdD4gY3JlYXRlKFdlYlZpZXcgKndlYlZpZXcpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFja0ZvcndhcmRMaXN0KHdlYlZpZXcpKTsgfQorICAgIHZp
cnR1YWwgfkJhY2tGb3J3YXJkTGlzdCgpOworCisgICAgV2ViVmlldyAqd2ViVmlldygpIHsgcmV0
dXJuIG1fd2ViVmlldzsgfQorCisgICAgdm9pZCBhZGRJdGVtKFJlZjxXZWJDb3JlOjpIaXN0b3J5
SXRlbT4mJikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnb0JhY2soKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdvRm9yd2FyZCgpOworICAgIHZvaWQgZ29Ub0l0ZW0oV2Vi
Q29yZTo6SGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKKyAgICAgICAgCisgICAgV0VCQ09SRV9FWFBP
UlQgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGJhY2tJdGVtKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
V2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
V2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGZvcndhcmRJdGVtKCk7CisgICAgV2ViQ29yZTo6SGlzdG9y
eUl0ZW0qIGl0ZW1BdEluZGV4KGludCkgb3ZlcnJpZGU7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGJhY2tMaXN0V2l0aExpbWl0KGludCwgVmVjdG9yPFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRl
bT4+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3J3YXJkTGlzdFdpdGhMaW1pdChpbnQs
IFZlY3RvcjxSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+PiYpOworCisgICAgV0VCQ09SRV9FWFBP
UlQgaW50IGNhcGFjaXR5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDYXBhY2l0eShp
bnQpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZW5hYmxlZCgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0RW5hYmxlZChib29sKTsKKyAgICBpbnQgYmFja0xpc3RDb3VudCgpIG92ZXJy
aWRlOworICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb250YWluc0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKKworICAgIHZv
aWQgY2xvc2UoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNsb3NlZCgpOwor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVt
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4+
JiBlbnRyaWVzKCk7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgdW5zaWduZWQgY3VycmVudCgp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q3VycmVudCh1bnNpZ25lZCBuZXdDdXJyZW50KSBvdmVy
cmlkZTsKKworICAgIGJvb2wgY2xlYXJBbGxQYWdlQ2FjaGVzKCkgb3ZlcnJpZGU7CisjZW5kaWYK
KworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBCYWNrRm9yd2FyZExpc3Qo
V2ViVmlldyAqKTsKKworICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKKyAgICBWZWN0b3I8UmVmPFdl
YkNvcmU6Okhpc3RvcnlJdGVtPj4gbV9lbnRyaWVzOworICAgIEhpc3RvcnlJdGVtSGFzaFNldCBt
X2VudHJ5SGFzaDsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnQ7CisgICAgdW5zaWduZWQgbV9jYXBh
Y2l0eTsKKyAgICBib29sIG1fY2xvc2VkOworICAgIGJvb2wgbV9lbmFibGVkOworfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRj
ODgxODUyYjhiMDg1OWVjMTg2YTI2NzkzNzNkZTY5MzVlNjg4MwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Lm1tCkBAIC0wLDAgKzEs
Mjg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvUGFn
ZUNhY2hlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgY29uc3QgdW5z
aWduZWQgRGVmYXVsdENhcGFjaXR5ID0gMTAwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vQ3Vy
cmVudEl0ZW1JbmRleCA9IFVJTlRfTUFYOworCitCYWNrRm9yd2FyZExpc3Q6OkJhY2tGb3J3YXJk
TGlzdChXZWJWaWV3ICp3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCisgICAgLCBt
X2N1cnJlbnQoTm9DdXJyZW50SXRlbUluZGV4KQorICAgICwgbV9jYXBhY2l0eShEZWZhdWx0Q2Fw
YWNpdHkpCisgICAgLCBtX2Nsb3NlZCh0cnVlKQorICAgICwgbV9lbmFibGVkKHRydWUpCit7Cit9
CisKK0JhY2tGb3J3YXJkTGlzdDo6fkJhY2tGb3J3YXJkTGlzdCgpCit7CisgICAgQVNTRVJUKG1f
Y2xvc2VkKTsKK30KKwordm9pZCBCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJ
dGVtPiYmIG5ld0l0ZW0pCit7CisgICAgaWYgKCFtX2NhcGFjaXR5IHx8ICFtX2VuYWJsZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICAKKyAgICAvLyBUb3NzIGFueXRoaW5nIGluIHRoZSBmb3J3YXJk
IGxpc3QgICAgCisgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpIHsKKyAg
ICAgICAgdW5zaWduZWQgdGFyZ2V0U2l6ZSA9IG1fY3VycmVudCArIDE7CisgICAgICAgIHdoaWxl
IChtX2VudHJpZXMuc2l6ZSgpID4gdGFyZ2V0U2l6ZSkgeworICAgICAgICAgICAgUmVmPEhpc3Rv
cnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzLnRha2VMYXN0KCk7CisgICAgICAgICAgICBtX2VudHJ5
SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7CisgICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRv
bigpLnJlbW92ZShpdGVtKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFRvc3MgdGhlIGZp
cnN0IGl0ZW0gaWYgdGhlIGxpc3QgaXMgZ2V0dGluZyB0b28gYmlnLCBhcyBsb25nIGFzIHdlJ3Jl
IG5vdCB1c2luZyBpdAorICAgIC8vIChvciBldmVuIGlmIHdlIGFyZSwgaWYgd2Ugb25seSB3YW50
IDEgZW50cnkpLgorICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1fY2FwYWNpdHkgJiYgKG1f
Y3VycmVudCB8fCBtX2NhcGFjaXR5ID09IDEpKSB7CisgICAgICAgIFJlZjxIaXN0b3J5SXRlbT4g
aXRlbSA9IFdURk1vdmUobV9lbnRyaWVzWzBdKTsKKyAgICAgICAgbV9lbnRyaWVzLnJlbW92ZSgw
KTsKKyAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0ucHRyKCkpOworICAgICAgICBQYWdl
Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZShpdGVtKTsKKyAgICAgICAgLS1tX2N1cnJlbnQ7Cisg
ICAgfQorCisgICAgbV9lbnRyeUhhc2guYWRkKG5ld0l0ZW0ucHRyKCkpOworICAgIG1fZW50cmll
cy5pbnNlcnQobV9jdXJyZW50ICsgMSwgV1RGTW92ZShuZXdJdGVtKSk7CisgICAgKyttX2N1cnJl
bnQ7Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb0JhY2soKQoreworICAgIEFTU0VSVCht
X2N1cnJlbnQgPiAwKTsKKyAgICBpZiAobV9jdXJyZW50ID4gMCkKKyAgICAgICAgbV9jdXJyZW50
LS07Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb0ZvcndhcmQoKQoreworICAgIEFTU0VS
VChtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSk7CisgICAgaWYgKG1fY3VycmVudCA8
IG1fZW50cmllcy5zaXplKCkgLSAxKQorICAgICAgICBtX2N1cnJlbnQrKzsKK30KKwordm9pZCBC
YWNrRm9yd2FyZExpc3Q6OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQoreworICAgIGlmICgh
bV9lbnRyaWVzLnNpemUoKSB8fCAhaXRlbSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAg
ICB1bnNpZ25lZCBpbnQgaW5kZXggPSAwOworICAgIGZvciAoOyBpbmRleCA8IG1fZW50cmllcy5z
aXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKG1fZW50cmllc1tpbmRleF0ucHRyKCkgPT0g
aXRlbSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmIChpbmRleCA8IG1fZW50
cmllcy5zaXplKCkpCisgICAgICAgIG1fY3VycmVudCA9IGluZGV4OworfQorCitIaXN0b3J5SXRl
bSogQmFja0ZvcndhcmRMaXN0OjpiYWNrSXRlbSgpCit7CisgICAgaWYgKG1fY3VycmVudCAmJiBt
X2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KQorICAgICAgICByZXR1cm4gbV9lbnRyaWVz
W21fY3VycmVudCAtIDFdLnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQorCitIaXN0b3J5
SXRlbSogQmFja0ZvcndhcmRMaXN0OjpjdXJyZW50SXRlbSgpCit7CisgICAgaWYgKG1fY3VycmVu
dCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpCisgICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJy
ZW50XS5wdHIoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSGlzdG9yeUl0ZW0qIEJhY2tG
b3J3YXJkTGlzdDo6Zm9yd2FyZEl0ZW0oKQoreworICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpICYm
IG1fY3VycmVudCA8IG1fZW50cmllcy5zaXplKCkgLSAxKQorICAgICAgICByZXR1cm4gbV9lbnRy
aWVzW21fY3VycmVudCArIDFdLnB0cigpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lk
IEJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBWZWN0b3I8UmVm
PEhpc3RvcnlJdGVtPj4mIGxpc3QpCit7CisgICAgbGlzdC5jbGVhcigpOworICAgIGlmIChtX2N1
cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KSB7CisgICAgICAgIHVuc2lnbmVkIGZpcnN0ID0g
c3RkOjptYXgoc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnQpIC0gbGltaXQsIDApOworICAgICAg
ICBmb3IgKDsgZmlyc3QgPCBtX2N1cnJlbnQ7ICsrZmlyc3QpCisgICAgICAgICAgICBsaXN0LmFw
cGVuZChtX2VudHJpZXNbZmlyc3RdLmdldCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgQmFja0Zvcndh
cmRMaXN0Ojpmb3J3YXJkTGlzdFdpdGhMaW1pdChpbnQgbGltaXQsIFZlY3RvcjxSZWY8SGlzdG9y
eUl0ZW0+PiYgbGlzdCkKK3sKKyAgICBBU1NFUlQobGltaXQgPiAtMSk7CisgICAgbGlzdC5jbGVh
cigpOworICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAg
ICAKKyAgICB1bnNpZ25lZCBsYXN0RW50cnkgPSBtX2VudHJpZXMuc2l6ZSgpIC0gMTsKKyAgICBp
ZiAobV9jdXJyZW50IDwgbGFzdEVudHJ5KSB7CisgICAgICAgIGludCBsYXN0ID0gc3RkOjptaW4o
bV9jdXJyZW50ICsgbGltaXQsIGxhc3RFbnRyeSk7CisgICAgICAgIGxpbWl0ID0gbV9jdXJyZW50
ICsgMTsKKyAgICAgICAgZm9yICg7IGxpbWl0IDw9IGxhc3Q7ICsrbGltaXQpCisgICAgICAgICAg
ICBsaXN0LmFwcGVuZChtX2VudHJpZXNbbGltaXRdLmdldCgpKTsKKyAgICB9Cit9CisKK2ludCBC
YWNrRm9yd2FyZExpc3Q6OmNhcGFjaXR5KCkKK3sKKyAgICByZXR1cm4gbV9jYXBhY2l0eTsKK30K
Kwordm9pZCBCYWNrRm9yd2FyZExpc3Q6OnNldENhcGFjaXR5KGludCBzaXplKQoreyAgICAKKyAg
ICB3aGlsZSAoc2l6ZSA8IHN0YXRpY19jYXN0PGludD4obV9lbnRyaWVzLnNpemUoKSkpIHsKKyAg
ICAgICAgUmVmPEhpc3RvcnlJdGVtPiBpdGVtID0gbV9lbnRyaWVzLnRha2VMYXN0KCk7CisgICAg
ICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtLnB0cigpKTsKKyAgICAgICAgUGFnZUNhY2hlOjpz
aW5nbGV0b24oKS5yZW1vdmUoaXRlbSk7CisgICAgfQorCisgICAgaWYgKCFzaXplKQorICAgICAg
ICBtX2N1cnJlbnQgPSBOb0N1cnJlbnRJdGVtSW5kZXg7CisgICAgZWxzZSBpZiAobV9jdXJyZW50
ID4gbV9lbnRyaWVzLnNpemUoKSAtIDEpCisgICAgICAgIG1fY3VycmVudCA9IG1fZW50cmllcy5z
aXplKCkgLSAxOworCisgICAgbV9jYXBhY2l0eSA9IHNpemU7Cit9CisKK2Jvb2wgQmFja0Zvcndh
cmRMaXN0OjplbmFibGVkKCkKK3sKKyAgICByZXR1cm4gbV9lbmFibGVkOworfQorCit2b2lkIEJh
Y2tGb3J3YXJkTGlzdDo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9lbmFibGVk
ID0gZW5hYmxlZDsKKyAgICBpZiAoIWVuYWJsZWQpIHsKKyAgICAgICAgaW50IGNhcGFjaXR5ID0g
bV9jYXBhY2l0eTsKKyAgICAgICAgc2V0Q2FwYWNpdHkoMCk7CisgICAgICAgIHNldENhcGFjaXR5
KGNhcGFjaXR5KTsKKyAgICB9Cit9CisKK2ludCBCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0Q291
bnQoKQoreworICAgIHJldHVybiBtX2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4ID8gMCA6
IG1fY3VycmVudDsKK30KKworaW50IEJhY2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RDb3VudCgp
Cit7CisgICAgcmV0dXJuIG1fY3VycmVudCA9PSBOb0N1cnJlbnRJdGVtSW5kZXggPyAwIDogKGlu
dCltX2VudHJpZXMuc2l6ZSgpIC0gKG1fY3VycmVudCArIDEpOworfQorCitIaXN0b3J5SXRlbSog
QmFja0ZvcndhcmRMaXN0OjppdGVtQXRJbmRleChpbnQgaW5kZXgpCit7CisgICAgLy8gRG8gcmFu
Z2UgY2hlY2tzIHdpdGhvdXQgZG9pbmcgbWF0aCBvbiBpbmRleCB0byBhdm9pZCBvdmVyZmxvdy4K
KyAgICBpZiAoaW5kZXggPCAtc3RhdGljX2Nhc3Q8aW50PihtX2N1cnJlbnQpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBpZiAoaW5kZXggPiBmb3J3YXJkTGlzdENvdW50KCkp
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAKKyAgICByZXR1cm4gbV9lbnRyaWVz
W2luZGV4ICsgbV9jdXJyZW50XS5wdHIoKTsKK30KKworVmVjdG9yPFJlZjxIaXN0b3J5SXRlbT4+
JiBCYWNrRm9yd2FyZExpc3Q6OmVudHJpZXMoKQoreworICAgIHJldHVybiBtX2VudHJpZXM7Cit9
CisKKyNpZiBQTEFURk9STShJT1MpCit1bnNpZ25lZCBCYWNrRm9yd2FyZExpc3Q6OmN1cnJlbnQo
KQoreworICAgIHJldHVybiBtX2N1cnJlbnQ7Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0Ojpz
ZXRDdXJyZW50KHVuc2lnbmVkIG5ld0N1cnJlbnQpCit7CisgICAgbV9jdXJyZW50ID0gbmV3Q3Vy
cmVudDsKK30KKworYm9vbCBCYWNrRm9yd2FyZExpc3Q6OmNsZWFyQWxsUGFnZUNhY2hlcygpCit7
CisgICAgYm9vbCBkaWRSZW1vdmVBdExlYXN0T25lSXRlbSA9IGZhbHNlOworICAgIGZvciAoYXV0
byYgaXRlbSA6IG1fZW50cmllcykgeworICAgICAgICBpZiAoaXRlbS0+aXNJblBhZ2VDYWNoZSgp
KSB7CisgICAgICAgICAgICBkaWRSZW1vdmVBdExlYXN0T25lSXRlbSA9IHRydWU7CisgICAgICAg
ICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZShpdGVtKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICByZXR1cm4gZGlkUmVtb3ZlQXRMZWFzdE9uZUl0ZW07Cit9CisjZW5kaWYKKwordm9p
ZCBCYWNrRm9yd2FyZExpc3Q6OmNsb3NlKCkKK3sKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBtX2Vu
dHJpZXMpCisgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOworICAg
IG1fZW50cmllcy5jbGVhcigpOworICAgIG1fZW50cnlIYXNoLmNsZWFyKCk7CisgICAgbV93ZWJW
aWV3ID0gbnVsbHB0cjsKKyAgICBtX2Nsb3NlZCA9IHRydWU7Cit9CisKK2Jvb2wgQmFja0Zvcndh
cmRMaXN0OjpjbG9zZWQoKQoreworICAgIHJldHVybiBtX2Nsb3NlZDsKK30KKwordm9pZCBCYWNr
Rm9yd2FyZExpc3Q6OnJlbW92ZUl0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCit7CisgICAgaWYgKCFp
dGVtKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fZW50cmllcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9lbnRyaWVzW2ldLnB0cigp
ID09IGl0ZW0pIHsKKyAgICAgICAgICAgIG1fZW50cmllcy5yZW1vdmUoaSk7CisgICAgICAgICAg
ICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbSk7CisgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09
IE5vQ3VycmVudEl0ZW1JbmRleCB8fCBtX2N1cnJlbnQgPCBpKQorICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgaWYgKG1fY3VycmVudCA+IGkpCisgICAgICAgICAgICAgICAgbV9j
dXJyZW50LS07CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgY291
bnQgPSBtX2VudHJpZXMuc2l6ZSgpOworICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPj0g
Y291bnQpCisgICAgICAgICAgICAgICAgICAgIG1fY3VycmVudCA9IGNvdW50ID8gY291bnQgLSAx
IDogTm9DdXJyZW50SXRlbUluZGV4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgQmFja0ZvcndhcmRMaXN0Ojpjb250YWluc0l0
ZW0oSGlzdG9yeUl0ZW0qIGVudHJ5KQoreworICAgIHJldHVybiBtX2VudHJ5SGFzaC5jb250YWlu
cyhlbnRyeSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJh
Y2tGb3J3YXJkTGlzdC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0Zvcndh
cmRMaXN0Lm1tCmluZGV4IDEyNmM3ZDk4ZWUxNjBlMDZkNmI4MzU4MzljNjYzOTQ3NjY4NTVkOTIu
LjdiODBkM2FlZmQ2ZWRmOTNiMjFjNmI5ZGUzMTM4ODFiODdjYjU3ODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW1wb3J0ICJXZWJCYWNrRm9yd2FyZExpc3QuaCIKICNpbXBvcnQgIldlYkJhY2tGb3J3
YXJkTGlzdEludGVybmFsLmgiCiAKKyNpbXBvcnQgIkJhY2tGb3J3YXJkTGlzdC5oIgogI2ltcG9y
dCAiV2ViRnJhbWVJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViSGlzdG9yeUl0ZW1JbnRlcm5hbC5o
IgogI2ltcG9ydCAiV2ViSGlzdG9yeUl0ZW1Qcml2YXRlLmgiCkBAIC0zOCw3ICszOSw2IEBACiAj
aW1wb3J0ICJXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaCIKICNpbXBvcnQgIldlYlR5cGVzSW50ZXJu
YWwuaCIKICNpbXBvcnQgIldlYlZpZXdQcml2YXRlLmgiCi0jaW1wb3J0IDxXZWJDb3JlL0JhY2tG
b3J3YXJkTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9IaXN0b3J5SXRlbS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2VDYWNoZS5oPgpAQCAtODIsMTcg
KzgyLDE3IEBAIFdlYkJhY2tGb3J3YXJkTGlzdCAqa2l0KEJhY2tGb3J3YXJkTGlzdCogYmFja0Zv
cndhcmRMaXN0KQogICAgIGlmIChXZWJCYWNrRm9yd2FyZExpc3QgKndlYkJhY2tGb3J3YXJkTGlz
dCA9IGJhY2tGb3J3YXJkTGlzdHMoKS5nZXQoYmFja0ZvcndhcmRMaXN0KSkKICAgICAgICAgcmV0
dXJuIHdlYkJhY2tGb3J3YXJkTGlzdDsKIAotICAgIHJldHVybiBbW1tXZWJCYWNrRm9yd2FyZExp
c3QgYWxsb2NdIGluaXRXaXRoQmFja0ZvcndhcmRMaXN0OmJhY2tGb3J3YXJkTGlzdF0gYXV0b3Jl
bGVhc2VdOworICAgIHJldHVybiBbW1tXZWJCYWNrRm9yd2FyZExpc3QgYWxsb2NdIGluaXRXaXRo
QmFja0ZvcndhcmRMaXN0OipiYWNrRm9yd2FyZExpc3RdIGF1dG9yZWxlYXNlXTsKIH0KIAotLSAo
aWQpaW5pdFdpdGhCYWNrRm9yd2FyZExpc3Q6KFBhc3NSZWZQdHI8QmFja0ZvcndhcmRMaXN0Pili
YWNrRm9yd2FyZExpc3QKKy0gKGlkKWluaXRXaXRoQmFja0ZvcndhcmRMaXN0OihSZWY8QmFja0Zv
cndhcmRMaXN0PiYmKWJhY2tGb3J3YXJkTGlzdAogeyAgIAogICAgIFdlYkNvcmVUaHJlYWRWaW9s
YXRpb25DaGVja1JvdW5kT25lKCk7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKICAgICBpZiAo
IXNlbGYpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBfcHJpdmF0ZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZSo+KGJhY2tGb3J3YXJkTGlzdC5sZWFrUmVm
KCkpOworICAgIF9wcml2YXRlID0gcmVpbnRlcnByZXRfY2FzdDxXZWJCYWNrRm9yd2FyZExpc3RQ
cml2YXRlKj4oJmJhY2tGb3J3YXJkTGlzdC5sZWFrUmVmKCkpOwogICAgIGJhY2tGb3J3YXJkTGlz
dHMoKS5zZXQoY29yZShzZWxmKSwgc2VsZik7CiAgICAgcmV0dXJuIHNlbGY7CiB9CkBAIC0zMzIs
MTIgKzMzMiwxMiBAQCBzdGF0aWMgYm9vbCBidW1wZXJDYXJCYWNrRm9yd2FyZEhhY2tOZWVkZWQo
KQogCiAtICh2b2lkKXNldFBhZ2VDYWNoZVNpemU6KE5TVUludGVnZXIpc2l6ZQogewotICAgIFtr
aXQoY29yZShzZWxmKS0+cGFnZSgpKSBzZXRVc2VzUGFnZUNhY2hlOnNpemUgIT0gMF07CisgICAg
W2NvcmUoc2VsZiktPndlYlZpZXcoKSBzZXRVc2VzUGFnZUNhY2hlOnNpemUgIT0gMF07CiB9CiAK
IC0gKE5TVUludGVnZXIpcGFnZUNhY2hlU2l6ZQogewotICAgIHJldHVybiBba2l0KGNvcmUoc2Vs
ZiktPnBhZ2UoKSkgdXNlc1BhZ2VDYWNoZV0gPyBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLm1heFNp
emUoKSA6IDA7CisgICAgcmV0dXJuIFtjb3JlKHNlbGYpLT53ZWJWaWV3KCkgdXNlc1BhZ2VDYWNo
ZV0gPyBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLm1heFNpemUoKSA6IDA7CiB9CiAKIC0gKGludCli
YWNrTGlzdENvdW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJh
Y2tGb3J3YXJkTGlzdEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L1dlYkJh
Y2tGb3J3YXJkTGlzdEludGVybmFsLmgKaW5kZXggM2EzMGI4YWIzMDRmYWQyM2Q1OTYwMjdmOWMz
Y2RhZjNmYWFkMjc0Zi4uOGRlMGUzMTlkNmJhZTFhZDQ4OWMxZWUyOGY1NGMyOGEyMTE3MjBhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3RJ
bnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRM
aXN0SW50ZXJuYWwuaApAQCAtMjksMTMgKzI5LDExIEBACiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kv
V2ViQmFja0ZvcndhcmRMaXN0Lmg+CiAjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgogCi1uYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBCYWNrRm9yd2FyZExpc3Q7Ci19CiAKLVdlYkNvcmU6OkJh
Y2tGb3J3YXJkTGlzdCogY29yZShXZWJCYWNrRm9yd2FyZExpc3QgKik7Ci1XZWJCYWNrRm9yd2Fy
ZExpc3QgKmtpdChXZWJDb3JlOjpCYWNrRm9yd2FyZExpc3QqKTsKK0JhY2tGb3J3YXJkTGlzdCog
Y29yZShXZWJCYWNrRm9yd2FyZExpc3QgKik7CitXZWJCYWNrRm9yd2FyZExpc3QgKmtpdChCYWNr
Rm9yd2FyZExpc3QqKTsKIAogQGludGVyZmFjZSBXZWJCYWNrRm9yd2FyZExpc3QgKCkKLS0gKGlk
KWluaXRXaXRoQmFja0ZvcndhcmRMaXN0OihQYXNzUmVmUHRyPFdlYkNvcmU6OkJhY2tGb3J3YXJk
TGlzdD4pYmFja0ZvcndhcmRMaXN0OworLSAoaWQpaW5pdFdpdGhCYWNrRm9yd2FyZExpc3Q6KFJl
ZjxCYWNrRm9yd2FyZExpc3Q+JiYpYmFja0ZvcndhcmRMaXN0OwogQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQppbmRleCBiNGY1MzU4NDMxNTJlNWNiZDFlYjc3ZGRlYmNlMmM2Y2Y3MzRiMjAxLi44MjExZDM2
NjExOTkxZTgxMTg1NjIxZDZmMWYyM2U2Nzc5ODBkOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJXZWJGcmFtZUxvYWRlckNsaWVudC5oIgogCisjaW1w
b3J0ICJCYWNrRm9yd2FyZExpc3QuaCIKICNpbXBvcnQgIkRPTUVsZW1lbnRJbnRlcm5hbC5oIgog
I2ltcG9ydCAiRE9NSFRNTEZvcm1FbGVtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkJhY2tG
b3J3YXJkTGlzdC5oIgpAQCAtNzUsNyArNzYsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9BdXRoZW50
aWNhdGlvbkNGLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uTWFjLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL0JhY2tGb3J3YXJkQ29udHJvbGxlci5oPgotI2ltcG9ydCA8V2ViQ29yZS9C
YWNrRm9yd2FyZExpc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2FjaGVkRnJhbWUuaD4KICNpbXBv
cnQgPFdlYkNvcmUvQ2hyb21lLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0ROUy5oPgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZVZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQppbmRleCBkZDgzZWU2ZGE4YWJkNGMwNGEy
NmFiNTcxZjU5ODYzMWZhZTlmMGZmLi41ZWMxOTc4NWRhNzI5N2IxYTI0NGM1NzYzMjA3MGM0YmRl
OTQ2YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQpAQCAt
MjgsNiArMjgsNyBAQAogCiAjaW1wb3J0ICJXZWJGcmFtZVZpZXcuaCIKIAorI2ltcG9ydCAiQmFj
a0ZvcndhcmRMaXN0LmgiCiAjaW1wb3J0ICJXZWJDbGlwVmlldy5oIgogI2ltcG9ydCAiV2ViRGF0
YVNvdXJjZVByaXZhdGUuaCIKICNpbXBvcnQgIldlYkRvY3VtZW50LmgiCkBAIC01Miw3ICs1Myw2
IEBACiAjaW1wb3J0ICJXZWJWaWV3UHJpdmF0ZS5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1VS
TFJlcXVlc3QuaD4KICNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRDb250cm9sbGVyLmg+Ci0j
aW1wb3J0IDxXZWJDb3JlL0JhY2tGb3J3YXJkTGlzdC5oPgogI2ltcG9ydCA8V2ViQ29yZS9EcmFn
Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRnJhbWUuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCBj
MjNlNjJjY2JiZjA2NTUwM2FhZmU2YmM1ZWQyYzIzYzI2ODJmNmYyLi5iZWQ0MDg0MTVlMDE2N2I5
YjU1N2ZmODk1NWMwZGUxYTk1YzExMmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCkBAIC0zMSw2ICszMSw3IEBACiAjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBv
cnQgIldlYlZpZXdEYXRhLmgiCiAKKyNpbXBvcnQgIkJhY2tGb3J3YXJkTGlzdC5oIgogI2ltcG9y
dCAiRE9NQ1NTU3R5bGVEZWNsYXJhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJET01Eb2N1bWVu
dEludGVybmFsLmgiCiAjaW1wb3J0ICJET01JbnRlcm5hbC5oIgpAQCAtMTIxLDcgKzEyMiw2IEBA
CiAjaW1wb3J0IDxXZWJDb3JlL0FuaW1hdGlvbkNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNv
cmUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvQmFja0Zvcndh
cmRDb250cm9sbGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0JhY2tGb3J3YXJkTGlzdC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2hyb21lLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL0NvbG9yTWFjLmg+CkBAIC0xMDMyLDYgKzEwMzIsOCBAQCBzdGF0
aWMgdm9pZCBXZWJLaXRJbml0aWFsaXplR2FtZXBhZFByb3ZpZGVySWZOZWNlc3NhcnkoKQogICAg
IHBhZ2VDb25maWd1cmF0aW9uLmluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJJbnNwZWN0b3JDbGll
bnQoc2VsZik7CiAjZW5kaWYKIAorICAgIHBhZ2VDb25maWd1cmF0aW9uLmJhY2tGb3J3YXJkQ2xp
ZW50ID0gQmFja0ZvcndhcmRMaXN0OjpjcmVhdGUoc2VsZik7CisKICNpZiBFTkFCTEUoQVBQTEVf
UEFZKQogICAgIHBhZ2VDb25maWd1cmF0aW9uLnBheW1lbnRDb29yZGluYXRvckNsaWVudCA9IG5l
dyBXZWJQYXltZW50Q29vcmRpbmF0b3JDbGllbnQoKTsKICNlbmRpZgpAQCAtMTI4MSw2ICsxMjgz
LDcgQEAgc3RhdGljIHZvaWQgV2ViS2l0SW5pdGlhbGl6ZUdhbWVwYWRQcm92aWRlcklmTmVjZXNz
YXJ5KCkKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wYXltZW50Q29vcmRpbmF0b3JDbGllbnQgPSBu
ZXcgV2ViUGF5bWVudENvb3JkaW5hdG9yQ2xpZW50KCk7CiAjZW5kaWYKIAorICAgIHBhZ2VDb25m
aWd1cmF0aW9uLmJhY2tGb3J3YXJkQ2xpZW50ID0gQmFja0ZvcndhcmRMaXN0OjpjcmVhdGUoc2Vs
Zik7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYkluc3Bl
Y3RvckNsaWVudChzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5sb2FkZXJDbGllbnRGb3JN
YWluRnJhbWUgPSBuZXcgV2ViRnJhbWVMb2FkZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZpZ3VyYXRp
b24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50ID0gbmV3IFdlYlByb2dyZXNzVHJhY2tlckNsaWVudChz
ZWxmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291538</attachid>
            <date>2016-10-13 16:50:55 -0700</date>
            <delta_ts>2016-10-13 17:42:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163418-20161013164729.patch</filename>
            <type>text/plain</type>
            <size>48089</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MzExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDExYjMzNzZiMWNhNWZj
NmRjYTUwYzVhYjViYzMxOGEwNmRjOGQ5MS4uMTVhOGE0ODdhYWRmMzkzNzBjZjI3NTg4YjAyZjU2
MTgzZTYxMzM5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE2LTEwLTEzICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBCYWNrRm9y
d2FyZExpc3QgZnJvbSBXZWJDb3JlIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDE4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogaGlzdG9yeS9C
YWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFja0ZvcndhcmRD
b250cm9sbGVyOjpCYWNrRm9yd2FyZENvbnRyb2xsZXIpOgorICAgICAgICAqIGhpc3RvcnkvQmFj
a0ZvcndhcmRDb250cm9sbGVyLmg6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpmaWxsV2l0aEVtcHR5Q2xpZW50cyk6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OlBhZ2UpOgorCiAyMDE2LTEwLTEz
ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0NsZWFuIFJlbmRl
clRyZWVdIExheW91dFRlc3RzL2ltcG9ydGVkL2JsaW5rL2Zhc3QvdGFibGUvY3Jhc2gtYmFkLWNo
aWxkLXRhYmxlLWNvbnRpbnVhdGlvbi5odG1sIGZhaWxzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwYTM3ODA2M2Zm
MGZmMjcxOTk3Nzc4OGZhODg4ZTlmMDdlYjMyMDhjLi5iZTcyOTc1YjY5MzYxMjQ2NGJhNjY5YTI5
ODg3MDA4YWUxNDVlMDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDE2LTEwLTEzICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAgTW92ZSBCYWNr
Rm9yd2FyZExpc3QgZnJvbSBXZWJDb3JlIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDE4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKwogMjAxNi0xMC0xMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgogCiAgICAgICAgIENvcHkgQmFja0ZvcndhcmRMaXN0IGZyb20gV2ViQ29yZSB0byBX
ZWJLaXQvd2luCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOTJlM2I2ZjA5NmI0ZjIyYThiNzcyMzAyNzk5
Y2Y2ZjBjNTNjMTJhYi4uYzkzYzY3NzFlYjAzODhhNTZlNGIzZWFmMjE3NTE5N2M2ZDIzMmNjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE2LTEwLTEzICBBbmRlcnMgQ2Fy
bHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgTW92ZSBCYWNrRm9yd2FyZExp
c3QgZnJvbSBXZWJDb3JlIHRvIFdlYktpdExlZ2FjeQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzNDE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBIaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaC4KKyAgICAg
ICAgKEJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKEJhY2tGb3J3YXJkTGlzdDo6
d2ViVmlldyk6CisgICAgICAgICogSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QubW06IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5jcHAuCisgICAgICAg
IChCYWNrRm9yd2FyZExpc3Q6OkJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChCYWNrRm9yd2Fy
ZExpc3Q6OmNsb3NlKToKKyAgICAgICAgKEJhY2tGb3J3YXJkTGlzdDo6Y29udGFpbnNJdGVtKToK
KyAgICAgICAgKiBIaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdC5tbToKKyAgICAgICAgKGtpdCk6
CisgICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBpbml0V2l0aEJhY2tGb3J3YXJkTGlzdDpd
KToKKyAgICAgICAgKC1bV2ViQmFja0ZvcndhcmRMaXN0IHNldFBhZ2VDYWNoZVNpemU6XSk6Cisg
ICAgICAgICgtW1dlYkJhY2tGb3J3YXJkTGlzdCBwYWdlQ2FjaGVTaXplXSk6CisgICAgICAgICog
SGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJh
bWVWaWV3Lm1tOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
VmlldyBfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBpbml0U2ltcGxlSFRNTERvY3VtZW50V2l0aFN0eWxlOmZyYW1lOnBy
ZWZlcmVuY2VzOmdyb3VwTmFtZTpdKToKKworMjAxNi0xMC0xMyAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgorCiAgICAgICAgIEdldCByaWQgb2YgdGhlIEhpc3RvcnlJdGVt
VmVjdG9yIHR5cGVkZWYKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MzM5OAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM2M2U1ODE3Mzg1ZjE0ZDdi
NzlhNzAwYWRlODJkOTUwNTMyNGJkYzIuLmIyZjA3MGVhMTc1OTJmMWI5ODc1MGI1Mzk1ZjkwZjI4
OWRkMjVkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xNjA0LDcgKzE2MDQsNiBAQCBzZXQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgZmlsZWFwaS9XZWJLaXRCbG9iQnVpbGRlci5jcHAKIAogICAg
IGhpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcAotICAgIGhpc3RvcnkvQmFja0Zvcndh
cmRMaXN0LmNwcAogICAgIGhpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCiAgICAgaGlzdG9yeS9DYWNo
ZWRQYWdlLmNwcAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0uY3BwCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFj
LmNtYWtlCmluZGV4IDFlZTZlZWYwMTQ3YmY2Y2NlM2NjMTI5ODE4NTdjM2JiMjRmZDFjZjAuLjhm
YzdkOWI2NzlhOWI0OGQ0NWRiYzllMzQ1ZTIxY2UwYmU4MzBkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
TWFjLmNtYWtlCkBAIC02OTAsNyArNjkwLDYgQEAgc2V0KFdlYkNvcmVfRk9SV0FSRElOR19IRUFE
RVJTX0ZJTEVTCiAKICAgICBlZGl0aW5nL21hYy9UZXh0QWx0ZXJuYXRpdmVXaXRoUmFuZ2UuaAog
Ci0gICAgaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuaAogICAgIGhpc3RvcnkvSGlzdG9yeUl0ZW0u
aAogICAgIGhpc3RvcnkvUGFnZUNhY2hlLmgKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGNiMjJhNWE4NGMwMjdkZjAyMDdmYmNj
ODY2YzNiNDc5YWVmNTQ0ZDYuLmU3ODc3Y2I4OTA0YmYxYmRhMTQ2MDEwMTNhMTIwZTBjZWUyM2Yz
ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTUyODAsOCArNTI4MCw2IEBACiAJCUJDQTg0NkQ3MERDNjdBMzUwMDI2QzMwOSAv
KiBSZW5kZXJSZXBsaWNhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCQ0E4NDZENTBEQzY3QTM1MDAyNkMzMDkgLyogUmVuZGVyUmVwbGljYS5oICovOyB9
OwogCQlCQ0E4QzgxRTExRTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4QzgxQzEx
RTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNBOEM4MUYxMUUzRDM2OTAwODEy
RkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4QzgxRDExRTNEMzY5MDA4MTJGQjcgLyogQmFja0Zv
cndhcmRDb250cm9sbGVyLmNwcCAqLzsgfTsKLQkJQkNBOENBNUYxMUU0RTZEMTAwODEyRkI3IC8q
IEJhY2tGb3J3YXJkTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQ0E4Q0E1RDExRTRFNkQxMDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0LmNw
cCAqLzsgfTsKLQkJQkNBOENBNjAxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBOENBNUUx
MUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDQUE0ODZGMTRBMDUyNTMwMDg4RkFDNCAv
KiBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUE0ODZEMTRBMDUyNTMwMDg4RkFDNCAvKiBQbGF0Zm9ybUV2
ZW50RmFjdG9yeU1hYy5tbSAqLzsgfTsKIAkJQkNBQTQ4NzAxNEEwNTI1MzAwODhGQUM0IC8qIFBs
YXRmb3JtRXZlbnRGYWN0b3J5TWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0FBNDg2RTE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZh
Y3RvcnlNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlCQ0FBOTBDMzBBN0VCQTYwMDA4QjEyMjkgLyogU2Nyb2xsYmFyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQUE5MEMyMEE3RUJBNjAwMDhC
MTIyOSAvKiBTY3JvbGxiYXIuY3BwICovOyB9OwpAQCAtMTI4MDYsOCArMTI4MDQsNiBAQAogCQlC
Q0E4NDZENTBEQzY3QTM1MDAyNkMzMDkgLyogUmVuZGVyUmVwbGljYS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJSZXBsaWNhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDQThDODFDMTFFM0QzNjkwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xs
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFja0ZvcndhcmRDb250cm9s
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQThDODFEMTFFM0QzNjkwMDgx
MkZCNyAvKiBCYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQmFja0ZvcndhcmRDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQkNBOENBNUQxMUU0RTZEMTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkTGlz
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCYWNrRm9yd2FyZExp
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0E4Q0E1RTExRTRFNkQxMDA4
MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEJhY2tGb3J3YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FB
NDg2RDE0QTA1MjUzMDA4OEZBQzQgLyogUGxhdGZvcm1FdmVudEZhY3RvcnlNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQbGF0Zm9ybUV2ZW50RmFjdG9yeU1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNBQTQ4NkUxNEEwNTI1MzAwODhG
QUM0IC8qIFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDQUE5MEMyMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxiYXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGJhci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjY5OCw4ICsxNjY5NCw2IEBACiAJCQkJNTE3NDFEMEIw
QjA3MjU5QTAwRUQ0NDJDIC8qIEJhY2tGb3J3YXJkQ2xpZW50LmggKi8sCiAJCQkJQkNBOEM4MUQx
MUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJQkNB
OEM4MUMxMUUzRDM2OTAwODEyRkI3IC8qIEJhY2tGb3J3YXJkQ29udHJvbGxlci5oICovLAotCQkJ
CUJDQThDQTVEMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3QuY3BwICovLAotCQkJ
CUJDQThDQTVFMTFFNEU2RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3QuaCAqLywKIAkJCQk1
MUMwQUE0MDBGMkFBMTVFMDAxNjQ4QzIgLyogQ2FjaGVkRnJhbWUuY3BwICovLAogCQkJCTUxQzBB
QTM4MEYyQUExMEEwMDE2NDhDMiAvKiBDYWNoZWRGcmFtZS5oICovLAogCQkJCTUxQ0JGQzk4MEQx
MEU0ODMwMDJEQkY1MSAvKiBDYWNoZWRGcmFtZVBsYXRmb3JtRGF0YS5oICovLApAQCAtMjQwMDAs
NyArMjM5OTQsNiBAQAogCQkJCTkxQzlGMkY5MUFFM0JFQjAwMDk1QjYxQyAvKiBBWFRleHRTdGF0
ZUNoYW5nZUludGVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3NDFEMEYwQjA3MjU5QTAwRUQ0
NDJDIC8qIEJhY2tGb3J3YXJkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0E4QzgxRTEx
RTNEMzY5MDA4MTJGQjcgLyogQmFja0ZvcndhcmRDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywK
LQkJCQlCQ0E4Q0E2MDExRTRFNkQxMDA4MTJGQjcgLyogQmFja0ZvcndhcmRMaXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzEyNEVFODBDMjY0MUNEMDA5RTIzNDkgLyogQmFyUHJvcC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDYwQkI2MTYxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2NFV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc5RTYxQ0ExMjZDQTVDNDAwQjYzRThEIC8qIEJhc2VC
dXR0b25JbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLApAQCAtMjc3NzksNyArMjc3NzIsNiBAQAog
CQkJCTFBMjk5RkU3MUQ3RjVGQTYwMEE2MDA5MyAvKiBSZW5kZXJUaGVtZUNvY29hLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMjlBODEyNEIwRkJCOUNBOTAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGVN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0E4QzgxRjExRTNEMzY5MDA4MTJGQjcgLyogQmFj
a0ZvcndhcmRDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUJDQThDQTVGMTFFNEU2
RDEwMDgxMkZCNyAvKiBCYWNrRm9yd2FyZExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMx
MjRFRTcwQzI2NDFDRDAwOUUyMzQ5IC8qIEJhclByb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDYwQkI2MTUxRDBBMUJGMDAwMjIxODEyIC8qIEJhc2U2NFV0aWxpdGllcy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkzNzlFNjFDOTEyNkNBNUMzMDBCNjNFOEQgLyogQmFzZUJ1dHRvbklucHV0VHlw
ZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3Rvcnkv
QmFja0ZvcndhcmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0Zv
cndhcmRDb250cm9sbGVyLmNwcAppbmRleCAyMzE3YWQ3MjY1OWNiY2IyYzFkODA1MmIzZGJkNTNh
ZjQyZTI1ZTFkLi4xYmM4YjVhNWY2NzJlMWNlNDhhMGI1NWVjM2Y4YzFjZDE3MzRiYjhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuY3BwCkBA
IC0yNiwxOCArMjYsMTUgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJCYWNrRm9y
d2FyZENvbnRyb2xsZXIuaCIKIAotI2luY2x1ZGUgIkJhY2tGb3J3YXJkTGlzdC5oIgotI2luY2x1
ZGUgIkhpc3RvcnlJdGVtLmgiCisjaW5jbHVkZSAiQmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQmFja0ZvcndhcmRDb250cm9s
bGVyOjpCYWNrRm9yd2FyZENvbnRyb2xsZXIoUGFnZSYgcGFnZSwgUmVmUHRyPEJhY2tGb3J3YXJk
Q2xpZW50PiYmIGNsaWVudCkKK0JhY2tGb3J3YXJkQ29udHJvbGxlcjo6QmFja0ZvcndhcmRDb250
cm9sbGVyKFBhZ2UmIHBhZ2UsIFJlZjxCYWNrRm9yd2FyZENsaWVudD4mJiBjbGllbnQpCiAgICAg
OiBtX3BhZ2UocGFnZSkKICAgICAsIG1fY2xpZW50KFdURk1vdmUoY2xpZW50KSkKIHsKLSAgICBp
ZiAoIW1fY2xpZW50KQotICAgICAgICBtX2NsaWVudCA9IEJhY2tGb3J3YXJkTGlzdDo6Y3JlYXRl
KCZwYWdlKTsKIH0KIAogQmFja0ZvcndhcmRDb250cm9sbGVyOjp+QmFja0ZvcndhcmRDb250cm9s
bGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkQ29udHJvbGxlci5o
CmluZGV4IDVhMjRmOGVkZTI0NzNkM2VhOGVlNGVjMGVkNWQ4Njg5ZDhlNWNjZmYuLmUwODAxMzIz
MTEyOTAyNGFkNzJmMGZhYzc1NzNlNTY0ODEzNmNhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQmFja0ZvcndhcmRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaApAQCAtMzksNyArMzksNyBAQCBjbGFzcyBQ
YWdlOwogY2xhc3MgQmFja0ZvcndhcmRDb250cm9sbGVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShCYWNrRm9yd2FyZENvbnRyb2xsZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBCYWNrRm9yd2FyZENvbnRyb2xsZXIoUGFnZSYsIFJlZlB0cjxCYWNrRm9yd2Fy
ZENsaWVudD4mJik7CisgICAgQmFja0ZvcndhcmRDb250cm9sbGVyKFBhZ2UmLCBSZWY8QmFja0Zv
cndhcmRDbGllbnQ+JiYpOwogICAgIH5CYWNrRm9yd2FyZENvbnRyb2xsZXIoKTsKIAogICAgIEJh
Y2tGb3J3YXJkQ2xpZW50KiBjbGllbnQoKSBjb25zdCB7IHJldHVybiBtX2NsaWVudC5nZXQoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9CYWNrRm9yd2FyZExpc3QuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBiYzNiMjcwMTdiOWJmNmUzMGFmZjE5ZWU3MGU4MGVjYTFlNGQx
ZWM1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDI5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKLQotI2luY2x1ZGUgIkZyYW1l
LmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dC5oIgotI2luY2x1ZGUgIkhpc3RvcnlJdGVtLmgiCi0jaW5jbHVkZSAiTG9nZ2luZy5oIgotI2lu
Y2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJQYWdlQ2FjaGUuaCIKLSNpbmNsdWRlICJTZXJpYWxp
emVkU2NyaXB0VmFsdWUuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgY29uc3Qg
dW5zaWduZWQgRGVmYXVsdENhcGFjaXR5ID0gMTAwOwotc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5v
Q3VycmVudEl0ZW1JbmRleCA9IFVJTlRfTUFYOwotCi1CYWNrRm9yd2FyZExpc3Q6OkJhY2tGb3J3
YXJkTGlzdChQYWdlKiBwYWdlKQotICAgIDogbV9wYWdlKHBhZ2UpCi0gICAgLCBtX2N1cnJlbnQo
Tm9DdXJyZW50SXRlbUluZGV4KQotICAgICwgbV9jYXBhY2l0eShEZWZhdWx0Q2FwYWNpdHkpCi0g
ICAgLCBtX2Nsb3NlZCh0cnVlKQotICAgICwgbV9lbmFibGVkKHRydWUpCi17Ci19Ci0KLUJhY2tG
b3J3YXJkTGlzdDo6fkJhY2tGb3J3YXJkTGlzdCgpCi17Ci0gICAgQVNTRVJUKG1fY2xvc2VkKTsK
LX0KLQotdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIG5l
d0l0ZW0pCi17Ci0gICAgaWYgKCFtX2NhcGFjaXR5IHx8ICFtX2VuYWJsZWQpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICAvLyBUb3NzIGFueXRoaW5nIGluIHRoZSBmb3J3YXJkIGxpc3QgICAg
Ci0gICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpIHsKLSAgICAgICAgdW5z
aWduZWQgdGFyZ2V0U2l6ZSA9IG1fY3VycmVudCArIDE7Ci0gICAgICAgIHdoaWxlIChtX2VudHJp
ZXMuc2l6ZSgpID4gdGFyZ2V0U2l6ZSkgewotICAgICAgICAgICAgUmVmPEhpc3RvcnlJdGVtPiBp
dGVtID0gbV9lbnRyaWVzLnRha2VMYXN0KCk7Ci0gICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1v
dmUoaXRlbS5wdHIoKSk7Ci0gICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92
ZShpdGVtKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIFRvc3MgdGhlIGZpcnN0IGl0ZW0g
aWYgdGhlIGxpc3QgaXMgZ2V0dGluZyB0b28gYmlnLCBhcyBsb25nIGFzIHdlJ3JlIG5vdCB1c2lu
ZyBpdAotICAgIC8vIChvciBldmVuIGlmIHdlIGFyZSwgaWYgd2Ugb25seSB3YW50IDEgZW50cnkp
LgotICAgIGlmIChtX2VudHJpZXMuc2l6ZSgpID09IG1fY2FwYWNpdHkgJiYgKG1fY3VycmVudCB8
fCBtX2NhcGFjaXR5ID09IDEpKSB7Ci0gICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gaXRlbSA9IFdU
Rk1vdmUobV9lbnRyaWVzWzBdKTsKLSAgICAgICAgbV9lbnRyaWVzLnJlbW92ZSgwKTsKLSAgICAg
ICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0ZW0ucHRyKCkpOwotICAgICAgICBQYWdlQ2FjaGU6OnNp
bmdsZXRvbigpLnJlbW92ZShpdGVtKTsKLSAgICAgICAgLS1tX2N1cnJlbnQ7Ci0gICAgfQotCi0g
ICAgbV9lbnRyeUhhc2guYWRkKG5ld0l0ZW0ucHRyKCkpOwotICAgIG1fZW50cmllcy5pbnNlcnQo
bV9jdXJyZW50ICsgMSwgV1RGTW92ZShuZXdJdGVtKSk7Ci0gICAgKyttX2N1cnJlbnQ7Ci19Ci0K
LXZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb0JhY2soKQotewotICAgIEFTU0VSVChtX2N1cnJlbnQg
PiAwKTsKLSAgICBpZiAobV9jdXJyZW50ID4gMCkgewotICAgICAgICBtX2N1cnJlbnQtLTsKLSAg
ICB9Ci19Ci0KLXZvaWQgQmFja0ZvcndhcmRMaXN0Ojpnb0ZvcndhcmQoKQotewotICAgIEFTU0VS
VChtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSk7Ci0gICAgaWYgKG1fY3VycmVudCA8
IG1fZW50cmllcy5zaXplKCkgLSAxKSB7Ci0gICAgICAgIG1fY3VycmVudCsrOwotICAgIH0KLX0K
LQotdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmdvVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVtKQotewot
ICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSB8fCAhaXRlbSkKLSAgICAgICAgcmV0dXJuOwotICAg
ICAgICAKLSAgICB1bnNpZ25lZCBpbnQgaW5kZXggPSAwOwotICAgIGZvciAoOyBpbmRleCA8IG1f
ZW50cmllcy5zaXplKCk7ICsraW5kZXgpCi0gICAgICAgIGlmIChtX2VudHJpZXNbaW5kZXhdLnB0
cigpID09IGl0ZW0pCi0gICAgICAgICAgICBicmVhazsKLSAgICBpZiAoaW5kZXggPCBtX2VudHJp
ZXMuc2l6ZSgpKSB7Ci0gICAgICAgIG1fY3VycmVudCA9IGluZGV4OwotICAgIH0KLX0KLQotSGlz
dG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6YmFja0l0ZW0oKQotewotICAgIGlmIChtX2N1cnJl
bnQgJiYgbV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkKLSAgICAgICAgcmV0dXJuIG1f
ZW50cmllc1ttX2N1cnJlbnQgLSAxXS5wdHIoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQot
SGlzdG9yeUl0ZW0qIEJhY2tGb3J3YXJkTGlzdDo6Y3VycmVudEl0ZW0oKQotewotICAgIGlmICht
X2N1cnJlbnQgIT0gTm9DdXJyZW50SXRlbUluZGV4KQotICAgICAgICByZXR1cm4gbV9lbnRyaWVz
W21fY3VycmVudF0ucHRyKCk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUhpc3RvcnlJdGVt
KiBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRJdGVtKCkKLXsKLSAgICBpZiAobV9lbnRyaWVzLnNp
emUoKSAmJiBtX2N1cnJlbnQgPCBtX2VudHJpZXMuc2l6ZSgpIC0gMSkKLSAgICAgICAgcmV0dXJu
IG1fZW50cmllc1ttX2N1cnJlbnQgKyAxXS5wdHIoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0K
LQotdm9pZCBCYWNrRm9yd2FyZExpc3Q6OmJhY2tMaXN0V2l0aExpbWl0KGludCBsaW1pdCwgVmVj
dG9yPFJlZjxIaXN0b3J5SXRlbT4+JiBsaXN0KQotewotICAgIGxpc3QuY2xlYXIoKTsKLSAgICBp
ZiAobV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkgewotICAgICAgICB1bnNpZ25lZCBm
aXJzdCA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PGludD4obV9jdXJyZW50KSAtIGxpbWl0LCAwKTsK
LSAgICAgICAgZm9yICg7IGZpcnN0IDwgbV9jdXJyZW50OyArK2ZpcnN0KQotICAgICAgICAgICAg
bGlzdC5hcHBlbmQobV9lbnRyaWVzW2ZpcnN0XS5nZXQoKSk7Ci0gICAgfQotfQotCi12b2lkIEJh
Y2tGb3J3YXJkTGlzdDo6Zm9yd2FyZExpc3RXaXRoTGltaXQoaW50IGxpbWl0LCBWZWN0b3I8UmVm
PEhpc3RvcnlJdGVtPj4mIGxpc3QpCi17Ci0gICAgQVNTRVJUKGxpbWl0ID4gLTEpOwotICAgIGxp
c3QuY2xlYXIoKTsKLSAgICBpZiAoIW1fZW50cmllcy5zaXplKCkpCi0gICAgICAgIHJldHVybjsK
LSAgICAgICAgCi0gICAgdW5zaWduZWQgbGFzdEVudHJ5ID0gbV9lbnRyaWVzLnNpemUoKSAtIDE7
Ci0gICAgaWYgKG1fY3VycmVudCA8IGxhc3RFbnRyeSkgewotICAgICAgICBpbnQgbGFzdCA9IHN0
ZDo6bWluKG1fY3VycmVudCArIGxpbWl0LCBsYXN0RW50cnkpOwotICAgICAgICBsaW1pdCA9IG1f
Y3VycmVudCArIDE7Ci0gICAgICAgIGZvciAoOyBsaW1pdCA8PSBsYXN0OyArK2xpbWl0KQotICAg
ICAgICAgICAgbGlzdC5hcHBlbmQobV9lbnRyaWVzW2xpbWl0XS5nZXQoKSk7Ci0gICAgfQotfQot
Ci1pbnQgQmFja0ZvcndhcmRMaXN0OjpjYXBhY2l0eSgpCi17Ci0gICAgcmV0dXJuIG1fY2FwYWNp
dHk7Ci19Ci0KLXZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRDYXBhY2l0eShpbnQgc2l6ZSkKLXsg
ICAgCi0gICAgd2hpbGUgKHNpemUgPCBzdGF0aWNfY2FzdDxpbnQ+KG1fZW50cmllcy5zaXplKCkp
KSB7Ci0gICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gaXRlbSA9IG1fZW50cmllcy50YWtlTGFzdCgp
OwotICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIoKSk7Ci0gICAgICAgIFBhZ2VD
YWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOwotICAgIH0KLQotICAgIGlmICghc2l6ZSkK
LSAgICAgICAgbV9jdXJyZW50ID0gTm9DdXJyZW50SXRlbUluZGV4OwotICAgIGVsc2UgaWYgKG1f
Y3VycmVudCA+IG1fZW50cmllcy5zaXplKCkgLSAxKSB7Ci0gICAgICAgIG1fY3VycmVudCA9IG1f
ZW50cmllcy5zaXplKCkgLSAxOwotICAgIH0KLSAgICBtX2NhcGFjaXR5ID0gc2l6ZTsKLX0KLQot
Ym9vbCBCYWNrRm9yd2FyZExpc3Q6OmVuYWJsZWQoKQotewotICAgIHJldHVybiBtX2VuYWJsZWQ7
Ci19Ci0KLXZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKLXsK
LSAgICBtX2VuYWJsZWQgPSBlbmFibGVkOwotICAgIGlmICghZW5hYmxlZCkgewotICAgICAgICBp
bnQgY2FwYWNpdHkgPSBtX2NhcGFjaXR5OwotICAgICAgICBzZXRDYXBhY2l0eSgwKTsKLSAgICAg
ICAgc2V0Q2FwYWNpdHkoY2FwYWNpdHkpOwotICAgIH0KLX0KLQotaW50IEJhY2tGb3J3YXJkTGlz
dDo6YmFja0xpc3RDb3VudCgpCi17Ci0gICAgcmV0dXJuIG1fY3VycmVudCA9PSBOb0N1cnJlbnRJ
dGVtSW5kZXggPyAwIDogbV9jdXJyZW50OwotfQotCi1pbnQgQmFja0ZvcndhcmRMaXN0Ojpmb3J3
YXJkTGlzdENvdW50KCkKLXsKLSAgICByZXR1cm4gbV9jdXJyZW50ID09IE5vQ3VycmVudEl0ZW1J
bmRleCA/IDAgOiAoaW50KW1fZW50cmllcy5zaXplKCkgLSAobV9jdXJyZW50ICsgMSk7Ci19Ci0K
LUhpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdEluZGV4KGludCBpbmRleCkKLXsK
LSAgICAvLyBEbyByYW5nZSBjaGVja3Mgd2l0aG91dCBkb2luZyBtYXRoIG9uIGluZGV4IHRvIGF2
b2lkIG92ZXJmbG93LgotICAgIGlmIChpbmRleCA8IC1zdGF0aWNfY2FzdDxpbnQ+KG1fY3VycmVu
dCkpCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIAotICAgIGlmIChpbmRleCA+IGZvcndh
cmRMaXN0Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgICAgIAotICAgIHJl
dHVybiBtX2VudHJpZXNbaW5kZXggKyBtX2N1cnJlbnRdLnB0cigpOwotfQotCi1WZWN0b3I8UmVm
PEhpc3RvcnlJdGVtPj4mIEJhY2tGb3J3YXJkTGlzdDo6ZW50cmllcygpCi17Ci0gICAgcmV0dXJu
IG1fZW50cmllczsKLX0KLQotI2lmIFBMQVRGT1JNKElPUykKLXVuc2lnbmVkIEJhY2tGb3J3YXJk
TGlzdDo6Y3VycmVudCgpCi17Ci0gICAgcmV0dXJuIG1fY3VycmVudDsKLX0KLQotdm9pZCBCYWNr
Rm9yd2FyZExpc3Q6OnNldEN1cnJlbnQodW5zaWduZWQgbmV3Q3VycmVudCkKLXsKLSAgICBtX2N1
cnJlbnQgPSBuZXdDdXJyZW50OwotfQotCi1ib29sIEJhY2tGb3J3YXJkTGlzdDo6Y2xlYXJBbGxQ
YWdlQ2FjaGVzKCkKLXsKLSAgICBib29sIGRpZFJlbW92ZUF0TGVhc3RPbmVJdGVtID0gZmFsc2U7
Ci0gICAgZm9yIChhdXRvJiBpdGVtIDogbV9lbnRyaWVzKSB7Ci0gICAgICAgIGlmIChpdGVtLT5p
c0luUGFnZUNhY2hlKCkpIHsKLSAgICAgICAgICAgIGRpZFJlbW92ZUF0TGVhc3RPbmVJdGVtID0g
dHJ1ZTsKLSAgICAgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKGl0ZW0pOwot
ICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBkaWRSZW1vdmVBdExlYXN0T25lSXRlbTsKLX0K
LSNlbmRpZgotCi12b2lkIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2UoKQotewotICAgIGZvciAoYXV0
byYgaXRlbSA6IG1fZW50cmllcykKLSAgICAgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5yZW1v
dmUoaXRlbSk7Ci0gICAgbV9lbnRyaWVzLmNsZWFyKCk7Ci0gICAgbV9lbnRyeUhhc2guY2xlYXIo
KTsKLSAgICBtX3BhZ2UgPSBudWxscHRyOwotICAgIG1fY2xvc2VkID0gdHJ1ZTsKLX0KLQotYm9v
bCBCYWNrRm9yd2FyZExpc3Q6OmNsb3NlZCgpCi17Ci0gICAgcmV0dXJuIG1fY2xvc2VkOwotfQot
Ci12b2lkIEJhY2tGb3J3YXJkTGlzdDo6cmVtb3ZlSXRlbShIaXN0b3J5SXRlbSogaXRlbSkKLXsK
LSAgICBpZiAoIWl0ZW0pCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9lbnRyaWVzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGlmIChtX2VudHJp
ZXNbaV0ucHRyKCkgPT0gaXRlbSkgewotICAgICAgICAgICAgbV9lbnRyaWVzLnJlbW92ZShpKTsK
LSAgICAgICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVtKTsKLSAgICAgICAgICAgIGlmICht
X2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4IHx8IG1fY3VycmVudCA8IGkpCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAobV9jdXJyZW50ID4gaSkKLSAgICAgICAg
ICAgICAgICBtX2N1cnJlbnQtLTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IHNpemVfdCBjb3VudCA9IG1fZW50cmllcy5zaXplKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1f
Y3VycmVudCA+PSBjb3VudCkKLSAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50ID0gY291bnQg
PyBjb3VudCAtIDEgOiBOb0N1cnJlbnRJdGVtSW5kZXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLX0KLQotYm9vbCBCYWNrRm9yd2FyZExpc3Q6
OmNvbnRhaW5zSXRlbShIaXN0b3J5SXRlbSogZW50cnkpCi17Ci0gICAgcmV0dXJuIG1fZW50cnlI
YXNoLmNvbnRhaW5zKGVudHJ5KTsKLX0KLQotfTsgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0JhY2tGb3J3YXJkTGlzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1N2M0NGFiZDhjODBkNTE4NDliNzI1OGY5ODhlOWVkMTk3ODAyM2MzLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQmFja0ZvcndhcmRMaXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBCYWNrRm9yd2FyZExpc3RfaAot
I2RlZmluZSBCYWNrRm9yd2FyZExpc3RfaAotCi0jaW5jbHVkZSAiQmFja0ZvcndhcmRDbGllbnQu
aCIKLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBQYWdlOwotCi10eXBlZGVmIEhhc2hTZXQ8UmVm
UHRyPEhpc3RvcnlJdGVtPj4gSGlzdG9yeUl0ZW1IYXNoU2V0OwotCi1jbGFzcyBCYWNrRm9yd2Fy
ZExpc3QgOiBwdWJsaWMgQmFja0ZvcndhcmRDbGllbnQgewotcHVibGljOiAKLSAgICBzdGF0aWMg
UmVmPEJhY2tGb3J3YXJkTGlzdD4gY3JlYXRlKFBhZ2UqIHBhZ2UpIHsgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgQmFja0ZvcndhcmRMaXN0KHBhZ2UpKTsgfQotICAgIHZpcnR1YWwgfkJhY2tGb3J3YXJk
TGlzdCgpOwotCi0gICAgUGFnZSogcGFnZSgpIHsgcmV0dXJuIG1fcGFnZTsgfQotCi0gICAgdm9p
ZCBhZGRJdGVtKFJlZjxIaXN0b3J5SXRlbT4mJikgb3ZlcnJpZGU7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBnb0JhY2soKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdvRm9yd2FyZCgpOwot
ICAgIHZvaWQgZ29Ub0l0ZW0oSGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKLSAgICAgICAgCi0gICAg
V0VCQ09SRV9FWFBPUlQgSGlzdG9yeUl0ZW0qIGJhY2tJdGVtKCk7Ci0gICAgV0VCQ09SRV9FWFBP
UlQgSGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgSGlzdG9y
eUl0ZW0qIGZvcndhcmRJdGVtKCk7Ci0gICAgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGludCkg
b3ZlcnJpZGU7Ci0KLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGJhY2tMaXN0V2l0aExpbWl0KGlu
dCwgVmVjdG9yPFJlZjxIaXN0b3J5SXRlbT4+Jik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBm
b3J3YXJkTGlzdFdpdGhMaW1pdChpbnQsIFZlY3RvcjxSZWY8SGlzdG9yeUl0ZW0+PiYpOwotCi0g
ICAgV0VCQ09SRV9FWFBPUlQgaW50IGNhcGFjaXR5KCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzZXRDYXBhY2l0eShpbnQpOwotICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZW5hYmxlZCgpOwot
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RW5hYmxlZChib29sKTsKLSAgICBpbnQgYmFja0xp
c3RDb3VudCgpIG92ZXJyaWRlOwotICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgb3ZlcnJpZGU7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBjb250YWluc0l0ZW0oSGlzdG9yeUl0ZW0qKTsKLQot
ICAgIHZvaWQgY2xvc2UoKSBvdmVycmlkZTsKLSAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNsb3Nl
ZCgpOwotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVJdGVtKEhpc3RvcnlJdGVtKik7
Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlZjxIaXN0b3J5SXRlbT4+JiBlbnRyaWVzKCk7
Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgdW5zaWduZWQgY3VycmVudCgpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2V0Q3VycmVudCh1bnNpZ25lZCBuZXdDdXJyZW50KSBvdmVycmlkZTsKLQotICAg
IGJvb2wgY2xlYXJBbGxQYWdlQ2FjaGVzKCkgb3ZlcnJpZGU7Ci0jZW5kaWYKLQotcHJpdmF0ZToK
LSAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBCYWNrRm9yd2FyZExpc3QoUGFnZSopOwotCi0g
ICAgUGFnZSogbV9wYWdlOwotICAgIFZlY3RvcjxSZWY8SGlzdG9yeUl0ZW0+PiBtX2VudHJpZXM7
Ci0gICAgSGlzdG9yeUl0ZW1IYXNoU2V0IG1fZW50cnlIYXNoOwotICAgIHVuc2lnbmVkIG1fY3Vy
cmVudDsKLSAgICB1bnNpZ25lZCBtX2NhcGFjaXR5OwotICAgIGJvb2wgbV9jbG9zZWQ7Ci0gICAg
Ym9vbCBtX2VuYWJsZWQ7Ci19OwotICAgIAotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5k
aWYgLy8gQmFja0ZvcndhcmRMaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5j
cHAKaW5kZXggMGU0ZmJlOTY3MjY0YWJiYzc4NTlmNzE1MjYzNjQ3NDE5YzM0ZDU0OS4uYzlhMWJl
Y2ViYWE0NmFkZDkyMDBkZjM3NThhMWJjZWM3MjA1MzE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFbXB0eUNsaWVu
dHMuaCIKIAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmgiCisjaW5jbHVkZSAi
QmFja0ZvcndhcmRDbGllbnQuaCIKICNpbmNsdWRlICJDb2xvckNob29zZXIuaCIKICNpbmNsdWRl
ICJET01XcmFwcGVyV29ybGQuaCIKICNpbmNsdWRlICJEYXRhYmFzZVByb3ZpZGVyLmgiCkBAIC0x
NDAsNiArMTQxLDIxIEBAIGNsYXNzIEVtcHR5VmlzaXRlZExpbmtTdG9yZSBmaW5hbCA6IHB1Ymxp
YyBWaXNpdGVkTGlua1N0b3JlIHsKICAgICB2b2lkIGFkZFZpc2l0ZWRMaW5rKFBhZ2UmLCBMaW5r
SGFzaCkgb3ZlcnJpZGUgeyB9CiB9OwogCitjbGFzcyBFbXB0eUJhY2tGb3J3YXJkQ2xpZW50IGZp
bmFsIDogcHVibGljIEJhY2tGb3J3YXJkQ2xpZW50IHsKKyAgICB2b2lkIGFkZEl0ZW0oUmVmPEhp
c3RvcnlJdGVtPiYmKSBvdmVycmlkZSB7IH0KKyAgICB2b2lkIGdvVG9JdGVtKEhpc3RvcnlJdGVt
Kikgb3ZlcnJpZGUgeyB9CisgICAgSGlzdG9yeUl0ZW0qIGl0ZW1BdEluZGV4KGludCkgb3ZlcnJp
ZGUgeyByZXR1cm4gbnVsbHB0cjsgfQorICAgIGludCBiYWNrTGlzdENvdW50KCkgb3ZlcnJpZGUg
eyByZXR1cm4gMDsgfQorICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgb3ZlcnJpZGUgeyByZXR1
cm4gMDsgfQorICAgIHZvaWQgY2xvc2UoKSBvdmVycmlkZSB7IH0KKworI2lmIFBMQVRGT1JNKElP
UykKKyAgICB1bnNpZ25lZCBjdXJyZW50KCkgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIHZv
aWQgc2V0Q3VycmVudCh1bnNpZ25lZCkgb3ZlcnJpZGUgeyB9CisgICAgYm9vbCBjbGVhckFsbFBh
Z2VDYWNoZXMoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCit9OworCiB2b2lk
IGZpbGxXaXRoRW1wdHlDbGllbnRzKFBhZ2VDb25maWd1cmF0aW9uJiBwYWdlQ29uZmlndXJhdGlv
bikKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8RW1wdHlDaHJvbWVDbGllbnQ+IGR1bW15
Q2hyb21lQ2xpZW50OwpAQCAtMTY5LDYgKzE4NSw3IEBAIHZvaWQgZmlsbFdpdGhFbXB0eUNsaWVu
dHMoUGFnZUNvbmZpZ3VyYXRpb24mIHBhZ2VDb25maWd1cmF0aW9uKQogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxFbXB0eVByb2dyZXNzVHJhY2tlckNsaWVudD4gZHVtbXlQcm9ncmVzc1RyYWNr
ZXJDbGllbnQ7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NUcmFja2VyQ2xpZW50ID0g
JmR1bW15UHJvZ3Jlc3NUcmFja2VyQ2xpZW50LmdldCgpOwogCisgICAgcGFnZUNvbmZpZ3VyYXRp
b24uYmFja0ZvcndhcmRDbGllbnQgPSBhZG9wdFJlZihuZXcgRW1wdHlCYWNrRm9yd2FyZENsaWVu
dCk7CiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uZGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPEVtcHR5RGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQ+KCk7CiAKICAgICBwYWdl
Q29uZmlndXJhdGlvbi5hcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSA9IEFwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlOjpjcmVhdGUoU3RyaW5nKCksIFN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4
IGIxNDBhMzk3ODE4ZmMwNTlkMDNiNDcwZGRiODAxMjg3ZjMyMjAxOTkuLjdmYWVjMTQ0OWE1ZjA5
NGYwMGY4YTM5MmEyODJmMTFkZDE2MDAzZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtMTc4LDcg
KzE3OCw3IEBAIFBhZ2U6OlBhZ2UoUGFnZUNvbmZpZ3VyYXRpb24mJiBwYWdlQ29uZmlndXJhdGlv
bikKICNlbmRpZgogICAgICwgbV9zZXR0aW5ncyhTZXR0aW5nczo6Y3JlYXRlKHRoaXMpKQogICAg
ICwgbV9wcm9ncmVzcyhzdGQ6Om1ha2VfdW5pcXVlPFByb2dyZXNzVHJhY2tlcj4oKnBhZ2VDb25m
aWd1cmF0aW9uLnByb2dyZXNzVHJhY2tlckNsaWVudCkpCi0gICAgLCBtX2JhY2tGb3J3YXJkQ29u
dHJvbGxlcihzdGQ6Om1ha2VfdW5pcXVlPEJhY2tGb3J3YXJkQ29udHJvbGxlcj4oKnRoaXMsIFdU
Rk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkKKyAgICAsIG1fYmFj
a0ZvcndhcmRDb250cm9sbGVyKHN0ZDo6bWFrZV91bmlxdWU8QmFja0ZvcndhcmRDb250cm9sbGVy
PigqdGhpcywgKldURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQpKSkK
ICAgICAsIG1fbWFpbkZyYW1lKE1haW5GcmFtZTo6Y3JlYXRlKCp0aGlzLCBwYWdlQ29uZmlndXJh
dGlvbikpCiAgICAgLCBtX3RoZW1lKFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UodGhpcykpCiAg
ICAgLCBtX2VkaXRvckNsaWVudChXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uLmVkaXRvckNsaWVu
dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAyMjJhZTdiMzUxNjE5ZGVmMTBiM2ZkNmI4YmQwOGJiYzdjZDg5ZmQ4Li42NjQ3NzI1YWNk
YmUzY2JhOTY3YWM0OWFkYzFlMzA3YTc0YzljMmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU1LDYgKzU1LDggQEAKIAkJMUE4NkND
RDQxQUQ0OEE2MjAwNzRCQTg5IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE4NkNDRDMxQUQ0OEE2
MjAwNzRCQTg5IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGVJbnRlcm5hbC5oICovOyB9OwogCQkxQThE
RUQ1MDBFRTg4QjhBMDBGMjUwMjIgLyogSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOERFRDRFMEVFODhC
OEEwMEYyNTAyMiAvKiBIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5oICovOyB9OwogCQkxQThE
RUQ1MTBFRTg4QjhBMDBGMjUwMjIgLyogSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQThERUQ0RjBFRTg4
QjhBMDBGMjUwMjIgLyogSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gKi87IH07CisJCTFB
OTExOUY2MURCMDQ3MEEwMDg3RDFGRCAvKiBCYWNrRm9yd2FyZExpc3QubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTkxMTlGNDFEQjA0NzBBMDA4N0Qx
RkQgLyogQmFja0ZvcndhcmRMaXN0Lm1tICovOyB9OworCQkxQTkxMTlGNzFEQjA0NzBBMDA4N0Qx
RkQgLyogQmFja0ZvcndhcmRMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTkxMTlGNTFEQjA0NzBBMDA4N0QxRkQgLyogQmFja0ZvcndhcmRMaXN0
LmggKi87IH07CiAJCTFBQTgzRjgzMUE1QzRBRTQwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3Zp
ZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFB
QTgzRjgxMUE1QzRBRTQwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmNwcCAqLzsgfTsK
IAkJMUFBODNGODQxQTVDNEFFNDAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTgzRjgyMUE1QzRB
RTQwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmggKi87IH07CiAJCTFBQTg3OUI2MTFD
QkU5QkYwMDNDNjY0RiAvKiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBQTg3OUI0MTFDQkU5QkYwMDNDNjY0RiAv
KiBXZWJQbGF0Zm9ybVN0cmF0ZWdpZXMuaCAqLzsgfTsKQEAgLTg0OSw2ICs4NTEsOCBAQAogCQkx
QTg2Q0NEMzFBRDQ4QTYyMDA3NEJBODkgLyogV2ViQXBwbGljYXRpb25DYWNoZUludGVybmFsLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFwcGxpY2F0aW9uQ2FjaGVJbnRl
cm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQThERUQ0RTBFRTg4QjhBMDBG
MjUwMjIgLyogSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUE4REVENEYwRUU4OEI4QTAwRjI1MDIyIC8qIEhvc3RlZE5ldHNj
YXBlUGx1Z2luU3RyZWFtLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTFBOTExOUY0MURCMDQ3MEEwMDg3RDFGRCAvKiBCYWNrRm9yd2FyZExpc3QubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBCYWNrRm9yd2FyZExpc3QubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTFBOTExOUY1MURCMDQ3MEEwMDg3RDFGRCAv
KiBCYWNrRm9yd2FyZExpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFj
a0ZvcndhcmRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBQTgzRjgxMUE1
QzRBRTQwMDAyNkVDNiAvKiBXZWJEYXRhYmFzZVByb3ZpZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkRhdGFiYXNlUHJvdmlkZXIuY3BwOyBwYXRoID0gLi4v
Li4vU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMUFBODNGODIxQTVDNEFFNDAwMDI2RUM2IC8qIFdlYkRhdGFiYXNlUHJvdmlkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViRGF0YWJhc2VQcm92aWRlci5o
OyBwYXRoID0gLi4vLi4vU3RvcmFnZS9XZWJEYXRhYmFzZVByb3ZpZGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTFBQTg3OUI0MTFDQkU5QkYwMDNDNjY0RiAvKiBXZWJQbGF0Zm9y
bVN0cmF0ZWdpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGxhdGZv
cm1TdHJhdGVnaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODQ4LDYgKzE4
NTIsOCBAQAogCQkyNUE4MTc2ODAxQjU0NzRCMEVDQTE0OUUgLyogSGlzdG9yeSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMUE5MTE5RjQxREIwNDcwQTAw
ODdEMUZEIC8qIEJhY2tGb3J3YXJkTGlzdC5tbSAqLywKKwkJCQkxQTkxMTlGNTFEQjA0NzBBMDA4
N0QxRkQgLyogQmFja0ZvcndhcmRMaXN0LmggKi8sCiAJCQkJMUE2MDUxOEQxNzUwMkE1RDAwQkM2
MkY1IC8qIEJpbmFyeVByb3BlcnR5TGlzdC5jcHAgKi8sCiAJCQkJMUE2MDUxOEUxNzUwMkE1RDAw
QkM2MkY1IC8qIEJpbmFyeVByb3BlcnR5TGlzdC5oICovLAogCQkJCTFBNjA1MTkwMTc1MDJBNUQw
MEJDNjJGNSAvKiBIaXN0b3J5UHJvcGVydHlMaXN0LmggKi8sCkBAIC0yODk1LDYgKzI5MDEsNyBA
QAogCQkJCTkzRDQzNzY1MUQ1N0FCRUYwMEFCODVFQSAvKiBET01Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNENDM3NjYxRDU3QUJFRjAwQUI4NUVB
IC8qIERPTVByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRDQzNzY4MUQ1N0FC
RUYwMEFCODVFQSAvKiBET01SYW5nZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMUE5MTE5RjcxREIw
NDcwQTAwODdEMUZEIC8qIEJhY2tGb3J3YXJkTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNE
NDM3NkExRDU3QUJFRjAwQUI4NUVBIC8qIERPTVJhbmdlRXhjZXB0aW9uLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5M0Q0Mzc2QjFENTdBQkVGMDBBQjg1RUEgLyogRE9NUmFuZ2VJbnRlcm5hbC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNENDM3NkMxRDU3QUJFRjAwQUI4NUVBIC8qIERPTVJhbmdlcy5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zNTM5LDYgKzM1NDYsNyBAQAogCQkJCUNFREExMkRCMTUyQ0JF
NjgwMEQ5RTA4RCAvKiBXZWJBbHRlcm5hdGl2ZVRleHRDbGllbnQubW0gaW4gU291cmNlcyAqLywK
IAkJCQlCNkNFNUMyNDEwMEJDNUNFMDAyMTk5MzYgLyogV2ViQXBwbGljYXRpb25DYWNoZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCUE1REVGQzE0MTFENTM0NEIwMDg4NTI3MyAvKiBXZWJBcHBsaWNh
dGlvbkNhY2hlUXVvdGFNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMUE5MTE5RjYxREIw
NDcwQTAwODdEMUZEIC8qIEJhY2tGb3J3YXJkTGlzdC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkz
OTgxMTFEMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJBcmNoaXZlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM5ODEwQ0YwODI0QkYwMTAwOERGMDM4IC8qIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwubSBp
biBTb3VyY2VzICovLAogCQkJCTkzOTgxMEJDMDgyNEJGMDEwMDhERjAzOCAvKiBXZWJCYWNrRm9y
d2FyZExpc3QubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0LmggYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5L0Jh
Y2tGb3J3YXJkTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJkMTNlZjNjNDI5YzkzMTU5NjRhYjZmOWMwYjBk
ZDkzM2E3MzQxZGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9IaXN0b3J5
L0JhY2tGb3J3YXJkTGlzdC5oCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYsIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8v
d3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYkNvcmUvQmFja0ZvcndhcmRD
bGllbnQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KKworT0JKQ19DTEFTUyBXZWJWaWV3OworCit0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFdlYkNv
cmU6Okhpc3RvcnlJdGVtPj4gSGlzdG9yeUl0ZW1IYXNoU2V0OworCitjbGFzcyBCYWNrRm9yd2Fy
ZExpc3QgOiBwdWJsaWMgV2ViQ29yZTo6QmFja0ZvcndhcmRDbGllbnQgeworcHVibGljOiAKKyAg
ICBzdGF0aWMgUmVmPEJhY2tGb3J3YXJkTGlzdD4gY3JlYXRlKFdlYlZpZXcgKndlYlZpZXcpIHsg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQmFja0ZvcndhcmRMaXN0KHdlYlZpZXcpKTsgfQorICAgIHZp
cnR1YWwgfkJhY2tGb3J3YXJkTGlzdCgpOworCisgICAgV2ViVmlldyAqd2ViVmlldygpIHsgcmV0
dXJuIG1fd2ViVmlldzsgfQorCisgICAgdm9pZCBhZGRJdGVtKFJlZjxXZWJDb3JlOjpIaXN0b3J5
SXRlbT4mJikgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBnb0JhY2soKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGdvRm9yd2FyZCgpOworICAgIHZvaWQgZ29Ub0l0ZW0oV2Vi
Q29yZTo6SGlzdG9yeUl0ZW0qKSBvdmVycmlkZTsKKyAgICAgICAgCisgICAgV0VCQ09SRV9FWFBP
UlQgV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGJhY2tJdGVtKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
V2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGN1cnJlbnRJdGVtKCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
V2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGZvcndhcmRJdGVtKCk7CisgICAgV2ViQ29yZTo6SGlzdG9y
eUl0ZW0qIGl0ZW1BdEluZGV4KGludCkgb3ZlcnJpZGU7CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGJhY2tMaXN0V2l0aExpbWl0KGludCwgVmVjdG9yPFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRl
bT4+Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3J3YXJkTGlzdFdpdGhMaW1pdChpbnQs
IFZlY3RvcjxSZWY8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+PiYpOworCisgICAgV0VCQ09SRV9FWFBP
UlQgaW50IGNhcGFjaXR5KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDYXBhY2l0eShp
bnQpOworICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZW5hYmxlZCgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0RW5hYmxlZChib29sKTsKKyAgICBpbnQgYmFja0xpc3RDb3VudCgpIG92ZXJy
aWRlOworICAgIGludCBmb3J3YXJkTGlzdENvdW50KCkgb3ZlcnJpZGU7CisgICAgV0VCQ09SRV9F
WFBPUlQgYm9vbCBjb250YWluc0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKTsKKworICAgIHZv
aWQgY2xvc2UoKSBvdmVycmlkZTsKKyAgICBXRUJDT1JFX0VYUE9SVCBib29sIGNsb3NlZCgpOwor
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVt
Kik7CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFJlZjxXZWJDb3JlOjpIaXN0b3J5SXRlbT4+
JiBlbnRyaWVzKCk7CisKKyNpZiBQTEFURk9STShJT1MpCisgICAgdW5zaWduZWQgY3VycmVudCgp
IG92ZXJyaWRlOworICAgIHZvaWQgc2V0Q3VycmVudCh1bnNpZ25lZCBuZXdDdXJyZW50KSBvdmVy
cmlkZTsKKworICAgIGJvb2wgY2xlYXJBbGxQYWdlQ2FjaGVzKCkgb3ZlcnJpZGU7CisjZW5kaWYK
KworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBCYWNrRm9yd2FyZExpc3Qo
V2ViVmlldyAqKTsKKworICAgIFdlYlZpZXcqIG1fd2ViVmlldzsKKyAgICBWZWN0b3I8UmVmPFdl
YkNvcmU6Okhpc3RvcnlJdGVtPj4gbV9lbnRyaWVzOworICAgIEhpc3RvcnlJdGVtSGFzaFNldCBt
X2VudHJ5SGFzaDsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnQ7CisgICAgdW5zaWduZWQgbV9jYXBh
Y2l0eTsKKyAgICBib29sIG1fY2xvc2VkOworICAgIGJvb2wgbV9lbmFibGVkOworfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9CYWNrRm9yd2FyZExpc3QubW0KbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE5
ZGRmNTJiYzA0MWM2YTNiN2ZhMTI3NDQ2YzI1OTg5ZmIxY2U3NwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvQmFja0ZvcndhcmRMaXN0Lm1tCkBAIC0wLDAgKzEs
Mjg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVG9yY2ggTW9iaWxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJCYWNrRm9y
d2FyZExpc3QuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvUGFnZUNhY2hlLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgY29uc3QgdW5zaWduZWQgRGVmYXVsdENhcGFjaXR5
ID0gMTAwOworc3RhdGljIGNvbnN0IHVuc2lnbmVkIE5vQ3VycmVudEl0ZW1JbmRleCA9IFVJTlRf
TUFYOworCitCYWNrRm9yd2FyZExpc3Q6OkJhY2tGb3J3YXJkTGlzdChXZWJWaWV3ICp3ZWJWaWV3
KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCisgICAgLCBtX2N1cnJlbnQoTm9DdXJyZW50SXRl
bUluZGV4KQorICAgICwgbV9jYXBhY2l0eShEZWZhdWx0Q2FwYWNpdHkpCisgICAgLCBtX2Nsb3Nl
ZCh0cnVlKQorICAgICwgbV9lbmFibGVkKHRydWUpCit7Cit9CisKK0JhY2tGb3J3YXJkTGlzdDo6
fkJhY2tGb3J3YXJkTGlzdCgpCit7CisgICAgQVNTRVJUKG1fY2xvc2VkKTsKK30KKwordm9pZCBC
YWNrRm9yd2FyZExpc3Q6OmFkZEl0ZW0oUmVmPEhpc3RvcnlJdGVtPiYmIG5ld0l0ZW0pCit7Cisg
ICAgaWYgKCFtX2NhcGFjaXR5IHx8ICFtX2VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICAvLyBUb3NzIGFueXRoaW5nIGluIHRoZSBmb3J3YXJkIGxpc3QgICAgCisgICAgaWYgKG1f
Y3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5kZXgpIHsKKyAgICAgICAgdW5zaWduZWQgdGFyZ2V0
U2l6ZSA9IG1fY3VycmVudCArIDE7CisgICAgICAgIHdoaWxlIChtX2VudHJpZXMuc2l6ZSgpID4g
dGFyZ2V0U2l6ZSkgeworICAgICAgICAgICAgUmVmPEhpc3RvcnlJdGVtPiBpdGVtID0gbV9lbnRy
aWVzLnRha2VMYXN0KCk7CisgICAgICAgICAgICBtX2VudHJ5SGFzaC5yZW1vdmUoaXRlbS5wdHIo
KSk7CisgICAgICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZShpdGVtKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIFRvc3MgdGhlIGZpcnN0IGl0ZW0gaWYgdGhlIGxpc3Qg
aXMgZ2V0dGluZyB0b28gYmlnLCBhcyBsb25nIGFzIHdlJ3JlIG5vdCB1c2luZyBpdAorICAgIC8v
IChvciBldmVuIGlmIHdlIGFyZSwgaWYgd2Ugb25seSB3YW50IDEgZW50cnkpLgorICAgIGlmICht
X2VudHJpZXMuc2l6ZSgpID09IG1fY2FwYWNpdHkgJiYgKG1fY3VycmVudCB8fCBtX2NhcGFjaXR5
ID09IDEpKSB7CisgICAgICAgIFJlZjxIaXN0b3J5SXRlbT4gaXRlbSA9IFdURk1vdmUobV9lbnRy
aWVzWzBdKTsKKyAgICAgICAgbV9lbnRyaWVzLnJlbW92ZSgwKTsKKyAgICAgICAgbV9lbnRyeUhh
c2gucmVtb3ZlKGl0ZW0ucHRyKCkpOworICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJl
bW92ZShpdGVtKTsKKyAgICAgICAgLS1tX2N1cnJlbnQ7CisgICAgfQorCisgICAgbV9lbnRyeUhh
c2guYWRkKG5ld0l0ZW0ucHRyKCkpOworICAgIG1fZW50cmllcy5pbnNlcnQobV9jdXJyZW50ICsg
MSwgV1RGTW92ZShuZXdJdGVtKSk7CisgICAgKyttX2N1cnJlbnQ7Cit9CisKK3ZvaWQgQmFja0Zv
cndhcmRMaXN0Ojpnb0JhY2soKQoreworICAgIEFTU0VSVChtX2N1cnJlbnQgPiAwKTsKKyAgICBp
ZiAobV9jdXJyZW50ID4gMCkKKyAgICAgICAgbV9jdXJyZW50LS07Cit9CisKK3ZvaWQgQmFja0Zv
cndhcmRMaXN0Ojpnb0ZvcndhcmQoKQoreworICAgIEFTU0VSVChtX2N1cnJlbnQgPCBtX2VudHJp
ZXMuc2l6ZSgpIC0gMSk7CisgICAgaWYgKG1fY3VycmVudCA8IG1fZW50cmllcy5zaXplKCkgLSAx
KQorICAgICAgICBtX2N1cnJlbnQrKzsKK30KKwordm9pZCBCYWNrRm9yd2FyZExpc3Q6OmdvVG9J
dGVtKEhpc3RvcnlJdGVtKiBpdGVtKQoreworICAgIGlmICghbV9lbnRyaWVzLnNpemUoKSB8fCAh
aXRlbSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICB1bnNpZ25lZCBpbmRleCA9IDA7
CisgICAgZm9yICg7IGluZGV4IDwgbV9lbnRyaWVzLnNpemUoKTsgKytpbmRleCkgeworICAgICAg
ICBpZiAobV9lbnRyaWVzW2luZGV4XS5wdHIoKSA9PSBpdGVtKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgfQorCisgICAgaWYgKGluZGV4IDwgbV9lbnRyaWVzLnNpemUoKSkKKyAgICAgICAgbV9j
dXJyZW50ID0gaW5kZXg7Cit9CisKK0hpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6OmJhY2tJ
dGVtKCkKK3sKKyAgICBpZiAobV9jdXJyZW50ICYmIG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVt
SW5kZXgpCisgICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50IC0gMV0ucHRyKCk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK0hpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6OmN1
cnJlbnRJdGVtKCkKK3sKKyAgICBpZiAobV9jdXJyZW50ICE9IE5vQ3VycmVudEl0ZW1JbmRleCkK
KyAgICAgICAgcmV0dXJuIG1fZW50cmllc1ttX2N1cnJlbnRdLnB0cigpOworICAgIHJldHVybiBu
dWxscHRyOworfQorCitIaXN0b3J5SXRlbSogQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkSXRlbSgp
Cit7CisgICAgaWYgKG1fZW50cmllcy5zaXplKCkgJiYgbV9jdXJyZW50IDwgbV9lbnRyaWVzLnNp
emUoKSAtIDEpCisgICAgICAgIHJldHVybiBtX2VudHJpZXNbbV9jdXJyZW50ICsgMV0ucHRyKCk7
CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlz
dFdpdGhMaW1pdChpbnQgbGltaXQsIFZlY3RvcjxSZWY8SGlzdG9yeUl0ZW0+PiYgbGlzdCkKK3sK
KyAgICBsaXN0LmNsZWFyKCk7CisgICAgaWYgKG1fY3VycmVudCAhPSBOb0N1cnJlbnRJdGVtSW5k
ZXgpIHsKKyAgICAgICAgdW5zaWduZWQgZmlyc3QgPSBzdGQ6Om1heChzdGF0aWNfY2FzdDxpbnQ+
KG1fY3VycmVudCkgLSBsaW1pdCwgMCk7CisgICAgICAgIGZvciAoOyBmaXJzdCA8IG1fY3VycmVu
dDsgKytmaXJzdCkKKyAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmllc1tmaXJzdF0uZ2V0
KCkpOworICAgIH0KK30KKwordm9pZCBCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0V2l0aExp
bWl0KGludCBsaW1pdCwgVmVjdG9yPFJlZjxIaXN0b3J5SXRlbT4+JiBsaXN0KQoreworICAgIEFT
U0VSVChsaW1pdCA+IC0xKTsKKyAgICBsaXN0LmNsZWFyKCk7CisgICAgaWYgKCFtX2VudHJpZXMu
c2l6ZSgpKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIHVuc2lnbmVkIGxhc3RFbnRy
eSA9IG1fZW50cmllcy5zaXplKCkgLSAxOworICAgIGlmIChtX2N1cnJlbnQgPCBsYXN0RW50cnkp
IHsKKyAgICAgICAgaW50IGxhc3QgPSBzdGQ6Om1pbihtX2N1cnJlbnQgKyBsaW1pdCwgbGFzdEVu
dHJ5KTsKKyAgICAgICAgbGltaXQgPSBtX2N1cnJlbnQgKyAxOworICAgICAgICBmb3IgKDsgbGlt
aXQgPD0gbGFzdDsgKytsaW1pdCkKKyAgICAgICAgICAgIGxpc3QuYXBwZW5kKG1fZW50cmllc1ts
aW1pdF0uZ2V0KCkpOworICAgIH0KK30KKworaW50IEJhY2tGb3J3YXJkTGlzdDo6Y2FwYWNpdHko
KQoreworICAgIHJldHVybiBtX2NhcGFjaXR5OworfQorCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6
c2V0Q2FwYWNpdHkoaW50IHNpemUpCit7ICAgIAorICAgIHdoaWxlIChzaXplIDwgc3RhdGljX2Nh
c3Q8aW50PihtX2VudHJpZXMuc2l6ZSgpKSkgeworICAgICAgICBSZWY8SGlzdG9yeUl0ZW0+IGl0
ZW0gPSBtX2VudHJpZXMudGFrZUxhc3QoKTsKKyAgICAgICAgbV9lbnRyeUhhc2gucmVtb3ZlKGl0
ZW0ucHRyKCkpOworICAgICAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZShpdGVtKTsK
KyAgICB9CisKKyAgICBpZiAoIXNpemUpCisgICAgICAgIG1fY3VycmVudCA9IE5vQ3VycmVudEl0
ZW1JbmRleDsKKyAgICBlbHNlIGlmIChtX2N1cnJlbnQgPiBtX2VudHJpZXMuc2l6ZSgpIC0gMSkK
KyAgICAgICAgbV9jdXJyZW50ID0gbV9lbnRyaWVzLnNpemUoKSAtIDE7CisKKyAgICBtX2NhcGFj
aXR5ID0gc2l6ZTsKK30KKworYm9vbCBCYWNrRm9yd2FyZExpc3Q6OmVuYWJsZWQoKQoreworICAg
IHJldHVybiBtX2VuYWJsZWQ7Cit9CisKK3ZvaWQgQmFja0ZvcndhcmRMaXN0OjpzZXRFbmFibGVk
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2VuYWJsZWQgPSBlbmFibGVkOworICAgIGlmICghZW5h
YmxlZCkgeworICAgICAgICBpbnQgY2FwYWNpdHkgPSBtX2NhcGFjaXR5OworICAgICAgICBzZXRD
YXBhY2l0eSgwKTsKKyAgICAgICAgc2V0Q2FwYWNpdHkoY2FwYWNpdHkpOworICAgIH0KK30KKwor
aW50IEJhY2tGb3J3YXJkTGlzdDo6YmFja0xpc3RDb3VudCgpCit7CisgICAgcmV0dXJuIG1fY3Vy
cmVudCA9PSBOb0N1cnJlbnRJdGVtSW5kZXggPyAwIDogbV9jdXJyZW50OworfQorCitpbnQgQmFj
a0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlzdENvdW50KCkKK3sKKyAgICByZXR1cm4gbV9jdXJyZW50
ID09IE5vQ3VycmVudEl0ZW1JbmRleCA/IDAgOiAoaW50KW1fZW50cmllcy5zaXplKCkgLSAobV9j
dXJyZW50ICsgMSk7Cit9CisKK0hpc3RvcnlJdGVtKiBCYWNrRm9yd2FyZExpc3Q6Oml0ZW1BdElu
ZGV4KGludCBpbmRleCkKK3sKKyAgICAvLyBEbyByYW5nZSBjaGVja3Mgd2l0aG91dCBkb2luZyBt
YXRoIG9uIGluZGV4IHRvIGF2b2lkIG92ZXJmbG93LgorICAgIGlmIChpbmRleCA8IC1zdGF0aWNf
Y2FzdDxpbnQ+KG1fY3VycmVudCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAg
IGlmIChpbmRleCA+IGZvcndhcmRMaXN0Q291bnQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisgICAgICAgIAorICAgIHJldHVybiBtX2VudHJpZXNbaW5kZXggKyBtX2N1cnJlbnRdLnB0cigp
OworfQorCitWZWN0b3I8UmVmPEhpc3RvcnlJdGVtPj4mIEJhY2tGb3J3YXJkTGlzdDo6ZW50cmll
cygpCit7CisgICAgcmV0dXJuIG1fZW50cmllczsKK30KKworI2lmIFBMQVRGT1JNKElPUykKK3Vu
c2lnbmVkIEJhY2tGb3J3YXJkTGlzdDo6Y3VycmVudCgpCit7CisgICAgcmV0dXJuIG1fY3VycmVu
dDsKK30KKwordm9pZCBCYWNrRm9yd2FyZExpc3Q6OnNldEN1cnJlbnQodW5zaWduZWQgbmV3Q3Vy
cmVudCkKK3sKKyAgICBtX2N1cnJlbnQgPSBuZXdDdXJyZW50OworfQorCitib29sIEJhY2tGb3J3
YXJkTGlzdDo6Y2xlYXJBbGxQYWdlQ2FjaGVzKCkKK3sKKyAgICBib29sIGRpZFJlbW92ZUF0TGVh
c3RPbmVJdGVtID0gZmFsc2U7CisgICAgZm9yIChhdXRvJiBpdGVtIDogbV9lbnRyaWVzKSB7Cisg
ICAgICAgIGlmIChpdGVtLT5pc0luUGFnZUNhY2hlKCkpIHsKKyAgICAgICAgICAgIGRpZFJlbW92
ZUF0TGVhc3RPbmVJdGVtID0gdHJ1ZTsKKyAgICAgICAgICAgIFBhZ2VDYWNoZTo6c2luZ2xldG9u
KCkucmVtb3ZlKGl0ZW0pOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBkaWRSZW1vdmVB
dExlYXN0T25lSXRlbTsKK30KKyNlbmRpZgorCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6Y2xvc2Uo
KQoreworICAgIGZvciAoYXV0byYgaXRlbSA6IG1fZW50cmllcykKKyAgICAgICAgUGFnZUNhY2hl
OjpzaW5nbGV0b24oKS5yZW1vdmUoaXRlbSk7CisgICAgbV9lbnRyaWVzLmNsZWFyKCk7CisgICAg
bV9lbnRyeUhhc2guY2xlYXIoKTsKKyAgICBtX3dlYlZpZXcgPSBudWxscHRyOworICAgIG1fY2xv
c2VkID0gdHJ1ZTsKK30KKworYm9vbCBCYWNrRm9yd2FyZExpc3Q6OmNsb3NlZCgpCit7CisgICAg
cmV0dXJuIG1fY2xvc2VkOworfQorCit2b2lkIEJhY2tGb3J3YXJkTGlzdDo6cmVtb3ZlSXRlbShI
aXN0b3J5SXRlbSogaXRlbSkKK3sKKyAgICBpZiAoIWl0ZW0pCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9lbnRyaWVzLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmIChtX2VudHJpZXNbaV0ucHRyKCkgPT0gaXRlbSkgeworICAgICAgICAgICAg
bV9lbnRyaWVzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIG1fZW50cnlIYXNoLnJlbW92ZShpdGVt
KTsKKyAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gTm9DdXJyZW50SXRlbUluZGV4IHx8IG1f
Y3VycmVudCA8IGkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBpZiAobV9j
dXJyZW50ID4gaSkKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnQtLTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCA9IG1fZW50cmllcy5zaXplKCk7Cisg
ICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA+PSBjb3VudCkKKyAgICAgICAgICAgICAgICAg
ICAgbV9jdXJyZW50ID0gY291bnQgPyBjb3VudCAtIDEgOiBOb0N1cnJlbnRJdGVtSW5kZXg7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwor
Ym9vbCBCYWNrRm9yd2FyZExpc3Q6OmNvbnRhaW5zSXRlbShIaXN0b3J5SXRlbSogZW50cnkpCit7
CisgICAgcmV0dXJuIG1fZW50cnlIYXNoLmNvbnRhaW5zKGVudHJ5KTsKK30KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0Lm1tIGIvU291cmNl
L1dlYktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3QubW0KaW5kZXggMTI2YzdkOThl
ZTE2MGUwNmQ2YjgzNTgzOWM2NjM5NDc2Njg1NWQ5Mi4uN2I4MGQzYWVmZDZlZGY5M2IyMWM2Yjlk
ZTMxMzg4MWI4N2NiNTc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9X
ZWJCYWNrRm9yd2FyZExpc3QubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvSGlzdG9yeS9XZWJC
YWNrRm9yd2FyZExpc3QubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIldlYkJhY2tGb3J3
YXJkTGlzdC5oIgogI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCIKIAorI2lt
cG9ydCAiQmFja0ZvcndhcmRMaXN0LmgiCiAjaW1wb3J0ICJXZWJGcmFtZUludGVybmFsLmgiCiAj
aW1wb3J0ICJXZWJIaXN0b3J5SXRlbUludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJIaXN0b3J5SXRl
bVByaXZhdGUuaCIKQEAgLTM4LDcgKzM5LDYgQEAKICNpbXBvcnQgIldlYlByZWZlcmVuY2VzUHJp
dmF0ZS5oIgogI2ltcG9ydCAiV2ViVHlwZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViVmlld1By
aXZhdGUuaCIKLSNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0hpc3RvcnlJdGVtLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNpbXBvcnQg
PFdlYkNvcmUvUGFnZUNhY2hlLmg+CkBAIC04MiwxNyArODIsMTcgQEAgV2ViQmFja0ZvcndhcmRM
aXN0ICpraXQoQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3QpCiAgICAgaWYgKFdlYkJh
Y2tGb3J3YXJkTGlzdCAqd2ViQmFja0ZvcndhcmRMaXN0ID0gYmFja0ZvcndhcmRMaXN0cygpLmdl
dChiYWNrRm9yd2FyZExpc3QpKQogICAgICAgICByZXR1cm4gd2ViQmFja0ZvcndhcmRMaXN0Owog
Ci0gICAgcmV0dXJuIFtbW1dlYkJhY2tGb3J3YXJkTGlzdCBhbGxvY10gaW5pdFdpdGhCYWNrRm9y
d2FyZExpc3Q6YmFja0ZvcndhcmRMaXN0XSBhdXRvcmVsZWFzZV07CisgICAgcmV0dXJuIFtbW1dl
YkJhY2tGb3J3YXJkTGlzdCBhbGxvY10gaW5pdFdpdGhCYWNrRm9yd2FyZExpc3Q6KmJhY2tGb3J3
YXJkTGlzdF0gYXV0b3JlbGVhc2VdOwogfQogCi0tIChpZClpbml0V2l0aEJhY2tGb3J3YXJkTGlz
dDooUGFzc1JlZlB0cjxCYWNrRm9yd2FyZExpc3Q+KWJhY2tGb3J3YXJkTGlzdAorLSAoaWQpaW5p
dFdpdGhCYWNrRm9yd2FyZExpc3Q6KFJlZjxCYWNrRm9yd2FyZExpc3Q+JiYpYmFja0ZvcndhcmRM
aXN0CiB7ICAgCiAgICAgV2ViQ29yZVRocmVhZFZpb2xhdGlvbkNoZWNrUm91bmRPbmUoKTsKICAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAgICAgcmV0dXJuIG5p
bDsKIAotICAgIF9wcml2YXRlID0gcmVpbnRlcnByZXRfY2FzdDxXZWJCYWNrRm9yd2FyZExpc3RQ
cml2YXRlKj4oYmFja0ZvcndhcmRMaXN0LmxlYWtSZWYoKSk7CisgICAgX3ByaXZhdGUgPSByZWlu
dGVycHJldF9jYXN0PFdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUqPigmYmFja0ZvcndhcmRMaXN0
LmxlYWtSZWYoKSk7CiAgICAgYmFja0ZvcndhcmRMaXN0cygpLnNldChjb3JlKHNlbGYpLCBzZWxm
KTsKICAgICByZXR1cm4gc2VsZjsKIH0KQEAgLTMzMiwxMiArMzMyLDEyIEBAIHN0YXRpYyBib29s
IGJ1bXBlckNhckJhY2tGb3J3YXJkSGFja05lZWRlZCgpCiAKIC0gKHZvaWQpc2V0UGFnZUNhY2hl
U2l6ZTooTlNVSW50ZWdlcilzaXplCiB7Ci0gICAgW2tpdChjb3JlKHNlbGYpLT5wYWdlKCkpIHNl
dFVzZXNQYWdlQ2FjaGU6c2l6ZSAhPSAwXTsKKyAgICBbY29yZShzZWxmKS0+d2ViVmlldygpIHNl
dFVzZXNQYWdlQ2FjaGU6c2l6ZSAhPSAwXTsKIH0KIAogLSAoTlNVSW50ZWdlcilwYWdlQ2FjaGVT
aXplCiB7Ci0gICAgcmV0dXJuIFtraXQoY29yZShzZWxmKS0+cGFnZSgpKSB1c2VzUGFnZUNhY2hl
XSA/IFBhZ2VDYWNoZTo6c2luZ2xldG9uKCkubWF4U2l6ZSgpIDogMDsKKyAgICByZXR1cm4gW2Nv
cmUoc2VsZiktPndlYlZpZXcoKSB1c2VzUGFnZUNhY2hlXSA/IFBhZ2VDYWNoZTo6c2luZ2xldG9u
KCkubWF4U2l6ZSgpIDogMDsKIH0KIAogLSAoaW50KWJhY2tMaXN0Q291bnQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJLaXQvbWFjL0hpc3RvcnkvV2ViQmFja0ZvcndhcmRMaXN0SW50ZXJuYWwuaApp
bmRleCAzYTMwYjhhYjMwNGZhZDIzZDU5NjAyN2Y5YzNjZGFmM2ZhYWQyNzRmLi44ZGUwZTMxOWQ2
YmFlMWFkNDg5YzFlZTI4ZjU0YzI4YTIxMTcyMGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9IaXN0b3J5L1dlYkJhY2tGb3J3YXJkTGlzdEludGVybmFsLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvSGlzdG9yeS9XZWJCYWNrRm9yd2FyZExpc3RJbnRlcm5hbC5oCkBAIC0yOSwxMyAr
MjksMTEgQEAKICNpbXBvcnQgPFdlYktpdExlZ2FjeS9XZWJCYWNrRm9yd2FyZExpc3QuaD4KICNp
bXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKLW5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEJh
Y2tGb3J3YXJkTGlzdDsKLX0KIAotV2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0KiBjb3JlKFdlYkJh
Y2tGb3J3YXJkTGlzdCAqKTsKLVdlYkJhY2tGb3J3YXJkTGlzdCAqa2l0KFdlYkNvcmU6OkJhY2tG
b3J3YXJkTGlzdCopOworQmFja0ZvcndhcmRMaXN0KiBjb3JlKFdlYkJhY2tGb3J3YXJkTGlzdCAq
KTsKK1dlYkJhY2tGb3J3YXJkTGlzdCAqa2l0KEJhY2tGb3J3YXJkTGlzdCopOwogCiBAaW50ZXJm
YWNlIFdlYkJhY2tGb3J3YXJkTGlzdCAoKQotLSAoaWQpaW5pdFdpdGhCYWNrRm9yd2FyZExpc3Q6
KFBhc3NSZWZQdHI8V2ViQ29yZTo6QmFja0ZvcndhcmRMaXN0PiliYWNrRm9yd2FyZExpc3Q7Cist
IChpZClpbml0V2l0aEJhY2tGb3J3YXJkTGlzdDooUmVmPEJhY2tGb3J3YXJkTGlzdD4mJiliYWNr
Rm9yd2FyZExpc3Q7CiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCmluZGV4IGI0ZjUzNTg0MzE1MmU1Y2Jk
MWViNzdkZGViY2UyYzZjZjczNGIyMDEuLjgyMTFkMzY2MTE5OTFlODExODU2MjFkNmYxZjIzZTY3
Nzk4MGQ4ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQg
IldlYkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAKKyNpbXBvcnQgIkJhY2tGb3J3YXJkTGlzdC5oIgog
I2ltcG9ydCAiRE9NRWxlbWVudEludGVybmFsLmgiCiAjaW1wb3J0ICJET01IVE1MRm9ybUVsZW1l
bnRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCkBAIC03NSw3ICs3
Niw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL0F1dGhlbnRpY2F0aW9uQ0YuaD4KICNpbXBvcnQgPFdl
YkNvcmUvQXV0aGVudGljYXRpb25NYWMuaD4KICNpbXBvcnQgPFdlYkNvcmUvQmFja0ZvcndhcmRD
b250cm9sbGVyLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0JhY2tGb3J3YXJkTGlzdC5oPgogI2ltcG9y
dCA8V2ViQ29yZS9DYWNoZWRGcmFtZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DaHJvbWUuaD4KICNp
bXBvcnQgPFdlYkNvcmUvRE5TLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYkZyYW1lVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVW
aWV3Lm1tCmluZGV4IGRkODNlZTZkYThhYmQ0YzA0YTI2YWI1NzFmNTk4NjMxZmFlOWYwZmYuLjVl
YzE5Nzg1ZGE3Mjk3YjFhMjQ0YzU3NjMyMDcwYzRiZGU5NDZiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQg
IldlYkZyYW1lVmlldy5oIgogCisjaW1wb3J0ICJCYWNrRm9yd2FyZExpc3QuaCIKICNpbXBvcnQg
IldlYkNsaXBWaWV3LmgiCiAjaW1wb3J0ICJXZWJEYXRhU291cmNlUHJpdmF0ZS5oIgogI2ltcG9y
dCAiV2ViRG9jdW1lbnQuaCIKQEAgLTUyLDcgKzUzLDYgQEAKICNpbXBvcnQgIldlYlZpZXdQcml2
YXRlLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL05TVVJMUmVxdWVzdC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvQmFja0Zvcndh
cmRMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0RyYWdDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL0V2ZW50SGFuZGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZS5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGMyM2U2MmNjYmJmMDY1NTAzYWFmZTZiYzVl
ZDJjMjNjMjY4MmY2ZjIuLmJlZDQwODQxNWUwMTY3YjliNTU3ZmY4OTU1YzBkZTFhOTVjMTEyZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTMxLDYgKzMxLDcgQEAKICNp
bXBvcnQgIldlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViVmlld0RhdGEuaCIKIAorI2lt
cG9ydCAiQmFja0ZvcndhcmRMaXN0LmgiCiAjaW1wb3J0ICJET01DU1NTdHlsZURlY2xhcmF0aW9u
SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTURvY3VtZW50SW50ZXJuYWwuaCIKICNpbXBvcnQgIkRP
TUludGVybmFsLmgiCkBAIC0xMjEsNyArMTIyLDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvQW5pbWF0
aW9uQ29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9CYWNrRm9yd2FyZENvbnRyb2xsZXIuaD4KLSNpbXBvcnQg
PFdlYkNvcmUvQmFja0ZvcndhcmRMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0NGTmV0d29ya1NQ
SS5oPgogI2ltcG9ydCA8V2ViQ29yZS9DaHJvbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ29sb3JN
YWMuaD4KQEAgLTEwMzIsNiArMTAzMiw4IEBAIHN0YXRpYyB2b2lkIFdlYktpdEluaXRpYWxpemVH
YW1lcGFkUHJvdmlkZXJJZk5lY2Vzc2FyeSgpCiAgICAgcGFnZUNvbmZpZ3VyYXRpb24uaW5zcGVj
dG9yQ2xpZW50ID0gbmV3IFdlYkluc3BlY3RvckNsaWVudChzZWxmKTsKICNlbmRpZgogCisgICAg
cGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGllbnQgPSBCYWNrRm9yd2FyZExpc3Q6OmNy
ZWF0ZShzZWxmKTsKKwogI2lmIEVOQUJMRShBUFBMRV9QQVkpCiAgICAgcGFnZUNvbmZpZ3VyYXRp
b24ucGF5bWVudENvb3JkaW5hdG9yQ2xpZW50ID0gbmV3IFdlYlBheW1lbnRDb29yZGluYXRvckNs
aWVudCgpOwogI2VuZGlmCkBAIC0xMjgxLDYgKzEyODMsNyBAQCBzdGF0aWMgdm9pZCBXZWJLaXRJ
bml0aWFsaXplR2FtZXBhZFByb3ZpZGVySWZOZWNlc3NhcnkoKQogICAgIHBhZ2VDb25maWd1cmF0
aW9uLnBheW1lbnRDb29yZGluYXRvckNsaWVudCA9IG5ldyBXZWJQYXltZW50Q29vcmRpbmF0b3JD
bGllbnQoKTsKICNlbmRpZgogCisgICAgcGFnZUNvbmZpZ3VyYXRpb24uYmFja0ZvcndhcmRDbGll
bnQgPSBCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZShzZWxmKTsKICAgICBwYWdlQ29uZmlndXJhdGlv
bi5pbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViSW5zcGVjdG9yQ2xpZW50KHNlbGYpOwogICAgIHBh
Z2VDb25maWd1cmF0aW9uLmxvYWRlckNsaWVudEZvck1haW5GcmFtZSA9IG5ldyBXZWJGcmFtZUxv
YWRlckNsaWVudDsKICAgICBwYWdlQ29uZmlndXJhdGlvbi5wcm9ncmVzc1RyYWNrZXJDbGllbnQg
PSBuZXcgV2ViUHJvZ3Jlc3NUcmFja2VyQ2xpZW50KHNlbGYpOwo=
</data>
<flag name="review"
          id="314669"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>