<?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>173825</bug_id>
          
          <creation_ts>2017-06-25 14:05:46 -0700</creation_ts>
          <short_desc>[WTF] Drop Thread::create(obsolete things) API since we can use lambda</short_desc>
          <delta_ts>2017-06-26 11:19:42 -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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1322722</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-25 14:05:46 -0700</bug_when>
    <thetext>[WTF] Drop Thread::create(obsolete things) API since we can use lambda</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322723</commentid>
    <comment_count>1</comment_count>
      <attachid>313814</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-25 14:08:04 -0700</bug_when>
    <thetext>Created attachment 313814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322724</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-25 14:09:17 -0700</bug_when>
    <thetext>Attachment 313814 did not pass style-queue:


ERROR: Source/WebCore/platform/network/cf/LoaderRunLoopCF.cpp:59:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 2 in 27 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>1322726</commentid>
    <comment_count>3</comment_count>
      <attachid>313815</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-25 14:13:27 -0700</bug_when>
    <thetext>Created attachment 313815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322728</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-25 14:16:12 -0700</bug_when>
    <thetext>Attachment 313815 did not pass style-queue:


ERROR: Source/WebCore/platform/network/cf/LoaderRunLoopCF.cpp:59:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 2 in 27 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>1322729</commentid>
    <comment_count>5</comment_count>
      <attachid>313816</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-25 14:21:00 -0700</bug_when>
    <thetext>Created attachment 313816
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322730</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-25 14:23:10 -0700</bug_when>
    <thetext>Attachment 313816 did not pass style-queue:


ERROR: Source/WebCore/platform/network/cf/LoaderRunLoopCF.cpp:59:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 27 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>1322740</commentid>
    <comment_count>7</comment_count>
      <attachid>313816</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-06-25 16:11:28 -0700</bug_when>
    <thetext>Comment on attachment 313816
Patch

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

&gt; Source/WebCore/bindings/js/GCController.cpp:104
&gt; +    RefPtr&lt;Thread&gt; thread = Thread::create(&quot;WebCore: GCController&quot;, collect);

This is the one not compiling on Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322750</commentid>
    <comment_count>8</comment_count>
      <attachid>313818</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-25 19:52:05 -0700</bug_when>
    <thetext>Created attachment 313818
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322751</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-06-25 19:55:14 -0700</bug_when>
    <thetext>Attachment 313818 did not pass style-queue:


ERROR: Source/WebCore/platform/network/cf/LoaderRunLoopCF.cpp:59:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322879</commentid>
    <comment_count>10</comment_count>
      <attachid>313818</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-06-26 10:25:21 -0700</bug_when>
    <thetext>Comment on attachment 313818
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322899</commentid>
    <comment_count>11</comment_count>
      <attachid>313818</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-06-26 10:55:20 -0700</bug_when>
    <thetext>Comment on attachment 313818
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322919</commentid>
    <comment_count>12</comment_count>
      <attachid>313818</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-26 11:19:41 -0700</bug_when>
    <thetext>Comment on attachment 313818
Patch

Clearing flags on attachment: 313818

Committed r218816: &lt;http://trac.webkit.org/changeset/218816&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322920</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-26 11:19:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313814</attachid>
            <date>2017-06-25 14:08:04 -0700</date>
            <delta_ts>2017-06-25 14:13:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173825-20170626060802.patch</filename>
            <type>text/plain</type>
            <size>41656</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZTFmNmE5ZmJmYzJmNGM1NWZjNjZhNTIzZDIzYWU2NmUwZTZlMTdiLi44NmUzNjZjNWUwZTI2N2M0
NTE5ZTYyZWFlNDBmNjE2Yzg5YWU5MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNy0wNi0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBEcm9wIFRocmVhZDo6Y3JlYXRlKG9ic29sZXRlIHRoaW5n
cykgQVBJIHNpbmNlIHdlIGNhbiB1c2UgbGFtYmRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChzdGFydFRpbWVvdXRU
aHJlYWRJZk5lZWRlZCk6CisgICAgICAgICh0aW1lb3V0VGhyZWFkTWFpbik6IERlbGV0ZWQuCisK
IDIwMTctMDYtMjUgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAg
ICAgICAgIFJlbW92ZSBleGNlc3NpdmUgaGVhZGVycyBmcm9tIEphdmFTY3JpcHRDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IGExY2RiYjNjZGJjN2U5MDNhMmZlNDMzMWJiZWNiMTM2MTIyMzI4NWMuLmQ0ZGM4YTc2ZmZhMDAy
YmNlNTY5YzU3OTJkOTU3NzM4YzI2OTQ4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMDYt
MjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dU
Rl0gRHJvcCBUaHJlYWQ6OmNyZWF0ZShvYnNvbGV0ZSB0aGluZ3MpIEFQSSBzaW5jZSB3ZSBjYW4g
dXNlIGxhbWJkYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczODI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhyZWFkOjpjcmVhdGUoVGhyZWFkRnVuY3Rpb24sIHZvaWQqIGRhdGEsIGNvbnN0IGNoYXIq
IG5hbWUpIGlzIGEgYml0IG9sZCBBUEkuCisgICAgICAgIFNpbmNlIHdlIGhhdmUgQysrIGxhbWJk
YSwgdGhlIGFib3ZlIEFQSSBpcyBzaW1wbHkgdW5uZWNlc3NhcnkuIEFuZCBDKysgbGFtYmRhCisg
ICAgICAgIGJhc2VkIG9uZSBpcyBiZXR0ZXIgc2luY2UgdGhlIGFib3ZlIEFQSSBuZWVkcyBjYXN0
aW5nIGRhdGEgdG8gYW5kIGZyb20gdm9pZCouCisKKyAgICAgICAgKiB3dGYvUGFyYWxsZWxKb2Jz
R2VuZXJpYy5jcHA6CisgICAgICAgIChXVEY6OlBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFBy
aXZhdGU6OnRyeUxvY2tGb3IpOgorICAgICAgICAoV1RGOjpQYXJhbGxlbEVudmlyb25tZW50OjpU
aHJlYWRQcml2YXRlOjp3b3JrZXJUaHJlYWQpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9QYXJh
bGxlbEpvYnNHZW5lcmljLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAg
ICogd3RmL1RocmVhZGluZ1dpbi5jcHA6CisgICAgICAgIChXVEY6OmNyZWF0ZVRocmVhZCk6CisK
IDIwMTctMDYtMjUgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAg
ICAgICAgIFJlbW92ZSBleGNlc3NpdmUgaGVhZGVycyBmcm9tIEphdmFTY3JpcHRDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNDJmZDRhYjJmY2JhZTU4ZDM1ZjMxMzE1ZDdlMTQzNTRmZGU2YzcyZi4uODdjYjcy
NGY2OTRjZTNlMjI2ZjExODIwMmZiZjExMTVmODI3MjM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDY2IEBACisyMDE3LTA2LTI1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtXVEZdIERyb3AgVGhyZWFkOjpjcmVhdGUob2Jzb2xldGUgdGhpbmdzKSBB
UEkgc2luY2Ugd2UgY2FuIHVzZSBsYW1iZGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MzgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OklEQlNlcnZlcjo6SURCU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjpkYXRhYmFzZVRocmVhZEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3lu
Y0F1ZGlvRGVjb2Rlcjo6QXN5bmNBdWRpb0RlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNBdWRpb0RlY29kZXI6OnRocmVhZEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVSZW5kZXJFbnRyeSk6IERl
bGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpzdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWRTdGFydCk6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6Z2NUaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVh
ZEZvckRlYnVnZ2luZyk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6b3Blbik6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWRTdGFydCk6IERlbGV0ZWQuCisg
ICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmg6CisgICAgICAgICogcGFnZS9SZXNv
dXJjZVVzYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VUaHJl
YWQ6OmNyZWF0ZVRocmVhZElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNh
Z2VUaHJlYWQ6OnRocmVhZENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1Jlc291
cmNlVXNhZ2VUaHJlYWQuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJl
YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpjcmVhdGVUaHJlYWRJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OnRocmVhZENhbGxi
YWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RocmVhZDo6dGhyZWFk
Qm9keSk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKFdlYkNvcmU6OmRhdGFiYXNlTG9hZGVyRW50cnkpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJD
b252b2x2ZXI6OlJldmVyYkNvbnZvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5k
VGhyZWFkRW50cnkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjp1c2VCYWNrZ3Jv
dW5kVGhyZWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29w
Q0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZGVyUnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlOjpydW5Mb2FkZXJUaHJlYWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTWFuYWdlcjo6
c3RhcnRUaHJlYWRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTWFuYWdlcjo6d29y
a2VyVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE1hbmFnZXIu
aDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6
d29ya2VyVGhyZWFkU3RhcnQpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhy
ZWFkLmg6CisKIDIwMTctMDYtMjUgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4
LnJ1PgogCiAgICAgICAgIFJlbW92ZSBleGNlc3NpdmUgaGVhZGVycyBmcm9tIFdlYkNvcmUvcGxh
dGZvcm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggN2YwZmNmZDQ1MzE2N2Y1YjVhMDU2ZGFhNjNjNmU4NzEwM2U5YWIz
My4uYjgxZjJlMjNlODJlYmZjNzU0ZDY5YzdjZGExOTRiZTNlZWE2ZjJhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxNy0wNi0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBbV1RGXSBEcm9wIFRocmVhZDo6Y3JlYXRlKG9ic29sZXRlIHRo
aW5ncykgQVBJIHNpbmNlIHdlIGNhbiB1c2UgbGFtYmRhCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpzdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlVGhyZWFkOjp0aHJlYWRFbnRyeVBvaW50Q2FsbGJhY2spOiBEZWxldGVkLgorICAg
ICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5oOgorCiAyMDE3LTA2LTE2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFZpc3VhbCBT
dHVkaW8gMjAxNyA2NC1iaXQgYnVpbGQgYWZ0ZXIgcjIxODI1OApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApp
bmRleCA2ZjE3NmE5MWJjMjRiMTRlMDM5YTBlNWQzODA3NDViMWRhNmM4ZjU4Li5hNzFmZTc2M2Fj
OTRjM2RkNjMzZmY3NGQxZDZkNWM5MTVhODllNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAt
MzE3MywyMiArMzE3MywyMCBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpOwog
c3RhdGljIGRvdWJsZSBzX2Rlc2lyZWRUaW1lb3V0Owogc3RhdGljIGRvdWJsZSBzX3RpbWVvdXRN
dWx0aXBsaWVyID0gMS4wOwogCi1zdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHRp
bWVvdXRUaHJlYWRNYWluKHZvaWQqKQotewotICAgIFNlY29uZHMgdGltZW91dER1cmF0aW9uKHNf
ZGVzaXJlZFRpbWVvdXQgKiBzX3RpbWVvdXRNdWx0aXBsaWVyKTsKLSAgICBzbGVlcCh0aW1lb3V0
RHVyYXRpb24pOwotICAgIGRhdGFMb2coIlRpbWVkIG91dCBhZnRlciAiLCB0aW1lb3V0RHVyYXRp
b24sICIgc2Vjb25kcyFcbiIpOwotICAgIENSQVNIKCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHN0YXJ0
VGltZW91dFRocmVhZElmTmVlZGVkKCkKIHsKICAgICBpZiAoY2hhciogdGltZW91dFN0cmluZyA9
IGdldGVudigiSlNDVEVTVF90aW1lb3V0IikpIHsKICAgICAgICAgaWYgKHNzY2FuZih0aW1lb3V0
U3RyaW5nLCAiJWxmIiwgJnNfZGVzaXJlZFRpbWVvdXQpICE9IDEpIHsKICAgICAgICAgICAgIGRh
dGFMb2coIldBUk5JTkc6IHRpbWVvdXQgc3RyaW5nIGlzIG1hbGZvcm1lZCwgZ290ICIsIHRpbWVv
dXRTdHJpbmcsCiAgICAgICAgICAgICAgICAgIiBidXQgZXhwZWN0ZWQgYSBudW1iZXIuIE5vdCB1
c2luZyBhIHRpbWVvdXQuXG4iKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBUaHJlYWQ6
OmNyZWF0ZSh0aW1lb3V0VGhyZWFkTWFpbiwgMCwgImpzYyBUaW1lb3V0IFRocmVhZCIpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgVGhyZWFkOjpjcmVhdGUoImpzYyBUaW1lb3V0IFRo
cmVhZCIsIFtdICgpIHsKKyAgICAgICAgICAgICAgICBTZWNvbmRzIHRpbWVvdXREdXJhdGlvbihz
X2Rlc2lyZWRUaW1lb3V0ICogc190aW1lb3V0TXVsdGlwbGllcik7CisgICAgICAgICAgICAgICAg
c2xlZXAodGltZW91dER1cmF0aW9uKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJUaW1lZCBv
dXQgYWZ0ZXIgIiwgdGltZW91dER1cmF0aW9uLCAiIHNlY29uZHMhXG4iKTsKKyAgICAgICAgICAg
ICAgICBDUkFTSCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuY3BwIGIvU291cmNl
L1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAKaW5kZXggY2NlMTEwNmQ0NjdiNzIwODNj
MWVkYjIxM2FkNTljNDQwMzE3YTRlZS4uYWFjYzdjY2MzNTU2NmZmNjlkM2EwYzIxYjZjNmEyOTQz
NzU1YzM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAKQEAgLTkzLDgg
KzkzLDIyIEBAIGJvb2wgUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0ZTo6dHJ5TG9j
a0ZvcihQYXJhbGxlbEVudmlyb25tZW50KiBwYXJlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIW1fdGhyZWFkKQotICAgICAgICBtX3RocmVhZCA9IFRocmVhZDo6
Y3JlYXRlKCZQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjp3b3JrZXJUaHJlYWQs
IHRoaXMsICJQYXJhbGxlbCB3b3JrZXIiKTsKKyAgICBpZiAoIW1fdGhyZWFkKSB7CisgICAgICAg
IG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIlBhcmFsbGVsIHdvcmtlciIsIFt0aGlzXSB7Cisg
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisKKyAgICAgICAgICAgIHdoaWxl
IChtX3RocmVhZCkgeworICAgICAgICAgICAgICAgIGlmIChtX3J1bm5pbmcpIHsKKyAgICAgICAg
ICAgICAgICAgICAgKCptX3RocmVhZEZ1bmN0aW9uKShtX3BhcmFtZXRlcnMpOworICAgICAgICAg
ICAgICAgICAgICBtX3J1bm5pbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJl
bnQgPSAwOworICAgICAgICAgICAgICAgICAgICBtX3RocmVhZENvbmRpdGlvbi5ub3RpZnlPbmUo
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtX3RocmVhZENvbmRpdGlv
bi53YWl0KG1fbXV0ZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CiAKICAg
ICBpZiAobV90aHJlYWQpCiAgICAgICAgIG1fcGFyZW50ID0gcGFyZW50OwpAQCAtMTIxLDIyICsx
MzUsNSBAQCB2b2lkIFBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFByaXZhdGU6OndhaXRGb3JG
aW5pc2goKQogICAgICAgICBtX3RocmVhZENvbmRpdGlvbi53YWl0KG1fbXV0ZXgpOwogfQogCi12
b2lkIFBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFByaXZhdGU6OndvcmtlclRocmVhZCh2b2lk
KiB0aHJlYWREYXRhKQotewotICAgIFRocmVhZFByaXZhdGUqIHNoYXJlZFRocmVhZCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8VGhyZWFkUHJpdmF0ZSo+KHRocmVhZERhdGEpOwotICAgIExvY2tIb2xkZXIg
bG9jayhzaGFyZWRUaHJlYWQtPm1fbXV0ZXgpOwotCi0gICAgd2hpbGUgKHNoYXJlZFRocmVhZC0+
bV90aHJlYWQpIHsKLSAgICAgICAgaWYgKHNoYXJlZFRocmVhZC0+bV9ydW5uaW5nKSB7Ci0gICAg
ICAgICAgICAoKnNoYXJlZFRocmVhZC0+bV90aHJlYWRGdW5jdGlvbikoc2hhcmVkVGhyZWFkLT5t
X3BhcmFtZXRlcnMpOwotICAgICAgICAgICAgc2hhcmVkVGhyZWFkLT5tX3J1bm5pbmcgPSBmYWxz
ZTsKLSAgICAgICAgICAgIHNoYXJlZFRocmVhZC0+bV9wYXJlbnQgPSAwOwotICAgICAgICAgICAg
c2hhcmVkVGhyZWFkLT5tX3RocmVhZENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHNoYXJlZFRocmVhZC0+bV90aHJlYWRDb25kaXRpb24ud2FpdChzaGFyZWRUaHJl
YWQtPm1fbXV0ZXgpOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAjZW5kaWYgLy8g
RU5BQkxFKFRIUkVBRElOR19HRU5FUklDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFy
YWxsZWxKb2JzR2VuZXJpYy5oIGIvU291cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5o
CmluZGV4IGEyMGNhYjYxZWU3OWNlYWJkNTRlNjI3N2NlYjU3ZGY2OGU2NmE5MGQuLjdmNzA4MGM1
NGMyOGRhZTY0M2MyYTg2NjFkM2Q2MjM0YTkyZDFkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEpv
YnNHZW5lcmljLmgKQEAgLTY0LDggKzY0LDYgQEAgY2xhc3MgUGFyYWxsZWxFbnZpcm9ubWVudCB7
CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUaHJlYWRQcml2YXRlKCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgd29ya2VyVGhyZWFkKHZvaWQqKTsKLQogICAg
IHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxUaHJlYWQ+IG1fdGhyZWFkOwogICAgICAgICBib29s
IG1fcnVubmluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRp
bmcuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCA3ODk2ZTljMDVhMmNl
ZmVmODVjNTc1Y2Q5NmI0M2I3M2RlNzM0NTRiLi5kZGMyOGMyYTU0YjMyYTFhNjY0Y2EzYjA5N2Yz
YWJlMmY3Yzg2Zjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTExMSwxMyArMTExLDYgQEAgUmVm
UHRyPFRocmVhZD4gVGhyZWFkOjpjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgRnVuY3Rpb248dm9p
ZCgpPiYmIGVudHJ5UG9pbnQpCiAgICAgcmV0dXJuIFRocmVhZDo6Y3JlYXRlSW50ZXJuYWwodGhy
ZWFkRW50cnlQb2ludCwgY29udGV4dCwgbmFtZSk7CiB9CiAKLVJlZlB0cjxUaHJlYWQ+IFRocmVh
ZDo6Y3JlYXRlKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbnN0IGNo
YXIqIG5hbWUpCi17Ci0gICAgcmV0dXJuIFRocmVhZDo6Y3JlYXRlKG5hbWUsIFtlbnRyeVBvaW50
LCBkYXRhXSB7Ci0gICAgICAgIGVudHJ5UG9pbnQoZGF0YSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQg
VGhyZWFkOjpkaWRFeGl0KCkKIHsKICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxv
Y2tlcihtX211dGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCmluZGV4IDVkNWIxNjIwYzE4ZGM0
Y2IyMGVhYWU3ZWI1OTcxYmNmNWE5ZGQ2MTQuLmJkNjE1ZmI5MmM2NDJlNThlMGJhMWM1NzRjYWM0
ZDc2ODFlOWYyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcApAQCAtNTE2LDcgKzUxNiw5IEBA
IERXT1JEIGFic29sdXRlVGltZVRvV2FpdFRpbWVvdXRJbnRlcnZhbChkb3VibGUgYWJzb2x1dGVU
aW1lKQogLy8gUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBjb2RlIHdoZW4gPHJkYXI6Ly9wcm9ibGVt
LzMxNzkzMjEzPiBpcyBmaXhlZC4KIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVh
ZEZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBkYXRhLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKQog
ewotICAgIHJldHVybiBUaHJlYWQ6OmNyZWF0ZShmdW5jdGlvbiwgZGF0YSwgdGhyZWFkTmFtZSkt
PmlkKCk7CisgICAgcmV0dXJuIFRocmVhZDo6Y3JlYXRlKHRocmVhZE5hbWUsIFtmdW5jdGlvbiwg
ZGF0YV0geworICAgICAgICBmdW5jdGlvbihkYXRhKTsKKyAgICB9KS0+aWQoKTsKIH0KIAogaW50
IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCmluZGV4IDY0NDNkZGNhOTM0OTBkOGM5ZTZlNmIxMmQzNDIzYzBiODM2OTRlODYuLjQyMGMz
YTZhZGVlYzRkZTYzYTk4MjJjOTU3ODU1YTIxMTc0YjMzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC01Niw3
ICs1Niw5IEBAIElEQlNlcnZlcjo6SURCU2VydmVyKElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZp
bGVIYW5kbGVyJiBmaWxlSGFuZGxlcikKICAgICA6IG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5Rmls
ZUhhbmRsZXIoZmlsZUhhbmRsZXIpCiB7CiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX2RhdGFi
YXNlVGhyZWFkQ3JlYXRpb25Mb2NrKTsKLSAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKElE
QlNlcnZlcjo6ZGF0YWJhc2VUaHJlYWRFbnRyeSwgdGhpcywgIkluZGV4ZWREYXRhYmFzZSBTZXJ2
ZXIiKTsKKyAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbmRleGVkRGF0YWJhc2UgU2Vy
dmVyIiwgW3RoaXNdIHsKKyAgICAgICAgZGF0YWJhc2VSdW5Mb29wKCk7CisgICAgfSk7CiB9CiAK
IElEQlNlcnZlcjo6SURCU2VydmVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYgZmlsZUhhbmRsZXIpCkBAIC02
Niw3ICs2OCw5IEBAIElEQlNlcnZlcjo6SURCU2VydmVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VE
aXJlY3RvcnlQYXRoLCBJREJCYWNraW5nU3RvcmVUZW1wb3JhCiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQlNlcnZlciBjcmVhdGVkIGF0IHBhdGggJXMiLCBkYXRhYmFzZURpcmVjdG9yeVBhdGgudXRm
OCgpLmRhdGEoKSk7CiAKICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fZGF0YWJhc2VUaHJlYWRD
cmVhdGlvbkxvY2spOwotICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoSURCU2VydmVyOjpk
YXRhYmFzZVRocmVhZEVudHJ5LCB0aGlzLCAiSW5kZXhlZERhdGFiYXNlIFNlcnZlciIpOworICAg
IG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkluZGV4ZWREYXRhYmFzZSBTZXJ2ZXIiLCBbdGhp
c10geworICAgICAgICBkYXRhYmFzZVJ1bkxvb3AoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBJREJT
ZXJ2ZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rp
b24pCkBAIC01MDAsMTMgKzUwNCw2IEBAIHZvaWQgSURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNr
UmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYgdGFzaykKICAgICB9KTsKIH0KIAotdm9pZCBJREJTZXJ2
ZXI6OmRhdGFiYXNlVGhyZWFkRW50cnkodm9pZCogdGhyZWFkRGF0YSkKLXsKLSAgICBBU1NFUlQo
dGhyZWFkRGF0YSk7Ci0gICAgSURCU2VydmVyKiBzZXJ2ZXIgPSByZWludGVycHJldF9jYXN0PElE
QlNlcnZlcio+KHRocmVhZERhdGEpOwotICAgIHNlcnZlci0+ZGF0YWJhc2VSdW5Mb29wKCk7Ci19
Ci0KIHZvaWQgSURCU2VydmVyOjpkYXRhYmFzZVJ1bkxvb3AoKQogewogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5oCmluZGV4IGU0NmY3YjU4MjFlYTAxNmJmZTI1NGY0ZDE3N2M2ZWFh
ZDE1MmMyZDguLmRiMTBkNjlkZTE2YjkwNzVkMTQ1ZTRjODE2ZmY2YzI0MGI5ODVkMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmgKQEAgLTExOCw3ICsxMTgsNiBAQCBjbGFzcyBJREJTZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxJREJTZXJ2ZXI+IHsKICAgICB2b2lkIHBlcmZvcm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zv
ck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mLCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKICAgICB2b2lkIGRpZFBlcmZvcm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlcyh1aW50
NjRfdCBjYWxsYmFja0lEKTsKIAotICAgIHN0YXRpYyB2b2lkIGRhdGFiYXNlVGhyZWFkRW50cnko
dm9pZCopOwogICAgIHZvaWQgZGF0YWJhc2VSdW5Mb29wKCk7CiAgICAgdm9pZCBoYW5kbGVUYXNr
UmVwbGllc09uTWFpblRocmVhZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IDdjZjdhZjhmZWEyZTFlNjdk
NTIzN2M4NzFhMDE1YjNjNDkwMGEyN2IuLjExNTAxNTc1YTczY2Y0NjkxYjQ1MjMyYzlhNzAzYTRh
YTY5M2QxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5
bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXN5bmNBdWRpb0RlY29kZXIuY3BwCkBAIC0zOSw3ICszOSw5IEBAIEFzeW5jQXVkaW9EZWNvZGVy
OjpBc3luY0F1ZGlvRGVjb2RlcigpCiB7CiAgICAgLy8gU3RhcnQgd29ya2VyIHRocmVhZC4KICAg
ICBMb2NrSG9sZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKLSAgICBtX3RocmVhZCA9
IFRocmVhZDo6Y3JlYXRlKEFzeW5jQXVkaW9EZWNvZGVyOjp0aHJlYWRFbnRyeSwgdGhpcywgIkF1
ZGlvIERlY29kZXIiKTsKKyAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJBdWRpbyBEZWNv
ZGVyIiwgW3RoaXNdIHsKKyAgICAgICAgcnVuTG9vcCgpOworICAgIH0pOwogfQogCiBBc3luY0F1
ZGlvRGVjb2Rlcjo6fkFzeW5jQXVkaW9EZWNvZGVyKCkKQEAgLTU5LDE0ICs2MSw2IEBAIHZvaWQg
QXN5bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0Rh
dGEsIGZsb2F0IHNhbXBsZVJhCiAgICAgbV9xdWV1ZS5hcHBlbmQoV1RGTW92ZShkZWNvZGluZ1Rh
c2spKTsgLy8gbm90ZSB0aGF0IG93bmVyc2hpcCBvZiB0aGUgdGFzayBpcyBlZmZlY3RpdmVseSB0
YWtlbiBieSB0aGUgcXVldWUuCiB9CiAKLS8vIEFzeW5jaHJvbm91c2x5IGRlY29kZSBpbiB0aGlz
IHRocmVhZC4KLXZvaWQgQXN5bmNBdWRpb0RlY29kZXI6OnRocmVhZEVudHJ5KHZvaWQqIHRocmVh
ZERhdGEpCi17Ci0gICAgQVNTRVJUKHRocmVhZERhdGEpOwotICAgIEFzeW5jQXVkaW9EZWNvZGVy
KiBkZWNvZGVyID0gcmVpbnRlcnByZXRfY2FzdDxBc3luY0F1ZGlvRGVjb2Rlcio+KHRocmVhZERh
dGEpOwotICAgIGRlY29kZXItPnJ1bkxvb3AoKTsKLX0KLQogdm9pZCBBc3luY0F1ZGlvRGVjb2Rl
cjo6cnVuTG9vcCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKaW5kZXgg
ZjEyNTEwZDE5N2MzZGY5NmNjMDU2ODU0NmNiYzNmYjQ2ZWFhYThhMS4uNDJmYzAwMjk5YTNlODg4
YmQ0NmY2MjliYjZmYTg2YTY2OTdhMGM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaApAQCAtNzQsNyArNzQsNiBAQCBjbGFz
cyBBc3luY0F1ZGlvRGVjb2RlciB7CiAgICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9hdWRp
b0J1ZmZlcjsKICAgICB9OwogICAgIAotICAgIHN0YXRpYyB2b2lkIHRocmVhZEVudHJ5KHZvaWQq
IHRocmVhZERhdGEpOwogICAgIHZvaWQgcnVuTG9vcCgpOwogCiAgICAgUmVmUHRyPFRocmVhZD4g
bV90aHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggMzdiOTU4ODQwNDFk
YzQ1ZGY1NDgyOTRhMmY0ZDE4MWMwZmE4YWU5My4uZTk5NWIwODY1ODcwNjc5ZjdhNmJmOWEyMWFj
MjhlMWRmM2UzMTQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtODIsMTgg
KzgyLDEyIEBAIHZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmlu
ZygpCiAgICAgaWYgKCFtX3N0YXJ0ZWRSZW5kZXJpbmcpIHsKICAgICAgICAgbV9zdGFydGVkUmVu
ZGVyaW5nID0gdHJ1ZTsKICAgICAgICAgcmVmKCk7IC8vIFNlZSBjb3JyZXNwb25kaW5nIGRlcmVm
KCkgY2FsbCBpbiBub3RpZnlDb21wbGV0ZURpc3BhdGNoKCkuCi0gICAgICAgIG1fcmVuZGVyVGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpvZmZsaW5l
UmVuZGVyRW50cnksIHRoaXMsICJvZmZsaW5lIHJlbmRlcmVyIik7CisgICAgICAgIG1fcmVuZGVy
VGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIm9mZmxpbmUgcmVuZGVyZXIiLCBbdGhpc10geworICAg
ICAgICAgICAgb2ZmbGluZVJlbmRlcigpOworICAgICAgICB9KTsKICAgICB9CiB9CiAKLS8vIERv
IG9mZmxpbmUgcmVuZGVyaW5nIGluIHRoaXMgdGhyZWFkLgotdm9pZCBPZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGU6Om9mZmxpbmVSZW5kZXJFbnRyeSh2b2lkKiB0aHJlYWREYXRhKQotewotICAg
IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSogZGVzdGluYXRpb25Ob2RlID0gcmVpbnRlcnBy
ZXRfY2FzdDxPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUqPih0aHJlYWREYXRhKTsKLSAgICBB
U1NFUlQoZGVzdGluYXRpb25Ob2RlKTsKLSAgICBkZXN0aW5hdGlvbk5vZGUtPm9mZmxpbmVSZW5k
ZXIoKTsKLX0KLQogdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVSZW5k
ZXIoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlLmgKaW5kZXggNTY5MDEzOGIxNjU3MGIzZjlkMjM3ZjlkZDRhOGVhMjNkNzNmZmFhNi4uYjk0
NWJlZjkxZjdjZGViYWRhNTIxZWQwNTllYmVjNGNjNDI1YjViZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oCkBAIC02NSw3ICs2NSw2IEBAIGNsYXNzIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7CiAgICAgLy8gUmVuZGVyaW5nIHRo
cmVhZC4KICAgICBSZWZQdHI8VGhyZWFkPiBtX3JlbmRlclRocmVhZDsKICAgICBib29sIG1fc3Rh
cnRlZFJlbmRlcmluZzsKLSAgICBzdGF0aWMgdm9pZCBvZmZsaW5lUmVuZGVyRW50cnkodm9pZCog
dGhyZWFkRGF0YSk7CiAgICAgdm9pZCBvZmZsaW5lUmVuZGVyKCk7CiAgICAgCiAgICAgLy8gRm9y
IGNvbXBsZXRpb24gY2FsbGJhY2sgb24gbWFpbiB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCmluZGV4IGQ3MDgx
NGY5YjU1YjI0OGZkNjRlMWFmZjQzZTM3Njc0ZjE2OTJkNGIuLjExNTI0Y2RjZDJhYjM0MmZiMDlm
ZTYxOWFiNDZmNTc5MjNjZTY5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCkBAIC02Myw3ICs2Myw5IEBAIGJvb2wg
RGF0YWJhc2VUaHJlYWQ6OnN0YXJ0KCkKICAgICBpZiAobV90aHJlYWQpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShEYXRhYmFzZVRocmVhZDo6
ZGF0YWJhc2VUaHJlYWRTdGFydCwgdGhpcywgIldlYkNvcmU6IERhdGFiYXNlIik7CisgICAgbV90
aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTogRGF0YWJhc2UiLCBbdGhpc10geworICAg
ICAgICBkYXRhYmFzZVRocmVhZCgpOworICAgIH0pOwogCiAgICAgcmV0dXJuIG1fdGhyZWFkOwog
fQpAQCAtODcsMTIgKzg5LDYgQEAgYm9vbCBEYXRhYmFzZVRocmVhZDo6dGVybWluYXRpb25SZXF1
ZXN0ZWQoRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiB0YXNrU3luY2hyb24KICAgICByZXR1cm4g
bV9xdWV1ZS5raWxsZWQoKTsKIH0KIAotdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJl
YWRTdGFydCh2b2lkKiB2RGF0YWJhc2VUaHJlYWQpCi17Ci0gICAgRGF0YWJhc2VUaHJlYWQqIGRi
VGhyZWFkID0gc3RhdGljX2Nhc3Q8RGF0YWJhc2VUaHJlYWQqPih2RGF0YWJhc2VUaHJlYWQpOwot
ICAgIGRiVGhyZWFkLT5kYXRhYmFzZVRocmVhZCgpOwotfQotCiB2b2lkIERhdGFiYXNlVGhyZWFk
OjpkYXRhYmFzZVRocmVhZCgpCiB7CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCmluZGV4IDBlN2EwMDBiNGI3NjNmZmI3
YWM1ZWEwMGFhOTU4N2IwNzhlNmEzY2QuLjM0MDA5ZDFiMjJjNDRjMmUwM2VlY2JiN2Y0NGU0Yzdj
OGQ3ZGFkNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmgKQEAgLTY1LDcgKzY1LDYgQEAgY2xhc3MgRGF0YWJhc2VUaHJlYWQg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YWJhc2VUaHJlYWQ+IHsKIHByaXZhdGU6
CiAgICAgRGF0YWJhc2VUaHJlYWQoKTsKIAotICAgIHN0YXRpYyB2b2lkIGRhdGFiYXNlVGhyZWFk
U3RhcnQodm9pZCopOwogICAgIHZvaWQgZGF0YWJhc2VUaHJlYWQoKTsKIAogICAgIExvY2sgbV90
aHJlYWRDcmVhdGlvbk11dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvR0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJv
bGxlci5jcHAKaW5kZXggNWFlMzk3MmM2NGM5ZjlmMzQ3NWEwMjZmOWRhZmI4ZDY4ZTU5MDM4OS4u
MTYzYjllZWE2NjU0ZWUyYWJkZjY5N2RlNmU1ZjhhOTZmNzVlMDMyNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgY29s
bGVjdCh2b2lkKikKK3N0YXRpYyB2b2lkIGNvbGxlY3QoKQogewogICAgIEpTTG9ja0hvbGRlciBs
b2NrKGNvbW1vblZNKCkpOwogICAgIGNvbW1vblZNKCkuaGVhcC5jb2xsZWN0Tm93KEFzeW5jLCBD
b2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIEdDQ29udHJvbGxl
cjo6Z2FyYmFnZUNvbGxlY3RPbk5leHRSdW5Mb29wKCkKIAogdm9pZCBHQ0NvbnRyb2xsZXI6Omdj
VGltZXJGaXJlZCgpCiB7Ci0gICAgY29sbGVjdChudWxscHRyKTsKKyAgICBjb2xsZWN0KCk7CiB9
CiAKIHZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5vdygpCkBAIC0xMDEsNyArMTAx
LDkgQEAgdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93SWZOb3REb25lUmVjZW50
bHkoKQogCiB2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVh
ZEZvckRlYnVnZ2luZyhib29sIHdhaXRVbnRpbERvbmUpCiB7Ci0gICAgUmVmUHRyPFRocmVhZD4g
dGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoY29sbGVjdCwgMCwgIldlYkNvcmU6IEdDQ29udHJvbGxl
ciIpOworICAgIFJlZlB0cjxUaHJlYWQ+IHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJXZWJDb3Jl
OiBHQ0NvbnRyb2xsZXIiLCBbXSB7CisgICAgICAgIGNvbGxlY3QoKTsKKyAgICB9KTsKIAogICAg
IGlmICh3YWl0VW50aWxEb25lKSB7CiAgICAgICAgIHRocmVhZC0+d2FpdEZvckNvbXBsZXRpb24o
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDQ4
Zjg4YzVmZDk2NDBkZDZlYWM0M2QxZTgxY2RhNzNhOGU0YjFjYmQuLjU5OGM5Mzk4ZjhlYWFiMTQx
YTJkOWZkY2E0ODRjNTMzYjhlYmViNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24v
SWNvbkRhdGFiYXNlLmNwcApAQCAtMTQxLDcgKzE0MSw5IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjpv
cGVuKGNvbnN0IFN0cmluZyYgZGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAg
IC8vIExvY2sgaGVyZSBhcyB3ZWxsIGFzIGZpcnN0IHRoaW5nIGluIHRoZSB0aHJlYWQgc28gdGhl
IHRocmVhZCBkb2Vzbid0IGFjdHVhbGx5IGNvbW1lbmNlIHVudGlsIHRoZSBjcmVhdGVUaHJlYWQo
KSBjYWxsIAogICAgIC8vIGNvbXBsZXRlcyBhbmQgbV9zeW5jVGhyZWFkUnVubmluZyBpcyBwcm9w
ZXJseSBzZXQKICAgICBtX3N5bmNMb2NrLmxvY2soKTsKLSAgICBtX3N5bmNUaHJlYWQgPSBUaHJl
YWQ6OmNyZWF0ZShJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWRTdGFydCwgdGhp
cywgIldlYkNvcmU6IEljb25EYXRhYmFzZSIpOworICAgIG1fc3luY1RocmVhZCA9IFRocmVhZDo6
Y3JlYXRlKCJXZWJDb3JlOiBJY29uRGF0YWJhc2UiLCBbdGhpc10geworICAgICAgICBpY29uRGF0
YWJhc2VTeW5jVGhyZWFkKCk7CisgICAgfSk7CiAgICAgbV9zeW5jVGhyZWFkUnVubmluZyA9IG1f
c3luY1RocmVhZDsKICAgICBtX3N5bmNMb2NrLnVubG9jaygpOwogICAgIGlmICghbV9zeW5jVGhy
ZWFkKQpAQCAtOTQyLDEzICs5NDQsNiBAQCBib29sIEljb25EYXRhYmFzZTo6c2hvdWxkU3RvcFRo
cmVhZEFjdGl2aXR5KCkgY29uc3QKICAgICByZXR1cm4gbV90aHJlYWRUZXJtaW5hdGlvblJlcXVl
c3RlZCB8fCBtX3JlbW92ZUljb25zUmVxdWVzdGVkOwogfQogCi12b2lkIEljb25EYXRhYmFzZTo6
aWNvbkRhdGFiYXNlU3luY1RocmVhZFN0YXJ0KHZvaWQqIHZJY29uRGF0YWJhc2UpCi17ICAgIAot
ICAgIEljb25EYXRhYmFzZSogaWNvbkRCID0gc3RhdGljX2Nhc3Q8SWNvbkRhdGFiYXNlKj4odklj
b25EYXRhYmFzZSk7Ci0gICAgCi0gICAgaWNvbkRCLT5pY29uRGF0YWJhc2VTeW5jVGhyZWFkKCk7
Ci19Ci0KIHZvaWQgSWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkKCkKIHsKICAg
ICAvLyBUaGUgY2FsbCB0byBjcmVhdGUgdGhpcyB0aHJlYWQgbWlnaHQgbm90IGNvbXBsZXRlIGJl
Zm9yZSB0aGUgdGhyZWFkIGFjdHVhbGx5IHN0YXJ0cywgc28gd2UgbWlnaHQgZmFpbCB0aGlzIEFT
U0VSVF9JQ09OX1NZTkNfVEhSRUFEKCkgYmVjYXVzZSB0aGUgcG9pbnRlciAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKaW5kZXggODY0MDk1NTQ3NTMzZmQ4OTBmMDNh
ZmU5MmJiMDZmNjA4N2VlNzM2Mi4uMDA0MGI0MjlhZTFhMTZlYmRlZTlkMjA0MGMxN2JlMmExYmVj
ZDRjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKQEAgLTE4
Miw3ICsxODIsNiBAQCBjbGFzcyBJY29uRGF0YWJhc2UgZmluYWwgOiBwdWJsaWMgSWNvbkRhdGFi
YXNlQmFzZSB7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzaG91bGRTdG9wVGhyZWFkQWN0aXZp
dHkoKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZTogICAgCi0gICAgc3RhdGljIHZvaWQgaWNvbkRh
dGFiYXNlU3luY1RocmVhZFN0YXJ0KHZvaWQgKik7CiAgICAgdm9pZCBpY29uRGF0YWJhc2VTeW5j
VGhyZWFkKCk7CiAgICAgCiAgICAgLy8gVGhlIGZvbGxvd2luZyBibG9jayBvZiBtZXRob2RzIGFy
ZSBjYWxsZWQgZXhjbHVzaXZlbHkgYnkgdGhlIHN5bmMgdGhyZWFkIHRvIG1hbmFnZSBpL28gdG8g
YW5kIGZyb20gdGhlIGRhdGFiYXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
c291cmNlVXNhZ2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdl
VGhyZWFkLmNwcAppbmRleCBlMGIyNzg0N2VmZjIwYzA2NDE3NjYzNDc1NTRmOTM4Nzg2OWRmZGJk
Li5iYjY5NGJkZDNjOGJlOGI1NzI3MzlkZTZlNjI0ZTkwMjhhMzQ3M2I0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAKQEAgLTEwMCwxMiArMTAwLDkgQEAg
dm9pZCBSZXNvdXJjZVVzYWdlVGhyZWFkOjpjcmVhdGVUaHJlYWRJZk5lZWRlZCgpCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fdm0gPSAmY29tbW9uVk0oKTsKLSAgICBtX3RocmVhZCA9IFRocmVh
ZDo6Y3JlYXRlKHRocmVhZENhbGxiYWNrLCB0aGlzLCAiV2ViQ29yZTogUmVzb3VyY2VVc2FnZSIp
OwotfQotCi12b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OnRocmVhZENhbGxiYWNrKHZvaWQqIHJl
c291cmNlVXNhZ2VUaHJlYWQpCi17Ci0gICAgc3RhdGljX2Nhc3Q8UmVzb3VyY2VVc2FnZVRocmVh
ZCo+KHJlc291cmNlVXNhZ2VUaHJlYWQpLT50aHJlYWRCb2R5KCk7CisgICAgbV90aHJlYWQgPSBU
aHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTogUmVzb3VyY2VVc2FnZSIsIFt0aGlzXSB7CisgICAgICAg
IHRocmVhZEJvZHkoKTsKKyAgICB9KTsKIH0KIAogTk9fUkVUVVJOIHZvaWQgUmVzb3VyY2VVc2Fn
ZVRocmVhZDo6dGhyZWFkQm9keSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
c291cmNlVXNhZ2VUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRo
cmVhZC5oCmluZGV4IDM2MTdiN2FkZWMwMTkyMjIxMTMwODFhZDRiM2E4ODc1NGYxZmE1YmEuLjgy
NGI2NDgzNTFkMTM1N2M3ODk0OTRmMjQyZDM0YjlkODcwYWYwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIFJlc291
cmNlVXNhZ2VUaHJlYWQgewogICAgIHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKFJlc291cmNlVXNhZ2VE
YXRhJiYpOwogCiAgICAgdm9pZCBjcmVhdGVUaHJlYWRJZk5lZWRlZCgpOwotICAgIHN0YXRpYyB2
b2lkIHRocmVhZENhbGxiYWNrKHZvaWQqIHNjcm9sbGluZ1RocmVhZCk7CiAgICAgdm9pZCB0aHJl
YWRCb2R5KCk7CiAgICAgdm9pZCBwbGF0Zm9ybVRocmVhZEJvZHkoSlNDOjpWTSosIFJlc291cmNl
VXNhZ2VEYXRhJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUaHJlYWQuY3BwCmluZGV4IDY0ZDA1MGE2ODQ4ZTgxYjU2OGRkNWI4NjUxZTRiOWZmMGRi
Yjc1NTEuLmQyMDRjNzYyMTBiMzM0MDRkZjQ0YzRkYTNmY2E3YWNjZDc3YjQyYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcApAQCAt
ODAsNyArODAsMTAgQEAgdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmNyZWF0ZVRocmVhZElmTmVlZGVk
KCkKICAgICB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX2luaXRpYWxp
emVSdW5Mb29wTXV0ZXgpOwogCi0gICAgICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUodGhy
ZWFkQ2FsbGJhY2ssIHRoaXMsICJXZWJDb3JlOiBTY3JvbGxpbmciKTsKKyAgICAgICAgbV90aHJl
YWQgPSBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTogU2Nyb2xsaW5nIiwgW3RoaXNdIHsKKyAgICAg
ICAgICAgIFdURjo6VGhyZWFkOjpzZXRDdXJyZW50VGhyZWFkSXNVc2VySW50ZXJhY3RpdmUoKTsK
KyAgICAgICAgICAgIGluaXRpYWxpemVSdW5Mb29wKCk7CisgICAgICAgIH0pOwogICAgICAgICAK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlv
blZhcmlhYmxlLndhaXQobG9jaywgW3RoaXNdeyByZXR1cm4gbV90aHJlYWRSdW5Mb29wOyB9KTsK
QEAgLTg4LDE3ICs5MSw2IEBAIHZvaWQgU2Nyb2xsaW5nVGhyZWFkOjpjcmVhdGVUaHJlYWRJZk5l
ZWRlZCgpCiAgICAgfQogfQogCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6dGhyZWFkQ2FsbGJhY2so
dm9pZCogc2Nyb2xsaW5nVGhyZWFkKQotewotICAgIFdURjo6VGhyZWFkOjpzZXRDdXJyZW50VGhy
ZWFkSXNVc2VySW50ZXJhY3RpdmUoKTsKLSAgICBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUaHJlYWQq
PihzY3JvbGxpbmdUaHJlYWQpLT50aHJlYWRCb2R5KCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVGhy
ZWFkOjp0aHJlYWRCb2R5KCkKLXsKLSAgICBpbml0aWFsaXplUnVuTG9vcCgpOwotfQotCiB2b2lk
IFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2hGdW5jdGlvbnNGcm9tU2Nyb2xsaW5nVGhyZWFkKCkK
IHsKICAgICBBU1NFUlQoaXNDdXJyZW50VGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaAppbmRleCBkODg5MmYwNWJlNjQzN2Q0YWFj
YzBhNzUxYTdjYTdlOTNiZWUwZGZjLi43ZTgxZDA4N2Q5NGQ3YTRlYmM3N2UxNWUxMDliMTc4Mzgz
ZDg3ZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
aHJlYWQuaApAQCAtNjEsOCArNjEsNiBAQCBjbGFzcyBTY3JvbGxpbmdUaHJlYWQgewogICAgIHN0
YXRpYyBTY3JvbGxpbmdUaHJlYWQmIHNpbmdsZXRvbigpOwogCiAgICAgdm9pZCBjcmVhdGVUaHJl
YWRJZk5lZWRlZCgpOwotICAgIHN0YXRpYyB2b2lkIHRocmVhZENhbGxiYWNrKHZvaWQqIHNjcm9s
bGluZ1RocmVhZCk7Ci0gICAgdm9pZCB0aHJlYWRCb2R5KCk7CiAgICAgdm9pZCBkaXNwYXRjaEZ1
bmN0aW9uc0Zyb21TY3JvbGxpbmdUaHJlYWQoKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVJ1bkxv
b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRh
YmFzZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJh
c2VMb2FkZXIuY3BwCmluZGV4IGU1NzRlYThmN2I4YTI3YjQ4ZWY3MzA5MzE2OTdlOWFkZWRjOGMx
ZGEuLmY0NWJlODQ3Y2U3MTBkY2VkYTJlMGVjMTA2Yjc1YmYyNjg1Nzg5Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcApA
QCAtODAsMTQgKzgwLDYgQEAgSFJURkRhdGFiYXNlTG9hZGVyOjp+SFJURkRhdGFiYXNlTG9hZGVy
KCkKICAgICBsb2FkZXJNYXAoKS5yZW1vdmUobV9kYXRhYmFzZVNhbXBsZVJhdGUpOwogfQogCi0v
LyBBc3luY2hyb25vdXNseSBsb2FkIHRoZSBkYXRhYmFzZSBpbiB0aGlzIHRocmVhZC4KLXN0YXRp
YyB2b2lkIGRhdGFiYXNlTG9hZGVyRW50cnkodm9pZCogdGhyZWFkRGF0YSkKLXsKLSAgICBIUlRG
RGF0YWJhc2VMb2FkZXIqIGxvYWRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8SFJURkRhdGFiYXNlTG9h
ZGVyKj4odGhyZWFkRGF0YSk7Ci0gICAgQVNTRVJUKGxvYWRlcik7Ci0gICAgbG9hZGVyLT5sb2Fk
KCk7Ci19Ci0KIHZvaWQgSFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkKCkKIHsKICAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKQEAgLTEwNSw3ICs5Nyw5IEBAIHZvaWQgSFJURkRhdGFiYXNlTG9h
ZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoKQogICAgIAogICAgIGlmICghbV9ocnRmRGF0YWJhc2Uu
Z2V0KCkgJiYgIW1fZGF0YWJhc2VMb2FkZXJUaHJlYWQpIHsKICAgICAgICAgLy8gU3RhcnQgdGhl
IGFzeW5jaHJvbm91cyBkYXRhYmFzZSBsb2FkaW5nIHByb2Nlc3MuCi0gICAgICAgIG1fZGF0YWJh
c2VMb2FkZXJUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShkYXRhYmFzZUxvYWRlckVudHJ5LCB0aGlz
LCAiSFJURiBkYXRhYmFzZSBsb2FkZXIiKTsKKyAgICAgICAgbV9kYXRhYmFzZUxvYWRlclRocmVh
ZCA9IFRocmVhZDo6Y3JlYXRlKCJIUlRGIGRhdGFiYXNlIGxvYWRlciIsIFt0aGlzXSB7CisgICAg
ICAgICAgICBsb2FkKCk7CisgICAgICAgIH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaAppbmRleCBkMGJlOGU3
NGZhMzY4ZjQ4YzQ3NDE5NGIxMDk1M2RiMWU4YjM1ZTZhLi4xZmY0OTYyYTI2NDYyNDljYWViYTk5
ZjRjNzdmYzZkNDMzYjAzNGRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaApAQCAtNjEsOSArNjEsNiBAQCBjbGFzcyBIUlRGRGF0
YWJhc2VMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxIUlRGRGF0YWJhc2VMb2FkZXI+IHsKIAog
ICAgIGZsb2F0IGRhdGFiYXNlU2FtcGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VT
YW1wbGVSYXRlOyB9CiAgICAgCi0gICAgLy8gQ2FsbGVkIGluIGFzeW5jaHJvbm91cyBsb2FkaW5n
IHRocmVhZC4KLSAgICB2b2lkIGxvYWQoKTsKLQogcHJpdmF0ZToKICAgICAvLyBCb3RoIGNvbnN0
cnVjdG9yIGFuZCBkZXN0cnVjdG9yIG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFk
LgogICAgIGV4cGxpY2l0IEhSVEZEYXRhYmFzZUxvYWRlcihmbG9hdCBzYW1wbGVSYXRlKTsKQEAg
LTcyLDYgKzY5LDkgQEAgY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyIDogcHVibGljIFJlZkNvdW50
ZWQ8SFJURkRhdGFiYXNlTG9hZGVyPiB7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCBmcm9t
IHRoZSBtYWluIHRocmVhZC4KICAgICB2b2lkIGxvYWRBc3luY2hyb25vdXNseSgpOwogCisgICAg
Ly8gQ2FsbGVkIGluIGFzeW5jaHJvbm91cyBsb2FkaW5nIHRocmVhZC4KKyAgICB2b2lkIGxvYWQo
KTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxIUlRGRGF0YWJhc2U+IG1faHJ0ZkRhdGFiYXNlOwog
CiAgICAgLy8gSG9sZGluZyBhIG1fdGhyZWFkTG9jayBpcyByZXF1aXJlZCB3aGVuIGFjY2Vzc2lu
ZyBtX2RhdGFiYXNlTG9hZGVyVGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKaW5kZXggMjFiZTk5NmVmMzdlNTNkYjcwMzEwMDE5
NjI3YzBjNDBkMmIyMTBkZi4uMGU3NDY2MTg1ODhjZTg4NDlhN2QzZGExYjFhMDBkMzQzYzUyMzc5
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXIuY3BwCkBAIC01NCwxMiArNTQsNiBAQCBjb25zdCBzaXplX3QgUmVhbHRpbWVGcmFtZUxpbWl0
ID0gODE5MiAgKyA0MDk2OyAvLyB+Mjc4bXNlYyBAIDQ0LjFLSHoKIGNvbnN0IHNpemVfdCBNaW5G
RlRTaXplID0gMTI4OwogY29uc3Qgc2l6ZV90IE1heFJlYWx0aW1lRkZUU2l6ZSA9IDIwNDg7CiAK
LXN0YXRpYyB2b2lkIGJhY2tncm91bmRUaHJlYWRFbnRyeSh2b2lkKiB0aHJlYWREYXRhKQotewot
ICAgIFJldmVyYkNvbnZvbHZlciogcmV2ZXJiQ29udm9sdmVyID0gc3RhdGljX2Nhc3Q8UmV2ZXJi
Q29udm9sdmVyKj4odGhyZWFkRGF0YSk7Ci0gICAgcmV2ZXJiQ29udm9sdmVyLT5iYWNrZ3JvdW5k
VGhyZWFkRW50cnkoKTsKLX0KLQogUmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIoQXVk
aW9DaGFubmVsKiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCByZW5kZXJTbGljZVNpemUsIHNpemVf
dCBtYXhGRlRTaXplLCBzaXplX3QgY29udm9sdmVyUmVuZGVyUGhhc2UsIGJvb2wgdXNlQmFja2dy
b3VuZFRocmVhZHMpCiAgICAgOiBtX2ltcHVsc2VSZXNwb25zZUxlbmd0aChpbXB1bHNlUmVzcG9u
c2UtPmxlbmd0aCgpKQogICAgICwgbV9hY2N1bXVsYXRpb25CdWZmZXIoaW1wdWxzZVJlc3BvbnNl
LT5sZW5ndGgoKSArIHJlbmRlclNsaWNlU2l6ZSkKQEAgLTEyOSw4ICsxMjMsMTEgQEAgUmV2ZXJi
Q29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIoQXVkaW9DaGFubmVsKiBpbXB1bHNlUmVzcG9uc2Us
IHNpemVfdCByZW5kZXJTbGkKIAogICAgIC8vIFN0YXJ0IHVwIGJhY2tncm91bmQgdGhyZWFkCiAg
ICAgLy8gRklYTUU6IHdvdWxkIGJlIGJldHRlciB0byB1cCB0aGUgdGhyZWFkIHByaW9yaXR5IGhl
cmUuICBJdCBkb2Vzbid0IG5lZWQgdG8gYmUgcmVhbC10aW1lLCBidXQgaGlnaGVyIHRoYW4gdGhl
IGRlZmF1bHQuLi4KLSAgICBpZiAodGhpcy0+dXNlQmFja2dyb3VuZFRocmVhZHMoKSAmJiBtX2Jh
Y2tncm91bmRTdGFnZXMuc2l6ZSgpID4gMCkKLSAgICAgICAgbV9iYWNrZ3JvdW5kVGhyZWFkID0g
VGhyZWFkOjpjcmVhdGUoV2ViQ29yZTo6YmFja2dyb3VuZFRocmVhZEVudHJ5LCB0aGlzLCAiY29u
dm9sdXRpb24gYmFja2dyb3VuZCB0aHJlYWQiKTsKKyAgICBpZiAodGhpcy0+dXNlQmFja2dyb3Vu
ZFRocmVhZHMoKSAmJiBtX2JhY2tncm91bmRTdGFnZXMuc2l6ZSgpID4gMCkgeworICAgICAgICBt
X2JhY2tncm91bmRUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiY29udm9sdXRpb24gYmFja2dyb3Vu
ZCB0aHJlYWQiLCBbdGhpc10geworICAgICAgICAgICAgYmFja2dyb3VuZFRocmVhZEVudHJ5KCk7
CisgICAgICAgIH0pOworICAgIH0KIH0KIAogUmV2ZXJiQ29udm9sdmVyOjp+UmV2ZXJiQ29udm9s
dmVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVy
LmgKaW5kZXggMWZjY2Y5NmM5MjcxODY4NTFjYTg3N2Y3ZGFmNTM2N2EzMjdhNzJlYi4uOGFjNmVl
YzViYTI1Njc1NzYwMmU1Y2M1Y2FjMDNkODI5MGYzOWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKQEAgLTYwLDEwICs2MCwxMSBAQCBj
bGFzcyBSZXZlcmJDb252b2x2ZXIgewogICAgIFJldmVyYklucHV0QnVmZmVyKiBpbnB1dEJ1ZmZl
cigpIHsgcmV0dXJuICZtX2lucHV0QnVmZmVyOyB9CiAKICAgICBib29sIHVzZUJhY2tncm91bmRU
aHJlYWRzKCkgY29uc3QgeyByZXR1cm4gbV91c2VCYWNrZ3JvdW5kVGhyZWFkczsgfQotICAgIHZv
aWQgYmFja2dyb3VuZFRocmVhZEVudHJ5KCk7CiAKICAgICBzaXplX3QgbGF0ZW5jeUZyYW1lcygp
IGNvbnN0OwogcHJpdmF0ZToKKyAgICB2b2lkIGJhY2tncm91bmRUaHJlYWRFbnRyeSgpOworCiAg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxSZXZlcmJDb252b2x2ZXJTdGFnZT4+IG1fc3RhZ2Vz
OwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8UmV2ZXJiQ29udm9sdmVyU3RhZ2U+PiBtX2Jh
Y2tncm91bmRTdGFnZXM7CiAgICAgc2l6ZV90IG1faW1wdWxzZVJlc3BvbnNlTGVuZ3RoOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29w
Q0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29w
Q0YuY3BwCmluZGV4IGZmYmZkYTliODkzNDgzNTQ5MGM5YTQwYmExZjQ4MzM2ZTQ3NjBjOGIuLmYw
ODMyN2ZlZDcyMDQwZThhNDgxM2EyYzM1YTNmYzVhNDMyNGEzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKQEAg
LTQ4LDI4ICs0OCw2IEBAIHN0YXRpYyB2b2lkIGVtcHR5UGVyZm9ybSh2b2lkKikKIHsKIH0KIAot
c3RhdGljIHZvaWQgcnVuTG9hZGVyVGhyZWFkKHZvaWQqKQotewotICAgIHsKLSAgICAgICAgc3Rk
Ojpsb2NrX2d1YXJkPFN0YXRpY0xvY2s+IGxvY2sobG9hZGVyUnVuTG9vcE11dGV4KTsKLQotICAg
ICAgICBsb2FkZXJSdW5Mb29wT2JqZWN0ID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwotCi0gICAg
ICAgIC8vIE11c3QgYWRkIGEgc291cmNlIHRvIHRoZSBydW4gbG9vcCB0byBwcmV2ZW50IENGUnVu
TG9vcFJ1bigpIGZyb20gZXhpdGluZy4KLSAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBj
dHh0ID0gezAsICh2b2lkKikxIC8qbXVzdCBiZSBub24tbnVsbCovLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCBlbXB0eVBlcmZvcm19OwotICAgICAgICBDRlJ1bkxvb3BTb3VyY2VSZWYgYm9ndXNTb3Vy
Y2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoMCwgMCwgJmN0eHQpOwotICAgICAgICBDRlJ1bkxv
b3BBZGRTb3VyY2UobG9hZGVyUnVuTG9vcE9iamVjdCwgYm9ndXNTb3VyY2UsIGtDRlJ1bkxvb3BE
ZWZhdWx0TW9kZSk7Ci0KLSAgICAgICAgbG9hZGVyUnVuTG9vcENvbmRpdGlvblZhcmlhYmxlLm5v
dGlmeU9uZSgpOwotICAgIH0KLQotICAgIFNJbnQzMiByZXN1bHQ7Ci0gICAgZG8gewotICAgICAg
ICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKLSAgICAgICAgcmVzdWx0ID0gQ0ZSdW5Mb29wUnVuSW5N
b2RlKGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+Ojpt
YXgoKSwgdHJ1ZSk7Ci0gICAgfSB3aGlsZSAocmVzdWx0ICE9IGtDRlJ1bkxvb3BSdW5TdG9wcGVk
ICYmIHJlc3VsdCAhPSBrQ0ZSdW5Mb29wUnVuRmluaXNoZWQpOwotfQotCiBDRlJ1bkxvb3BSZWYg
bG9hZGVyUnVuTG9vcCgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTc3LDcg
KzU1LDI2IEBAIENGUnVuTG9vcFJlZiBsb2FkZXJSdW5Mb29wKCkKICAgICBzdGQ6OnVuaXF1ZV9s
b2NrPFN0YXRpY0xvY2s+IGxvY2sobG9hZGVyUnVuTG9vcE11dGV4KTsKIAogICAgIGlmICghbG9h
ZGVyUnVuTG9vcE9iamVjdCkgewotICAgICAgICBUaHJlYWQ6OmNyZWF0ZShydW5Mb2FkZXJUaHJl
YWQsIDAsICJXZWJDb3JlOiBDRk5ldHdvcmsgTG9hZGVyIik7CisgICAgICAgIFRocmVhZDo6Y3Jl
YXRlKCJXZWJDb3JlOiBDRk5ldHdvcmsgTG9hZGVyIiwgW10geworICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKGxvYWRlclJ1bkxv
b3BNdXRleCk7CisKKyAgICAgICAgICAgICAgICBsb2FkZXJSdW5Mb29wT2JqZWN0ID0gQ0ZSdW5M
b29wR2V0Q3VycmVudCgpOworCisgICAgICAgICAgICAgICAgLy8gTXVzdCBhZGQgYSBzb3VyY2Ug
dG8gdGhlIHJ1biBsb29wIHRvIHByZXZlbnQgQ0ZSdW5Mb29wUnVuKCkgZnJvbSBleGl0aW5nLgor
ICAgICAgICAgICAgICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgY3R4dCA9IHswLCAodm9pZCop
MSAvKm11c3QgYmUgbm9uLW51bGwqLywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZW1wdHlQZXJmb3Jt
fTsKKyAgICAgICAgICAgICAgICBDRlJ1bkxvb3BTb3VyY2VSZWYgYm9ndXNTb3VyY2UgPSBDRlJ1
bkxvb3BTb3VyY2VDcmVhdGUoMCwgMCwgJmN0eHQpOworICAgICAgICAgICAgICAgIENGUnVuTG9v
cEFkZFNvdXJjZShsb2FkZXJSdW5Mb29wT2JqZWN0LCBib2d1c1NvdXJjZSwga0NGUnVuTG9vcERl
ZmF1bHRNb2RlKTsKKworICAgICAgICAgICAgICAgIGxvYWRlclJ1bkxvb3BDb25kaXRpb25WYXJp
YWJsZS5ub3RpZnlPbmUoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU0ludDMyIHJl
c3VsdDsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBBdXRvZHJhaW5lZFBvb2wg
cG9vbDsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBDRlJ1bkxvb3BSdW5Jbk1vZGUoa0NGUnVu
TG9vcERlZmF1bHRNb2RlLCBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpLCB0cnVl
KTsKKyAgICAgICAgICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBrQ0ZSdW5Mb29wUnVuU3RvcHBlZCAm
JiByZXN1bHQgIT0ga0NGUnVuTG9vcFJ1bkZpbmlzaGVkKTsKKyAgICAgICAgfSk7CiAKICAgICAg
ICAgbG9hZGVyUnVuTG9vcENvbmRpdGlvblZhcmlhYmxlLndhaXQobG9jaywgW10geyByZXR1cm4g
bG9hZGVyUnVuTG9vcE9iamVjdDsgfSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTWFuYWdlci5jcHAKaW5kZXggOGYyZWVmNjUyY2Zm
OWE5YWM1MTVmMTUyODA2MWU0MTgzYjM1MjZhMC4uMDU5ZmZlMjY4NzdjYjk2YzhiY2I0ODIxOGM1
MmQ1ZWNkMTI4OTgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybE1hbmFnZXIuY3BwCkBAIC0xMDksNyArMTA5LDkgQEAgdm9pZCBDdXJsTWFu
YWdlcjo6c3RhcnRUaHJlYWRJZk5lZWRlZCgpCiAgICAgICAgIGlmIChtX3RocmVhZCkKICAgICAg
ICAgICAgIG1fdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwogICAgICAgICBzZXRSdW5UaHJl
YWQodHJ1ZSk7Ci0gICAgICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUod29ya2VyVGhyZWFk
LCB0aGlzLCAiY3VybFRocmVhZCIpOworICAgICAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRl
KCJjdXJsVGhyZWFkIiwgW3RoaXNdIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZCgpOworICAg
ICAgICB9KTsKICAgICB9CiB9CiAKQEAgLTE3NiwxNSArMTc4LDEzIEBAIGJvb2wgQ3VybE1hbmFn
ZXI6OnJlbW92ZUZyb21DdXJsKENVUkwqIGN1cmxIYW5kbGUpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi12b2lkIEN1cmxNYW5hZ2VyOjp3b3JrZXJUaHJlYWQodm9pZCogZGF0YSkKK3ZvaWQgQ3Vy
bE1hbmFnZXI6OndvcmtlclRocmVhZCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7
CiAKLSAgICBDdXJsTWFuYWdlciogbWFuYWdlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q3VybE1hbmFn
ZXIqPihkYXRhKTsKKyAgICB3aGlsZSAocnVuVGhyZWFkKCkpIHsKIAotICAgIHdoaWxlIChtYW5h
Z2VyLT5ydW5UaHJlYWQoKSkgewotCi0gICAgICAgIG1hbmFnZXItPnVwZGF0ZUhhbmRsZUxpc3Qo
KTsKKyAgICAgICAgdXBkYXRlSGFuZGxlTGlzdCgpOwogCiAgICAgICAgIC8vIFJldHJ5ICdzZWxl
Y3QnIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZCBieSBhIHByb2Nlc3Mgc2lnbmFsLgogICAgICAgICBp
bnQgcmMgPSAwOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgQ3VybE1hbmFnZXI6OndvcmtlclRo
cmVhZCh2b2lkKiBkYXRhKQogICAgICAgICAgICAgRkRfWkVSTygmZmRyZWFkKTsKICAgICAgICAg
ICAgIEZEX1pFUk8oJmZkd3JpdGUpOwogICAgICAgICAgICAgRkRfWkVSTygmZmRleGNlcCk7Ci0g
ICAgICAgICAgICBjdXJsX211bHRpX2Zkc2V0KG1hbmFnZXItPmdldE11bHRpSGFuZGxlKCksICZm
ZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJm1heGZkKTsKKyAgICAgICAgICAgIGN1cmxfbXVs
dGlfZmRzZXQoZ2V0TXVsdGlIYW5kbGUoKSwgJmZkcmVhZCwgJmZkd3JpdGUsICZmZGV4Y2VwLCAm
bWF4ZmQpOwogICAgICAgICAgICAgLy8gV2hlbiB0aGUgMyBmaWxlIGRlc2NyaXB0b3JzIGFyZSBl
bXB0eSwgd2luc29jayB3aWxsIHJldHVybiAtMQogICAgICAgICAgICAgLy8gYW5kIGJhaWwgb3V0
LCBzdG9wcGluZyB0aGUgZmlsZSBkb3dubG9hZC4gU28gbWFrZSBzdXJlIHdlCiAgICAgICAgICAg
ICAvLyBoYXZlIHZhbGlkIGZpbGUgZGVzY3JpcHRvcnMgYmVmb3JlIGNhbGxpbmcgc2VsZWN0LgpA
QCAtMjEzLDEwICsyMTMsMTAgQEAgdm9pZCBDdXJsTWFuYWdlcjo6d29ya2VyVGhyZWFkKHZvaWQq
IGRhdGEpCiAgICAgICAgIH0gd2hpbGUgKHJjID09IC0xICYmIGVycm5vID09IEVJTlRSKTsKIAog
ICAgICAgICBpbnQgYWN0aXZlQ291bnQgPSAwOwotICAgICAgICB3aGlsZSAoY3VybF9tdWx0aV9w
ZXJmb3JtKG1hbmFnZXItPmdldE11bHRpSGFuZGxlKCksICZhY3RpdmVDb3VudCkgPT0gQ1VSTE1f
Q0FMTF9NVUxUSV9QRVJGT1JNKSB7IH0KKyAgICAgICAgd2hpbGUgKGN1cmxfbXVsdGlfcGVyZm9y
bShnZXRNdWx0aUhhbmRsZSgpLCAmYWN0aXZlQ291bnQpID09IENVUkxNX0NBTExfTVVMVElfUEVS
Rk9STSkgeyB9CiAKICAgICAgICAgaW50IG1lc3NhZ2VzSW5RdWV1ZSA9IDA7Ci0gICAgICAgIENV
UkxNc2cqIG1zZyA9IGN1cmxfbXVsdGlfaW5mb19yZWFkKG1hbmFnZXItPmdldE11bHRpSGFuZGxl
KCksICZtZXNzYWdlc0luUXVldWUpOworICAgICAgICBDVVJMTXNnKiBtc2cgPSBjdXJsX211bHRp
X2luZm9fcmVhZChnZXRNdWx0aUhhbmRsZSgpLCAmbWVzc2FnZXNJblF1ZXVlKTsKIAogICAgICAg
ICBpZiAoIW1zZykKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjMwLDkgKzIzMCw5IEBAIHZv
aWQgQ3VybE1hbmFnZXI6OndvcmtlclRocmVhZCh2b2lkKiBkYXRhKQogICAgICAgICBDdXJsSm9i
QWN0aW9uIGFjdGlvbiA9IGpvYi0+aGFuZGxlQ3VybE1zZyhtc2cpOwogCiAgICAgICAgIGlmIChh
Y3Rpb24gPT0gQ3VybEpvYkFjdGlvbjo6RmluaXNoZWQpCi0gICAgICAgICAgICBtYW5hZ2VyLT5y
ZW1vdmVGcm9tQ3VybChtc2ctPmVhc3lfaGFuZGxlKTsKKyAgICAgICAgICAgIHJlbW92ZUZyb21D
dXJsKG1zZy0+ZWFzeV9oYW5kbGUpOwogCi0gICAgICAgIG1hbmFnZXItPnN0b3BUaHJlYWRJZklk
bGUoKTsKKyAgICAgICAgc3RvcFRocmVhZElmSWRsZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE1hbmFnZXIuaAppbmRleCA5
NTIzZDRjZDQzYmI5MThiZjczMmYzYTE1MTVjYjY4MTZhNTcxZmJhLi41NDgyZWMxNmVmZmQ2MjU0
ZDI4MmQ5YWYwZmY4MTM4N2E4OWUxMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE1hbmFnZXIuaApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBD
dXJsTWFuYWdlciB7CiAgICAgYm9vbCBhZGRUb0N1cmwoQ1VSTCogY3VybEhhbmRsZSk7CiAgICAg
Ym9vbCByZW1vdmVGcm9tQ3VybChDVVJMKiBjdXJsSGFuZGxlKTsKIAotICAgIHN0YXRpYyB2b2lk
IHdvcmtlclRocmVhZCh2b2lkKiBkYXRhKTsKKyAgICB2b2lkIHdvcmtlclRocmVhZCgpOwogCiAg
ICAgUmVmUHRyPFRocmVhZD4gbV90aHJlYWQ7CiAgICAgQ1VSTE0qIG1fY3VybE11bHRpSGFuZGxl
IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJU
aHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4
IDM1YTIzODJjZDVkOTdiMDRjNjAxZGQ3MWIzNjk5Mjk0NzFjMGY3NWYuLjQyNWM5MjQ4ZDg3MDQ4
MjdiYjBlMDM4MjFhMmFlOGRjOGFhYzBkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
clRocmVhZC5jcHAKQEAgLTEzOCwxNiArMTM4LDEzIEBAIGJvb2wgV29ya2VyVGhyZWFkOjpzdGFy
dCgpCiAgICAgaWYgKG1fdGhyZWFkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG1fdGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoV29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRTdGFydCwgdGhp
cywgIldlYkNvcmU6IFdvcmtlciIpOworICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIldl
YkNvcmU6IFdvcmtlciIsIFt0aGlzXSB7CisgICAgICAgIHdvcmtlclRocmVhZCgpOworICAgIH0p
OwogCiAgICAgcmV0dXJuIG1fdGhyZWFkOwogfQogCi12b2lkIFdvcmtlclRocmVhZDo6d29ya2Vy
VGhyZWFkU3RhcnQodm9pZCogdGhyZWFkKQotewotICAgIHN0YXRpY19jYXN0PFdvcmtlclRocmVh
ZCo+KHRocmVhZCktPndvcmtlclRocmVhZCgpOwotfQotCiB2b2lkIFdvcmtlclRocmVhZDo6d29y
a2VyVGhyZWFkKCkKIHsKICAgICAvLyBQcm9wYWdhdGUgdGhlIG1haW5UaHJlYWQncyBmZW52IHRv
IHdvcmtlcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCAyOWY0ZDk4
NzI2YmVmNzFkNTA0ZmMxZWUyOWI2YjAxNjNkZTE4ZWQzLi4yMjkwOGE4NWZjNzQ2NmU1MGNmMjI5
OWNjMjRiMWE2YWI2NjBiOTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dv
cmtlclRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgK
QEAgLTk0LDggKzk0LDYgQEAgY2xhc3MgV29ya2VyVGhyZWFkIDogcHVibGljIFJlZkNvdW50ZWQ8
V29ya2VyVGhyZWFkPiB7CiAgICAgU29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCk7CiAK
IHByaXZhdGU6Ci0gICAgLy8gU3RhdGljIGZ1bmN0aW9uIGV4ZWN1dGVkIGFzIHRoZSBjb3JlIHJv
dXRpbmUgb24gdGhlIG5ldyB0aHJlYWQuIFBhc3NlZCBhIHBvaW50ZXIgdG8gYSBXb3JrZXJUaHJl
YWQgb2JqZWN0LgotICAgIHN0YXRpYyB2b2lkIHdvcmtlclRocmVhZFN0YXJ0KHZvaWQqKTsKICAg
ICB2b2lkIHdvcmtlclRocmVhZCgpOwogCiAgICAgUmVmUHRyPFRocmVhZD4gbV90aHJlYWQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKaW5kZXggZjNjYmVkMzEwOGI0ZDFm
ZmFlYzJiNDBiYmVjZjViYzg3NjEzZDZiMi4uOWI1MDkwN2M0ZTYyNGJjYzZkMmQyMzBhMTZkZmU3
YzVjNzEwYmY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJl
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcApAQCAt
NTMsMTcgKzUzLDE1IEBAIFN0b3JhZ2VUaHJlYWQ6On5TdG9yYWdlVGhyZWFkKCkKIGJvb2wgU3Rv
cmFnZVRocmVhZDo6c3RhcnQoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
aWYgKCFtX3RocmVhZCkKLSAgICAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShTdG9yYWdl
VGhyZWFkOjp0aHJlYWRFbnRyeVBvaW50Q2FsbGJhY2ssIHRoaXMsICJXZWJDb3JlOiBMb2NhbFN0
b3JhZ2UiKTsKKyAgICBpZiAoIW1fdGhyZWFkKSB7CisgICAgICAgIG1fdGhyZWFkID0gVGhyZWFk
OjpjcmVhdGUoIldlYkNvcmU6IExvY2FsU3RvcmFnZSIsIFt0aGlzXSB7CisgICAgICAgICAgICB0
aHJlYWRFbnRyeVBvaW50KCk7CisgICAgICAgIH0pOworICAgIH0KICAgICBhY3RpdmVTdG9yYWdl
VGhyZWFkcygpLmFkZCh0aGlzKTsKICAgICByZXR1cm4gbV90aHJlYWQ7CiB9CiAKLXZvaWQgU3Rv
cmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludENhbGxiYWNrKHZvaWQqIHRocmVhZCkKLXsKLSAg
ICBzdGF0aWNfY2FzdDxTdG9yYWdlVGhyZWFkKj4odGhyZWFkKS0+dGhyZWFkRW50cnlQb2ludCgp
OwotfQotCiB2b2lkIFN0b3JhZ2VUaHJlYWQ6OnRocmVhZEVudHJ5UG9pbnQoKQogewogICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdl
L1N0b3JhZ2VUaHJlYWQuaCBiL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmgK
aW5kZXggOGNmMWIzZDRhZGM1YTMwNmE3N2VjNzdjOWMzMjY2NjE2ODdiZWM1MC4uYWRlZDIzMDE3
MGRhMDM1M2UzOGI2YjZkOWY5YTcyYzU0NGE2NzM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3Rv
cmFnZVRocmVhZC5oCkBAIC00OSw4ICs0OSw2IEBAIGNsYXNzIFN0b3JhZ2VUaHJlYWQgewogICAg
IHN0YXRpYyB2b2lkIHJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcygpOwog
CiBwcml2YXRlOgotICAgIC8vIENhbGxlZCBvbiBiYWNrZ3JvdW5kIHRocmVhZC4KLSAgICBzdGF0
aWMgdm9pZCB0aHJlYWRFbnRyeVBvaW50Q2FsbGJhY2sodm9pZCopOwogICAgIHZvaWQgdGhyZWFk
RW50cnlQb2ludCgpOwogCiAgICAgLy8gQmFja2dyb3VuZCB0aHJlYWQgcGFydCBvZiB0aGUgdGVy
bWluYXRlIHByb2NlZHVyZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCBjZTUyMjk3ZGU1MWMzMDgxNTlkNWIwMjY0YzIwMTUyZTBmNDhmMzJhLi41
MGE0MzIwMjBiZDA5Nzc3MzBmYjExNWJiYzE5Yzg5ODg1ZTMxMTFkIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTct
MDYtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAg
W1dURl0gRHJvcCBUaHJlYWQ6OmNyZWF0ZShvYnNvbGV0ZSB0aGluZ3MpIEFQSSBzaW5jZSB3ZSBj
YW4gdXNlIGxhbWJkYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTczODI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcDoKKyAgICAgICAg
KHJ1bkphdmFTY3JpcHRUaHJlYWQpOgorICAgICAgICAoc3RhcnRKYXZhU2NyaXB0VGhyZWFkcyk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAg
ICAodGVzdFRocmVhZElkZW50aWZpZXJNYXApOgorCiAyMDE3LTA2LTI1ICBNaWNoYWVsIENhdGFu
emFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMjE1MTkwLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNj
cmlwdFRocmVhZGluZy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFk
aW5nLmNwcAppbmRleCA3MTBkMmE1OWRhOTI5MDE2ZTYwOGE0Y2Y3ZDk0NmZhODdmYWQ5MzJjLi4y
ZWFmYmJlYmZiNWJiOTlkYjE2YmU0YTY0MGZmNTRkMzA2ZjE4NWY5IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0
aWMgVGhyZWFkU2V0JiBqYXZhU2NyaXB0VGhyZWFkcygpCiAKIC8vIFRoaXMgZnVuY3Rpb24gZXhl
cmNpc2VzIEpTQyBpbiBhIGxvb3AgdW50aWwgamF2YVNjcmlwdFRocmVhZHNTaG91bGRUZXJtaW5h
dGUKIC8vIGJlY29tZXMgdHJ1ZSBvciBpdCBwcm9iYWJpbGlzdGljYWxseSBkZWNpZGVzIHRvIHNw
YXduIGEgcmVwbGFjZW1lbnQgdGhyZWFkIGFuZCBleGl0Lgotdm9pZCBydW5KYXZhU2NyaXB0VGhy
ZWFkKHZvaWQqKQordm9pZCBydW5KYXZhU2NyaXB0VGhyZWFkKCkKIHsKICAgICBzdGF0aWMgY29u
c3QgY2hhciogY29uc3Qgc2NyaXB0ID0KICAgICAgICAgInZhciBhcnJheSA9IFtdOyIKQEAgLTEx
MSw3ICsxMTEsNyBAQCB2b2lkIHJ1bkphdmFTY3JpcHRUaHJlYWQodm9pZCopCiAgICAgICAgIFRo
cmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgICAgIHRocmVhZC5kZXRhY2go
KTsKICAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS5yZW1vdmUoJnRocmVhZCk7Ci0gICAgICAg
IGphdmFTY3JpcHRUaHJlYWRzKCkuYWRkKFRocmVhZDo6Y3JlYXRlKCZydW5KYXZhU2NyaXB0VGhy
ZWFkLCAwLCAwKSk7CisgICAgICAgIGphdmFTY3JpcHRUaHJlYWRzKCkuYWRkKFRocmVhZDo6Y3Jl
YXRlKCJKYXZhU2NyaXB0IFRocmVhZCIsICZydW5KYXZhU2NyaXB0VGhyZWFkKSk7CiAgICAgICAg
IGJyZWFrOwogICAgIH0KIApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgc3RhcnRKYXZhU2NyaXB0
VGhyZWFkcygpCiAgICAgTG9ja0hvbGRlciBsb2NrZXIoamF2YVNjcmlwdFRocmVhZHNNdXRleCgp
KTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamF2YVNjcmlwdFRocmVhZHNDb3VudDsg
KytpKQotICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygpLmFkZChUaHJlYWQ6OmNyZWF0ZSgmcnVu
SmF2YVNjcmlwdFRocmVhZCwgMCwgMCkpOworICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygpLmFk
ZChUaHJlYWQ6OmNyZWF0ZSgiSmF2YVNjcmlwdCBUaHJlYWQiLCAmcnVuSmF2YVNjcmlwdFRocmVh
ZCkpOwogfQogCiB2b2lkIHN0b3BKYXZhU2NyaXB0VGhyZWFkcygpCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggNTIzZjNmM2YxNTAwNGJjZDdlNjZhYzE1
ZWFhNDEyYTY2YTY5NWI4Ni4uMmM4ZGEyYzczMDIwMGFiYTg5NDFiN2ExNjA3OWUzNDY5NTc0YTg0
NCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpAQCAtMTA3
OSw3ICsxMDc5LDkgQEAgc3RhdGljIHZvaWQgdGVzdFRocmVhZElkZW50aWZpZXJNYXAoKQogCiAg
ICAgLy8gTm93IGNyZWF0ZSBhbm90aGVyIHRocmVhZCB1c2luZyBXVEYuIE9uIE9TWCwgaXQgd2ls
bCBoYXZlIHRoZSBzYW1lIHB0aHJlYWQgaGFuZGxlCiAgICAgLy8gYnV0IHNob3VsZCBnZXQgYSBk
aWZmZXJlbnQgUmVmUHRyPFRocmVhZD4uCi0gICAgVGhyZWFkOjpjcmVhdGUocnVuVGhyZWFkLCAw
LCAiRHVtcFJlbmRlclRyZWU6IHRlc3QiKTsKKyAgICBUaHJlYWQ6OmNyZWF0ZSgiRHVtcFJlbmRl
clRyZWU6IHRlc3QiLCBbXSB7CisgICAgICAgIHJ1blRocmVhZChudWxscHRyKTsKKyAgICB9KTsK
IH0KIAogc3RhdGljIHZvaWQgYWxsb2NhdGVHbG9iYWxDb250cm9sbGVycygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313815</attachid>
            <date>2017-06-25 14:13:27 -0700</date>
            <delta_ts>2017-06-25 14:20:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173825-20170626061326.patch</filename>
            <type>text/plain</type>
            <size>41633</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZTFmNmE5ZmJmYzJmNGM1NWZjNjZhNTIzZDIzYWU2NmUwZTZlMTdiLi44NmUzNjZjNWUwZTI2N2M0
NTE5ZTYyZWFlNDBmNjE2Yzg5YWU5MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNy0wNi0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBEcm9wIFRocmVhZDo6Y3JlYXRlKG9ic29sZXRlIHRoaW5n
cykgQVBJIHNpbmNlIHdlIGNhbiB1c2UgbGFtYmRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChzdGFydFRpbWVvdXRU
aHJlYWRJZk5lZWRlZCk6CisgICAgICAgICh0aW1lb3V0VGhyZWFkTWFpbik6IERlbGV0ZWQuCisK
IDIwMTctMDYtMjUgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAg
ICAgICAgIFJlbW92ZSBleGNlc3NpdmUgaGVhZGVycyBmcm9tIEphdmFTY3JpcHRDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IGExY2RiYjNjZGJjN2U5MDNhMmZlNDMzMWJiZWNiMTM2MTIyMzI4NWMuLmQ0ZGM4YTc2ZmZhMDAy
YmNlNTY5YzU3OTJkOTU3NzM4YzI2OTQ4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMDYt
MjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dU
Rl0gRHJvcCBUaHJlYWQ6OmNyZWF0ZShvYnNvbGV0ZSB0aGluZ3MpIEFQSSBzaW5jZSB3ZSBjYW4g
dXNlIGxhbWJkYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczODI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhyZWFkOjpjcmVhdGUoVGhyZWFkRnVuY3Rpb24sIHZvaWQqIGRhdGEsIGNvbnN0IGNoYXIq
IG5hbWUpIGlzIGEgYml0IG9sZCBBUEkuCisgICAgICAgIFNpbmNlIHdlIGhhdmUgQysrIGxhbWJk
YSwgdGhlIGFib3ZlIEFQSSBpcyBzaW1wbHkgdW5uZWNlc3NhcnkuIEFuZCBDKysgbGFtYmRhCisg
ICAgICAgIGJhc2VkIG9uZSBpcyBiZXR0ZXIgc2luY2UgdGhlIGFib3ZlIEFQSSBuZWVkcyBjYXN0
aW5nIGRhdGEgdG8gYW5kIGZyb20gdm9pZCouCisKKyAgICAgICAgKiB3dGYvUGFyYWxsZWxKb2Jz
R2VuZXJpYy5jcHA6CisgICAgICAgIChXVEY6OlBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFBy
aXZhdGU6OnRyeUxvY2tGb3IpOgorICAgICAgICAoV1RGOjpQYXJhbGxlbEVudmlyb25tZW50OjpU
aHJlYWRQcml2YXRlOjp3b3JrZXJUaHJlYWQpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9QYXJh
bGxlbEpvYnNHZW5lcmljLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAg
ICogd3RmL1RocmVhZGluZ1dpbi5jcHA6CisgICAgICAgIChXVEY6OmNyZWF0ZVRocmVhZCk6CisK
IDIwMTctMDYtMjUgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAg
ICAgICAgIFJlbW92ZSBleGNlc3NpdmUgaGVhZGVycyBmcm9tIEphdmFTY3JpcHRDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNDJmZDRhYjJmY2JhZTU4ZDM1ZjMxMzE1ZDdlMTQzNTRmZGU2YzcyZi4uODdjYjcy
NGY2OTRjZTNlMjI2ZjExODIwMmZiZjExMTVmODI3MjM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDY2IEBACisyMDE3LTA2LTI1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtXVEZdIERyb3AgVGhyZWFkOjpjcmVhdGUob2Jzb2xldGUgdGhpbmdzKSBB
UEkgc2luY2Ugd2UgY2FuIHVzZSBsYW1iZGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MzgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJTZXJ2ZXI6OklEQlNlcnZlcjo6SURCU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNl
cnZlcjo6SURCU2VydmVyOjpkYXRhYmFzZVRocmVhZEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3lu
Y0F1ZGlvRGVjb2Rlcjo6QXN5bmNBdWRpb0RlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNBdWRpb0RlY29kZXI6OnRocmVhZEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zm
bGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZyk6CisgICAgICAgIChXZWJD
b3JlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVSZW5kZXJFbnRyeSk6IERl
bGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpzdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWRTdGFydCk6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6Z2NUaW1lckZpcmVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVh
ZEZvckRlYnVnZ2luZyk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okljb25EYXRhYmFzZTo6b3Blbik6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWRTdGFydCk6IERlbGV0ZWQuCisg
ICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmg6CisgICAgICAgICogcGFnZS9SZXNv
dXJjZVVzYWdlVGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VUaHJl
YWQ6OmNyZWF0ZVRocmVhZElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNh
Z2VUaHJlYWQ6OnRocmVhZENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1Jlc291
cmNlVXNhZ2VUaHJlYWQuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJl
YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpjcmVhdGVUaHJlYWRJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OnRocmVhZENhbGxi
YWNrKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RocmVhZDo6dGhyZWFk
Qm9keSk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFk
Lmg6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KToK
KyAgICAgICAgKFdlYkNvcmU6OmRhdGFiYXNlTG9hZGVyRW50cnkpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJD
b252b2x2ZXI6OlJldmVyYkNvbnZvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5k
VGhyZWFkRW50cnkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlci5oOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjp1c2VCYWNrZ3Jv
dW5kVGhyZWFkcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29w
Q0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZGVyUnVuTG9vcCk6CisgICAgICAgIChXZWJD
b3JlOjpydW5Mb2FkZXJUaHJlYWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY3VybC9DdXJsTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTWFuYWdlcjo6
c3RhcnRUaHJlYWRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTWFuYWdlcjo6d29y
a2VyVGhyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE1hbmFnZXIu
aDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6
d29ya2VyVGhyZWFkU3RhcnQpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhy
ZWFkLmg6CisKIDIwMTctMDYtMjUgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4
LnJ1PgogCiAgICAgICAgIFJlbW92ZSBleGNlc3NpdmUgaGVhZGVycyBmcm9tIFdlYkNvcmUvcGxh
dGZvcm0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggN2YwZmNmZDQ1MzE2N2Y1YjVhMDU2ZGFhNjNjNmU4NzEwM2U5YWIz
My4uYjgxZjJlMjNlODJlYmZjNzU0ZDY5YzdjZGExOTRiZTNlZWE2ZjJhMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNSBAQAorMjAxNy0wNi0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdt
YWlsLmNvbT4KKworICAgICAgICBbV1RGXSBEcm9wIFRocmVhZDo6Y3JlYXRlKG9ic29sZXRlIHRo
aW5ncykgQVBJIHNpbmNlIHdlIGNhbiB1c2UgbGFtYmRhCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MjUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpzdGFydCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdG9yYWdlVGhyZWFkOjp0aHJlYWRFbnRyeVBvaW50Q2FsbGJhY2spOiBEZWxldGVkLgorICAg
ICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5oOgorCiAyMDE3LTA2LTE2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFZpc3VhbCBT
dHVkaW8gMjAxNyA2NC1iaXQgYnVpbGQgYWZ0ZXIgcjIxODI1OApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApp
bmRleCA2ZjE3NmE5MWJjMjRiMTRlMDM5YTBlNWQzODA3NDViMWRhNmM4ZjU4Li5hNzFmZTc2M2Fj
OTRjM2RkNjMzZmY3NGQxZDZkNWM5MTVhODllNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAt
MzE3MywyMiArMzE3MywyMCBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpOwog
c3RhdGljIGRvdWJsZSBzX2Rlc2lyZWRUaW1lb3V0Owogc3RhdGljIGRvdWJsZSBzX3RpbWVvdXRN
dWx0aXBsaWVyID0gMS4wOwogCi1zdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHRp
bWVvdXRUaHJlYWRNYWluKHZvaWQqKQotewotICAgIFNlY29uZHMgdGltZW91dER1cmF0aW9uKHNf
ZGVzaXJlZFRpbWVvdXQgKiBzX3RpbWVvdXRNdWx0aXBsaWVyKTsKLSAgICBzbGVlcCh0aW1lb3V0
RHVyYXRpb24pOwotICAgIGRhdGFMb2coIlRpbWVkIG91dCBhZnRlciAiLCB0aW1lb3V0RHVyYXRp
b24sICIgc2Vjb25kcyFcbiIpOwotICAgIENSQVNIKCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHN0YXJ0
VGltZW91dFRocmVhZElmTmVlZGVkKCkKIHsKICAgICBpZiAoY2hhciogdGltZW91dFN0cmluZyA9
IGdldGVudigiSlNDVEVTVF90aW1lb3V0IikpIHsKICAgICAgICAgaWYgKHNzY2FuZih0aW1lb3V0
U3RyaW5nLCAiJWxmIiwgJnNfZGVzaXJlZFRpbWVvdXQpICE9IDEpIHsKICAgICAgICAgICAgIGRh
dGFMb2coIldBUk5JTkc6IHRpbWVvdXQgc3RyaW5nIGlzIG1hbGZvcm1lZCwgZ290ICIsIHRpbWVv
dXRTdHJpbmcsCiAgICAgICAgICAgICAgICAgIiBidXQgZXhwZWN0ZWQgYSBudW1iZXIuIE5vdCB1
c2luZyBhIHRpbWVvdXQuXG4iKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBUaHJlYWQ6
OmNyZWF0ZSh0aW1lb3V0VGhyZWFkTWFpbiwgMCwgImpzYyBUaW1lb3V0IFRocmVhZCIpOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgVGhyZWFkOjpjcmVhdGUoImpzYyBUaW1lb3V0IFRo
cmVhZCIsIFtdICgpIHsKKyAgICAgICAgICAgICAgICBTZWNvbmRzIHRpbWVvdXREdXJhdGlvbihz
X2Rlc2lyZWRUaW1lb3V0ICogc190aW1lb3V0TXVsdGlwbGllcik7CisgICAgICAgICAgICAgICAg
c2xlZXAodGltZW91dER1cmF0aW9uKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJUaW1lZCBv
dXQgYWZ0ZXIgIiwgdGltZW91dER1cmF0aW9uLCAiIHNlY29uZHMhXG4iKTsKKyAgICAgICAgICAg
ICAgICBDUkFTSCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuY3BwIGIvU291cmNl
L1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAKaW5kZXggY2NlMTEwNmQ0NjdiNzIwODNj
MWVkYjIxM2FkNTljNDQwMzE3YTRlZS4uYWFjYzdjY2MzNTU2NmZmNjlkM2EwYzIxYjZjNmEyOTQz
NzU1YzM3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAKQEAgLTkzLDgg
KzkzLDIyIEBAIGJvb2wgUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0ZTo6dHJ5TG9j
a0ZvcihQYXJhbGxlbEVudmlyb25tZW50KiBwYXJlbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKLSAgICBpZiAoIW1fdGhyZWFkKQotICAgICAgICBtX3RocmVhZCA9IFRocmVhZDo6
Y3JlYXRlKCZQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjp3b3JrZXJUaHJlYWQs
IHRoaXMsICJQYXJhbGxlbCB3b3JrZXIiKTsKKyAgICBpZiAoIW1fdGhyZWFkKSB7CisgICAgICAg
IG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIlBhcmFsbGVsIHdvcmtlciIsIFt0aGlzXSB7Cisg
ICAgICAgICAgICBMb2NrSG9sZGVyIGxvY2sobV9tdXRleCk7CisKKyAgICAgICAgICAgIHdoaWxl
IChtX3RocmVhZCkgeworICAgICAgICAgICAgICAgIGlmIChtX3J1bm5pbmcpIHsKKyAgICAgICAg
ICAgICAgICAgICAgKCptX3RocmVhZEZ1bmN0aW9uKShtX3BhcmFtZXRlcnMpOworICAgICAgICAg
ICAgICAgICAgICBtX3J1bm5pbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgbV9wYXJl
bnQgPSAwOworICAgICAgICAgICAgICAgICAgICBtX3RocmVhZENvbmRpdGlvbi5ub3RpZnlPbmUo
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtX3RocmVhZENvbmRpdGlv
bi53YWl0KG1fbXV0ZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CiAKICAg
ICBpZiAobV90aHJlYWQpCiAgICAgICAgIG1fcGFyZW50ID0gcGFyZW50OwpAQCAtMTIxLDIyICsx
MzUsNSBAQCB2b2lkIFBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFByaXZhdGU6OndhaXRGb3JG
aW5pc2goKQogICAgICAgICBtX3RocmVhZENvbmRpdGlvbi53YWl0KG1fbXV0ZXgpOwogfQogCi12
b2lkIFBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFByaXZhdGU6OndvcmtlclRocmVhZCh2b2lk
KiB0aHJlYWREYXRhKQotewotICAgIFRocmVhZFByaXZhdGUqIHNoYXJlZFRocmVhZCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8VGhyZWFkUHJpdmF0ZSo+KHRocmVhZERhdGEpOwotICAgIExvY2tIb2xkZXIg
bG9jayhzaGFyZWRUaHJlYWQtPm1fbXV0ZXgpOwotCi0gICAgd2hpbGUgKHNoYXJlZFRocmVhZC0+
bV90aHJlYWQpIHsKLSAgICAgICAgaWYgKHNoYXJlZFRocmVhZC0+bV9ydW5uaW5nKSB7Ci0gICAg
ICAgICAgICAoKnNoYXJlZFRocmVhZC0+bV90aHJlYWRGdW5jdGlvbikoc2hhcmVkVGhyZWFkLT5t
X3BhcmFtZXRlcnMpOwotICAgICAgICAgICAgc2hhcmVkVGhyZWFkLT5tX3J1bm5pbmcgPSBmYWxz
ZTsKLSAgICAgICAgICAgIHNoYXJlZFRocmVhZC0+bV9wYXJlbnQgPSAwOwotICAgICAgICAgICAg
c2hhcmVkVGhyZWFkLT5tX3RocmVhZENvbmRpdGlvbi5ub3RpZnlPbmUoKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHNoYXJlZFRocmVhZC0+bV90aHJlYWRDb25kaXRpb24ud2FpdChzaGFyZWRUaHJl
YWQtPm1fbXV0ZXgpOwotICAgIH0KLX0KLQogfSAvLyBuYW1lc3BhY2UgV1RGCiAjZW5kaWYgLy8g
RU5BQkxFKFRIUkVBRElOR19HRU5FUklDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFy
YWxsZWxKb2JzR2VuZXJpYy5oIGIvU291cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5o
CmluZGV4IGEyMGNhYjYxZWU3OWNlYWJkNTRlNjI3N2NlYjU3ZGY2OGU2NmE5MGQuLjdmNzA4MGM1
NGMyOGRhZTY0M2MyYTg2NjFkM2Q2MjM0YTkyZDFkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEpv
YnNHZW5lcmljLmgKQEAgLTY0LDggKzY0LDYgQEAgY2xhc3MgUGFyYWxsZWxFbnZpcm9ubWVudCB7
CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUaHJlYWRQcml2YXRlKCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgc3RhdGljIHZvaWQgd29ya2VyVGhyZWFkKHZvaWQqKTsKLQogICAg
IHByaXZhdGU6CiAgICAgICAgIFJlZlB0cjxUaHJlYWQ+IG1fdGhyZWFkOwogICAgICAgICBib29s
IG1fcnVubmluZyB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRp
bmcuY3BwIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAppbmRleCA3ODk2ZTljMDVhMmNl
ZmVmODVjNTc1Y2Q5NmI0M2I3M2RlNzM0NTRiLi5kZGMyOGMyYTU0YjMyYTFhNjY0Y2EzYjA5N2Yz
YWJlMmY3Yzg2Zjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKQEAgLTExMSwxMyArMTExLDYgQEAgUmVm
UHRyPFRocmVhZD4gVGhyZWFkOjpjcmVhdGUoY29uc3QgY2hhciogbmFtZSwgRnVuY3Rpb248dm9p
ZCgpPiYmIGVudHJ5UG9pbnQpCiAgICAgcmV0dXJuIFRocmVhZDo6Y3JlYXRlSW50ZXJuYWwodGhy
ZWFkRW50cnlQb2ludCwgY29udGV4dCwgbmFtZSk7CiB9CiAKLVJlZlB0cjxUaHJlYWQ+IFRocmVh
ZDo6Y3JlYXRlKFRocmVhZEZ1bmN0aW9uIGVudHJ5UG9pbnQsIHZvaWQqIGRhdGEsIGNvbnN0IGNo
YXIqIG5hbWUpCi17Ci0gICAgcmV0dXJuIFRocmVhZDo6Y3JlYXRlKG5hbWUsIFtlbnRyeVBvaW50
LCBkYXRhXSB7Ci0gICAgICAgIGVudHJ5UG9pbnQoZGF0YSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQg
VGhyZWFkOjpkaWRFeGl0KCkKIHsKICAgICBzdGQ6OnVuaXF1ZV9sb2NrPHN0ZDo6bXV0ZXg+IGxv
Y2tlcihtX211dGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCmluZGV4IDVkNWIxNjIwYzE4ZGM0
Y2IyMGVhYWU3ZWI1OTcxYmNmNWE5ZGQ2MTQuLmJkNjE1ZmI5MmM2NDJlNThlMGJhMWM1NzRjYWM0
ZDc2ODFlOWYyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcApAQCAtNTE2LDcgKzUxNiw5IEBA
IERXT1JEIGFic29sdXRlVGltZVRvV2FpdFRpbWVvdXRJbnRlcnZhbChkb3VibGUgYWJzb2x1dGVU
aW1lKQogLy8gUmVtb3ZlIHRoaXMgd29ya2Fyb3VuZCBjb2RlIHdoZW4gPHJkYXI6Ly9wcm9ibGVt
LzMxNzkzMjEzPiBpcyBmaXhlZC4KIFRocmVhZElkZW50aWZpZXIgY3JlYXRlVGhyZWFkKFRocmVh
ZEZ1bmN0aW9uIGZ1bmN0aW9uLCB2b2lkKiBkYXRhLCBjb25zdCBjaGFyKiB0aHJlYWROYW1lKQog
ewotICAgIHJldHVybiBUaHJlYWQ6OmNyZWF0ZShmdW5jdGlvbiwgZGF0YSwgdGhyZWFkTmFtZSkt
PmlkKCk7CisgICAgcmV0dXJuIFRocmVhZDo6Y3JlYXRlKHRocmVhZE5hbWUsIFtmdW5jdGlvbiwg
ZGF0YV0geworICAgICAgICBmdW5jdGlvbihkYXRhKTsKKyAgICB9KS0+aWQoKTsKIH0KIAogaW50
IHdhaXRGb3JUaHJlYWRDb21wbGV0aW9uKFRocmVhZElkZW50aWZpZXIgdGhyZWFkSUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
Y3BwCmluZGV4IDY0NDNkZGNhOTM0OTBkOGM5ZTZlNmIxMmQzNDIzYzBiODM2OTRlODYuLjQyMGMz
YTZhZGVlYzRkZTYzYTk4MjJjOTU3ODU1YTIxMTc0YjMzZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwCkBAIC01Niw3
ICs1Niw5IEBAIElEQlNlcnZlcjo6SURCU2VydmVyKElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZp
bGVIYW5kbGVyJiBmaWxlSGFuZGxlcikKICAgICA6IG1fYmFja2luZ1N0b3JlVGVtcG9yYXJ5Rmls
ZUhhbmRsZXIoZmlsZUhhbmRsZXIpCiB7CiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX2RhdGFi
YXNlVGhyZWFkQ3JlYXRpb25Mb2NrKTsKLSAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKElE
QlNlcnZlcjo6ZGF0YWJhc2VUaHJlYWRFbnRyeSwgdGhpcywgIkluZGV4ZWREYXRhYmFzZSBTZXJ2
ZXIiKTsKKyAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbmRleGVkRGF0YWJhc2UgU2Vy
dmVyIiwgW3RoaXNdIHsKKyAgICAgICAgZGF0YWJhc2VSdW5Mb29wKCk7CisgICAgfSk7CiB9CiAK
IElEQlNlcnZlcjo6SURCU2VydmVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXJlY3RvcnlQYXRo
LCBJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxlSGFuZGxlciYgZmlsZUhhbmRsZXIpCkBAIC02
Niw3ICs2OCw5IEBAIElEQlNlcnZlcjo6SURCU2VydmVyKGNvbnN0IFN0cmluZyYgZGF0YWJhc2VE
aXJlY3RvcnlQYXRoLCBJREJCYWNraW5nU3RvcmVUZW1wb3JhCiAgICAgTE9HKEluZGV4ZWREQiwg
IklEQlNlcnZlciBjcmVhdGVkIGF0IHBhdGggJXMiLCBkYXRhYmFzZURpcmVjdG9yeVBhdGgudXRm
OCgpLmRhdGEoKSk7CiAKICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fZGF0YWJhc2VUaHJlYWRD
cmVhdGlvbkxvY2spOwotICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoSURCU2VydmVyOjpk
YXRhYmFzZVRocmVhZEVudHJ5LCB0aGlzLCAiSW5kZXhlZERhdGFiYXNlIFNlcnZlciIpOworICAg
IG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkluZGV4ZWREYXRhYmFzZSBTZXJ2ZXIiLCBbdGhp
c10geworICAgICAgICBkYXRhYmFzZVJ1bkxvb3AoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBJREJT
ZXJ2ZXI6OnJlZ2lzdGVyQ29ubmVjdGlvbihJREJDb25uZWN0aW9uVG9DbGllbnQmIGNvbm5lY3Rp
b24pCkBAIC01MDAsMTMgKzUwNCw2IEBAIHZvaWQgSURCU2VydmVyOjpwb3N0RGF0YWJhc2VUYXNr
UmVwbHkoQ3Jvc3NUaHJlYWRUYXNrJiYgdGFzaykKICAgICB9KTsKIH0KIAotdm9pZCBJREJTZXJ2
ZXI6OmRhdGFiYXNlVGhyZWFkRW50cnkodm9pZCogdGhyZWFkRGF0YSkKLXsKLSAgICBBU1NFUlQo
dGhyZWFkRGF0YSk7Ci0gICAgSURCU2VydmVyKiBzZXJ2ZXIgPSByZWludGVycHJldF9jYXN0PElE
QlNlcnZlcio+KHRocmVhZERhdGEpOwotICAgIHNlcnZlci0+ZGF0YWJhc2VSdW5Mb29wKCk7Ci19
Ci0KIHZvaWQgSURCU2VydmVyOjpkYXRhYmFzZVJ1bkxvb3AoKQogewogICAgIEFTU0VSVCghaXNN
YWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL0lEQlNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2VydmVyL0lEQlNlcnZlci5oCmluZGV4IGU0NmY3YjU4MjFlYTAxNmJmZTI1NGY0ZDE3N2M2ZWFh
ZDE1MmMyZDguLmRiMTBkNjlkZTE2YjkwNzVkMTQ1ZTRjODE2ZmY2YzI0MGI5ODVkMDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVy
LmgKQEAgLTExOCw3ICsxMTgsNiBAQCBjbGFzcyBJREJTZXJ2ZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxJREJTZXJ2ZXI+IHsKICAgICB2b2lkIHBlcmZvcm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlc0Zv
ck9yaWdpbnMoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mLCB1aW50NjRfdCBjYWxs
YmFja0lEKTsKICAgICB2b2lkIGRpZFBlcmZvcm1DbG9zZUFuZERlbGV0ZURhdGFiYXNlcyh1aW50
NjRfdCBjYWxsYmFja0lEKTsKIAotICAgIHN0YXRpYyB2b2lkIGRhdGFiYXNlVGhyZWFkRW50cnko
dm9pZCopOwogICAgIHZvaWQgZGF0YWJhc2VSdW5Mb29wKCk7CiAgICAgdm9pZCBoYW5kbGVUYXNr
UmVwbGllc09uTWFpblRocmVhZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwCmluZGV4IDdjZjdhZjhmZWEyZTFlNjdk
NTIzN2M4NzFhMDE1YjNjNDkwMGEyN2IuLjExNTAxNTc1YTczY2Y0NjkxYjQ1MjMyYzlhNzAzYTRh
YTY5M2QxYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5
bmNBdWRpb0RlY29kZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXN5bmNBdWRpb0RlY29kZXIuY3BwCkBAIC0zOSw3ICszOSw5IEBAIEFzeW5jQXVkaW9EZWNvZGVy
OjpBc3luY0F1ZGlvRGVjb2RlcigpCiB7CiAgICAgLy8gU3RhcnQgd29ya2VyIHRocmVhZC4KICAg
ICBMb2NrSG9sZGVyIGxvY2sobV90aHJlYWRDcmVhdGlvbk11dGV4KTsKLSAgICBtX3RocmVhZCA9
IFRocmVhZDo6Y3JlYXRlKEFzeW5jQXVkaW9EZWNvZGVyOjp0aHJlYWRFbnRyeSwgdGhpcywgIkF1
ZGlvIERlY29kZXIiKTsKKyAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJBdWRpbyBEZWNv
ZGVyIiwgW3RoaXNdIHsKKyAgICAgICAgcnVuTG9vcCgpOworICAgIH0pOwogfQogCiBBc3luY0F1
ZGlvRGVjb2Rlcjo6fkFzeW5jQXVkaW9EZWNvZGVyKCkKQEAgLTU5LDE0ICs2MSw2IEBAIHZvaWQg
QXN5bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5jKFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0Rh
dGEsIGZsb2F0IHNhbXBsZVJhCiAgICAgbV9xdWV1ZS5hcHBlbmQoV1RGTW92ZShkZWNvZGluZ1Rh
c2spKTsgLy8gbm90ZSB0aGF0IG93bmVyc2hpcCBvZiB0aGUgdGFzayBpcyBlZmZlY3RpdmVseSB0
YWtlbiBieSB0aGUgcXVldWUuCiB9CiAKLS8vIEFzeW5jaHJvbm91c2x5IGRlY29kZSBpbiB0aGlz
IHRocmVhZC4KLXZvaWQgQXN5bmNBdWRpb0RlY29kZXI6OnRocmVhZEVudHJ5KHZvaWQqIHRocmVh
ZERhdGEpCi17Ci0gICAgQVNTRVJUKHRocmVhZERhdGEpOwotICAgIEFzeW5jQXVkaW9EZWNvZGVy
KiBkZWNvZGVyID0gcmVpbnRlcnByZXRfY2FzdDxBc3luY0F1ZGlvRGVjb2Rlcio+KHRocmVhZERh
dGEpOwotICAgIGRlY29kZXItPnJ1bkxvb3AoKTsKLX0KLQogdm9pZCBBc3luY0F1ZGlvRGVjb2Rl
cjo6cnVuTG9vcCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKaW5kZXgg
ZjEyNTEwZDE5N2MzZGY5NmNjMDU2ODU0NmNiYzNmYjQ2ZWFhYThhMS4uNDJmYzAwMjk5YTNlODg4
YmQ0NmY2MjliYjZmYTg2YTY2OTdhMGM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaApAQCAtNzQsNyArNzQsNiBAQCBjbGFz
cyBBc3luY0F1ZGlvRGVjb2RlciB7CiAgICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlcj4gbV9hdWRp
b0J1ZmZlcjsKICAgICB9OwogICAgIAotICAgIHN0YXRpYyB2b2lkIHRocmVhZEVudHJ5KHZvaWQq
IHRocmVhZERhdGEpOwogICAgIHZvaWQgcnVuTG9vcCgpOwogCiAgICAgUmVmUHRyPFRocmVhZD4g
bV90aHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5kZXggMzdiOTU4ODQwNDFk
YzQ1ZGY1NDgyOTRhMmY0ZDE4MWMwZmE4YWU5My4uZTk5NWIwODY1ODcwNjc5ZjdhNmJmOWEyMWFj
MjhlMWRmM2UzMTQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcApAQCAtODIsMTgg
KzgyLDEyIEBAIHZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmlu
ZygpCiAgICAgaWYgKCFtX3N0YXJ0ZWRSZW5kZXJpbmcpIHsKICAgICAgICAgbV9zdGFydGVkUmVu
ZGVyaW5nID0gdHJ1ZTsKICAgICAgICAgcmVmKCk7IC8vIFNlZSBjb3JyZXNwb25kaW5nIGRlcmVm
KCkgY2FsbCBpbiBub3RpZnlDb21wbGV0ZURpc3BhdGNoKCkuCi0gICAgICAgIG1fcmVuZGVyVGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpvZmZsaW5l
UmVuZGVyRW50cnksIHRoaXMsICJvZmZsaW5lIHJlbmRlcmVyIik7CisgICAgICAgIG1fcmVuZGVy
VGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIm9mZmxpbmUgcmVuZGVyZXIiLCBbdGhpc10geworICAg
ICAgICAgICAgb2ZmbGluZVJlbmRlcigpOworICAgICAgICB9KTsKICAgICB9CiB9CiAKLS8vIERv
IG9mZmxpbmUgcmVuZGVyaW5nIGluIHRoaXMgdGhyZWFkLgotdm9pZCBPZmZsaW5lQXVkaW9EZXN0
aW5hdGlvbk5vZGU6Om9mZmxpbmVSZW5kZXJFbnRyeSh2b2lkKiB0aHJlYWREYXRhKQotewotICAg
IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSogZGVzdGluYXRpb25Ob2RlID0gcmVpbnRlcnBy
ZXRfY2FzdDxPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUqPih0aHJlYWREYXRhKTsKLSAgICBB
U1NFUlQoZGVzdGluYXRpb25Ob2RlKTsKLSAgICBkZXN0aW5hdGlvbk5vZGUtPm9mZmxpbmVSZW5k
ZXIoKTsKLX0KLQogdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVSZW5k
ZXIoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlLmgKaW5kZXggNTY5MDEzOGIxNjU3MGIzZjlkMjM3ZjlkZDRhOGVhMjNkNzNmZmFhNi4uYjk0
NWJlZjkxZjdjZGViYWRhNTIxZWQwNTllYmVjNGNjNDI1YjViZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZS5oCkBAIC02NSw3ICs2NSw2IEBAIGNsYXNzIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZSA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7CiAgICAgLy8gUmVuZGVyaW5nIHRo
cmVhZC4KICAgICBSZWZQdHI8VGhyZWFkPiBtX3JlbmRlclRocmVhZDsKICAgICBib29sIG1fc3Rh
cnRlZFJlbmRlcmluZzsKLSAgICBzdGF0aWMgdm9pZCBvZmZsaW5lUmVuZGVyRW50cnkodm9pZCog
dGhyZWFkRGF0YSk7CiAgICAgdm9pZCBvZmZsaW5lUmVuZGVyKCk7CiAgICAgCiAgICAgLy8gRm9y
IGNvbXBsZXRpb24gY2FsbGJhY2sgb24gbWFpbiB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCmluZGV4IGQ3MDgx
NGY5YjU1YjI0OGZkNjRlMWFmZjQzZTM3Njc0ZjE2OTJkNGIuLjExNTI0Y2RjZDJhYjM0MmZiMDlm
ZTYxOWFiNDZmNTc5MjNjZTY5ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwCkBAIC02Myw3ICs2Myw5IEBAIGJvb2wg
RGF0YWJhc2VUaHJlYWQ6OnN0YXJ0KCkKICAgICBpZiAobV90aHJlYWQpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShEYXRhYmFzZVRocmVhZDo6
ZGF0YWJhc2VUaHJlYWRTdGFydCwgdGhpcywgIldlYkNvcmU6IERhdGFiYXNlIik7CisgICAgbV90
aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTogRGF0YWJhc2UiLCBbdGhpc10geworICAg
ICAgICBkYXRhYmFzZVRocmVhZCgpOworICAgIH0pOwogCiAgICAgcmV0dXJuIG1fdGhyZWFkOwog
fQpAQCAtODcsMTIgKzg5LDYgQEAgYm9vbCBEYXRhYmFzZVRocmVhZDo6dGVybWluYXRpb25SZXF1
ZXN0ZWQoRGF0YWJhc2VUYXNrU3luY2hyb25pemVyKiB0YXNrU3luY2hyb24KICAgICByZXR1cm4g
bV9xdWV1ZS5raWxsZWQoKTsKIH0KIAotdm9pZCBEYXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJl
YWRTdGFydCh2b2lkKiB2RGF0YWJhc2VUaHJlYWQpCi17Ci0gICAgRGF0YWJhc2VUaHJlYWQqIGRi
VGhyZWFkID0gc3RhdGljX2Nhc3Q8RGF0YWJhc2VUaHJlYWQqPih2RGF0YWJhc2VUaHJlYWQpOwot
ICAgIGRiVGhyZWFkLT5kYXRhYmFzZVRocmVhZCgpOwotfQotCiB2b2lkIERhdGFiYXNlVGhyZWFk
OjpkYXRhYmFzZVRocmVhZCgpCiB7CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oCmluZGV4IDBlN2EwMDBiNGI3NjNmZmI3
YWM1ZWEwMGFhOTU4N2IwNzhlNmEzY2QuLjM0MDA5ZDFiMjJjNDRjMmUwM2VlY2JiN2Y0NGU0Yzdj
OGQ3ZGFkNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlVGhyZWFkLmgKQEAgLTY1LDcgKzY1LDYgQEAgY2xhc3MgRGF0YWJhc2VUaHJlYWQg
OiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RGF0YWJhc2VUaHJlYWQ+IHsKIHByaXZhdGU6
CiAgICAgRGF0YWJhc2VUaHJlYWQoKTsKIAotICAgIHN0YXRpYyB2b2lkIGRhdGFiYXNlVGhyZWFk
U3RhcnQodm9pZCopOwogICAgIHZvaWQgZGF0YWJhc2VUaHJlYWQoKTsKIAogICAgIExvY2sgbV90
aHJlYWRDcmVhdGlvbk11dGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvR0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJv
bGxlci5jcHAKaW5kZXggNWFlMzk3MmM2NGM5ZjlmMzQ3NWEwMjZmOWRhZmI4ZDY4ZTU5MDM4OS4u
YjI2Zjc1NzAwOWM2ZTc4YWJhMTIxZDIwODA3YjA4NTIxYmQ5NWYwNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5n
IG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgY29s
bGVjdCh2b2lkKikKK3N0YXRpYyB2b2lkIGNvbGxlY3QoKQogewogICAgIEpTTG9ja0hvbGRlciBs
b2NrKGNvbW1vblZNKCkpOwogICAgIGNvbW1vblZNKCkuaGVhcC5jb2xsZWN0Tm93KEFzeW5jLCBD
b2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIEdDQ29udHJvbGxl
cjo6Z2FyYmFnZUNvbGxlY3RPbk5leHRSdW5Mb29wKCkKIAogdm9pZCBHQ0NvbnRyb2xsZXI6Omdj
VGltZXJGaXJlZCgpCiB7Ci0gICAgY29sbGVjdChudWxscHRyKTsKKyAgICBjb2xsZWN0KCk7CiB9
CiAKIHZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5vdygpCkBAIC0xMDEsNyArMTAx
LDcgQEAgdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93SWZOb3REb25lUmVjZW50
bHkoKQogCiB2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVh
ZEZvckRlYnVnZ2luZyhib29sIHdhaXRVbnRpbERvbmUpCiB7Ci0gICAgUmVmUHRyPFRocmVhZD4g
dGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoY29sbGVjdCwgMCwgIldlYkNvcmU6IEdDQ29udHJvbGxl
ciIpOworICAgIFJlZlB0cjxUaHJlYWQ+IHRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJXZWJDb3Jl
OiBHQ0NvbnRyb2xsZXIiLCAmY29sbGVjdCk7CiAKICAgICBpZiAod2FpdFVudGlsRG9uZSkgewog
ICAgICAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCA0OGY4OGM1ZmQ5NjQwZGQ2ZWFjNDNkMWU4
MWNkYTczYThlNGIxY2JkLi41OThjOTM5OGY4ZWFhYjE0MWEyZDlmZGNhNDg0YzUzM2I4ZWJlYjQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTE0
MSw3ICsxNDEsOSBAQCBib29sIEljb25EYXRhYmFzZTo6b3Blbihjb25zdCBTdHJpbmcmIGRpcmVj
dG9yeSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAvLyBMb2NrIGhlcmUgYXMgd2VsbCBh
cyBmaXJzdCB0aGluZyBpbiB0aGUgdGhyZWFkIHNvIHRoZSB0aHJlYWQgZG9lc24ndCBhY3R1YWxs
eSBjb21tZW5jZSB1bnRpbCB0aGUgY3JlYXRlVGhyZWFkKCkgY2FsbCAKICAgICAvLyBjb21wbGV0
ZXMgYW5kIG1fc3luY1RocmVhZFJ1bm5pbmcgaXMgcHJvcGVybHkgc2V0CiAgICAgbV9zeW5jTG9j
ay5sb2NrKCk7Ci0gICAgbV9zeW5jVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoSWNvbkRhdGFiYXNl
OjppY29uRGF0YWJhc2VTeW5jVGhyZWFkU3RhcnQsIHRoaXMsICJXZWJDb3JlOiBJY29uRGF0YWJh
c2UiKTsKKyAgICBtX3N5bmNUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTogSWNvbkRh
dGFiYXNlIiwgW3RoaXNdIHsKKyAgICAgICAgaWNvbkRhdGFiYXNlU3luY1RocmVhZCgpOworICAg
IH0pOwogICAgIG1fc3luY1RocmVhZFJ1bm5pbmcgPSBtX3N5bmNUaHJlYWQ7CiAgICAgbV9zeW5j
TG9jay51bmxvY2soKTsKICAgICBpZiAoIW1fc3luY1RocmVhZCkKQEAgLTk0MiwxMyArOTQ0LDYg
QEAgYm9vbCBJY29uRGF0YWJhc2U6OnNob3VsZFN0b3BUaHJlYWRBY3Rpdml0eSgpIGNvbnN0CiAg
ICAgcmV0dXJuIG1fdGhyZWFkVGVybWluYXRpb25SZXF1ZXN0ZWQgfHwgbV9yZW1vdmVJY29uc1Jl
cXVlc3RlZDsKIH0KIAotdm9pZCBJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWRT
dGFydCh2b2lkKiB2SWNvbkRhdGFiYXNlKQoteyAgICAKLSAgICBJY29uRGF0YWJhc2UqIGljb25E
QiA9IHN0YXRpY19jYXN0PEljb25EYXRhYmFzZSo+KHZJY29uRGF0YWJhc2UpOwotICAgIAotICAg
IGljb25EQi0+aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpOwotfQotCiB2b2lkIEljb25EYXRhYmFz
ZTo6aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpCiB7CiAgICAgLy8gVGhlIGNhbGwgdG8gY3JlYXRl
IHRoaXMgdGhyZWFkIG1pZ2h0IG5vdCBjb21wbGV0ZSBiZWZvcmUgdGhlIHRocmVhZCBhY3R1YWxs
eSBzdGFydHMsIHNvIHdlIG1pZ2h0IGZhaWwgdGhpcyBBU1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgp
IGJlY2F1c2UgdGhlIHBvaW50ZXIgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRh
YmFzZS5oCmluZGV4IDg2NDA5NTU0NzUzM2ZkODkwZjAzYWZlOTJiYjA2ZjYwODdlZTczNjIuLjAw
NDBiNDI5YWUxYTE2ZWJkZWU5ZDIwNDBjMTdiZTJhMWJlY2Q0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCkBAIC0xODIsNyArMTgyLDYgQEAgY2xhc3MgSWNv
bkRhdGFiYXNlIGZpbmFsIDogcHVibGljIEljb25EYXRhYmFzZUJhc2UgewogICAgIFdFQkNPUkVf
RVhQT1JUIGJvb2wgc2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKIHBy
aXZhdGU6ICAgIAotICAgIHN0YXRpYyB2b2lkIGljb25EYXRhYmFzZVN5bmNUaHJlYWRTdGFydCh2
b2lkICopOwogICAgIHZvaWQgaWNvbkRhdGFiYXNlU3luY1RocmVhZCgpOwogICAgIAogICAgIC8v
IFRoZSBmb2xsb3dpbmcgYmxvY2sgb2YgbWV0aG9kcyBhcmUgY2FsbGVkIGV4Y2x1c2l2ZWx5IGJ5
IHRoZSBzeW5jIHRocmVhZCB0byBtYW5hZ2UgaS9vIHRvIGFuZCBmcm9tIHRoZSBkYXRhYmFzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAKaW5kZXggZTBiMjc4
NDdlZmYyMGMwNjQxNzY2MzQ3NTU0ZjkzODc4NjlkZmRiZC4uYmI2OTRiZGQzYzhiZThiNTcyNzM5
ZGU2ZTYyNGU5MDI4YTM0NzNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNv
dXJjZVVzYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNh
Z2VUaHJlYWQuY3BwCkBAIC0xMDAsMTIgKzEwMCw5IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVh
ZDo6Y3JlYXRlVGhyZWFkSWZOZWVkZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ZtID0g
JmNvbW1vblZNKCk7Ci0gICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSh0aHJlYWRDYWxsYmFj
aywgdGhpcywgIldlYkNvcmU6IFJlc291cmNlVXNhZ2UiKTsKLX0KLQotdm9pZCBSZXNvdXJjZVVz
YWdlVGhyZWFkOjp0aHJlYWRDYWxsYmFjayh2b2lkKiByZXNvdXJjZVVzYWdlVGhyZWFkKQotewot
ICAgIHN0YXRpY19jYXN0PFJlc291cmNlVXNhZ2VUaHJlYWQqPihyZXNvdXJjZVVzYWdlVGhyZWFk
KS0+dGhyZWFkQm9keSgpOworICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIldlYkNvcmU6
IFJlc291cmNlVXNhZ2UiLCBbdGhpc10geworICAgICAgICB0aHJlYWRCb2R5KCk7CisgICAgfSk7
CiB9CiAKIE5PX1JFVFVSTiB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OnRocmVhZEJvZHkoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaAppbmRleCAzNjE3YjdhZGVj
MDE5MjIyMTEzMDgxYWQ0YjNhODg3NTRmMWZhNWJhLi44MjRiNjQ4MzUxZDEzNTdjNzg5NDk0ZjI0
MmQzNGI5ZDg3MGFmMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNl
VXNhZ2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJl
YWQuaApAQCAtNTgsNyArNTgsNiBAQCBjbGFzcyBSZXNvdXJjZVVzYWdlVGhyZWFkIHsKICAgICB2
b2lkIG5vdGlmeU9ic2VydmVycyhSZXNvdXJjZVVzYWdlRGF0YSYmKTsKIAogICAgIHZvaWQgY3Jl
YXRlVGhyZWFkSWZOZWVkZWQoKTsKLSAgICBzdGF0aWMgdm9pZCB0aHJlYWRDYWxsYmFjayh2b2lk
KiBzY3JvbGxpbmdUaHJlYWQpOwogICAgIHZvaWQgdGhyZWFkQm9keSgpOwogICAgIHZvaWQgcGxh
dGZvcm1UaHJlYWRCb2R5KEpTQzo6Vk0qLCBSZXNvdXJjZVVzYWdlRGF0YSYpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAppbmRleCA2
NGQwNTBhNjg0OGU4MWI1NjhkZDViODY1MWU0YjlmZjBkYmI3NTUxLi5kMjA0Yzc2MjEwYjMzNDA0
ZGY0NGM0ZGEzZmNhN2FjY2Q3N2I0MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKQEAgLTgwLDcgKzgwLDEwIEBAIHZvaWQgU2Ny
b2xsaW5nVGhyZWFkOjpjcmVhdGVUaHJlYWRJZk5lZWRlZCgpCiAgICAgewogICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPExvY2s+IGxvY2sobV9pbml0aWFsaXplUnVuTG9vcE11dGV4KTsKIAotICAg
ICAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKHRocmVhZENhbGxiYWNrLCB0aGlzLCAiV2Vi
Q29yZTogU2Nyb2xsaW5nIik7CisgICAgICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIldl
YkNvcmU6IFNjcm9sbGluZyIsIFt0aGlzXSB7CisgICAgICAgICAgICBXVEY6OlRocmVhZDo6c2V0
Q3VycmVudFRocmVhZElzVXNlckludGVyYWN0aXZlKCk7CisgICAgICAgICAgICBpbml0aWFsaXpl
UnVuTG9vcCgpOworICAgICAgICB9KTsKICAgICAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25WYXJpYWJsZS53YWl0KGxvY2ssIFt0
aGlzXXsgcmV0dXJuIG1fdGhyZWFkUnVuTG9vcDsgfSk7CkBAIC04OCwxNyArOTEsNiBAQCB2b2lk
IFNjcm9sbGluZ1RocmVhZDo6Y3JlYXRlVGhyZWFkSWZOZWVkZWQoKQogICAgIH0KIH0KIAotdm9p
ZCBTY3JvbGxpbmdUaHJlYWQ6OnRocmVhZENhbGxiYWNrKHZvaWQqIHNjcm9sbGluZ1RocmVhZCkK
LXsKLSAgICBXVEY6OlRocmVhZDo6c2V0Q3VycmVudFRocmVhZElzVXNlckludGVyYWN0aXZlKCk7
Ci0gICAgc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVGhyZWFkKj4oc2Nyb2xsaW5nVGhyZWFkKS0+dGhy
ZWFkQm9keSgpOwotfQotCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6dGhyZWFkQm9keSgpCi17Ci0g
ICAgaW5pdGlhbGl6ZVJ1bkxvb3AoKTsKLX0KLQogdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3Bh
dGNoRnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpCiB7CiAgICAgQVNTRVJUKGlzQ3VycmVu
dFRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VGhyZWFkLmgKaW5kZXggZDg4OTJmMDViZTY0MzdkNGFhY2MwYTc1MWE3Y2E3ZTkzYmVlMGRmYy4u
N2U4MWQwODdkOTRkN2E0ZWJjNzdlMTVlMTA5YjE3ODM4M2Q4N2Q0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKQEAgLTYxLDggKzYxLDYg
QEAgY2xhc3MgU2Nyb2xsaW5nVGhyZWFkIHsKICAgICBzdGF0aWMgU2Nyb2xsaW5nVGhyZWFkJiBz
aW5nbGV0b24oKTsKIAogICAgIHZvaWQgY3JlYXRlVGhyZWFkSWZOZWVkZWQoKTsKLSAgICBzdGF0
aWMgdm9pZCB0aHJlYWRDYWxsYmFjayh2b2lkKiBzY3JvbGxpbmdUaHJlYWQpOwotICAgIHZvaWQg
dGhyZWFkQm9keSgpOwogICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tU2Nyb2xsaW5nVGhy
ZWFkKCk7CiAKICAgICB2b2lkIGluaXRpYWxpemVSdW5Mb29wKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAppbmRleCBlNTc0
ZWE4ZjdiOGEyN2I0OGVmNzMwOTMxNjk3ZTlhZGVkYzhjMWRhLi5mNDViZTg0N2NlNzEwZGNlZGEy
ZTBlYzEwNmI3NWJmMjY4NTc4OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKQEAgLTgwLDE0ICs4MCw2IEBAIEhSVEZE
YXRhYmFzZUxvYWRlcjo6fkhSVEZEYXRhYmFzZUxvYWRlcigpCiAgICAgbG9hZGVyTWFwKCkucmVt
b3ZlKG1fZGF0YWJhc2VTYW1wbGVSYXRlKTsKIH0KIAotLy8gQXN5bmNocm9ub3VzbHkgbG9hZCB0
aGUgZGF0YWJhc2UgaW4gdGhpcyB0aHJlYWQuCi1zdGF0aWMgdm9pZCBkYXRhYmFzZUxvYWRlckVu
dHJ5KHZvaWQqIHRocmVhZERhdGEpCi17Ci0gICAgSFJURkRhdGFiYXNlTG9hZGVyKiBsb2FkZXIg
PSByZWludGVycHJldF9jYXN0PEhSVEZEYXRhYmFzZUxvYWRlcio+KHRocmVhZERhdGEpOwotICAg
IEFTU0VSVChsb2FkZXIpOwotICAgIGxvYWRlci0+bG9hZCgpOwotfQotCiB2b2lkIEhSVEZEYXRh
YmFzZUxvYWRlcjo6bG9hZCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CkBAIC0x
MDUsNyArOTcsOSBAQCB2b2lkIEhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5
KCkKICAgICAKICAgICBpZiAoIW1faHJ0ZkRhdGFiYXNlLmdldCgpICYmICFtX2RhdGFiYXNlTG9h
ZGVyVGhyZWFkKSB7CiAgICAgICAgIC8vIFN0YXJ0IHRoZSBhc3luY2hyb25vdXMgZGF0YWJhc2Ug
bG9hZGluZyBwcm9jZXNzLgotICAgICAgICBtX2RhdGFiYXNlTG9hZGVyVGhyZWFkID0gVGhyZWFk
OjpjcmVhdGUoZGF0YWJhc2VMb2FkZXJFbnRyeSwgdGhpcywgIkhSVEYgZGF0YWJhc2UgbG9hZGVy
Iik7CisgICAgICAgIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSFJU
RiBkYXRhYmFzZSBsb2FkZXIiLCBbdGhpc10geworICAgICAgICAgICAgbG9hZCgpOworICAgICAg
ICB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1
ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
SFJURkRhdGFiYXNlTG9hZGVyLmgKaW5kZXggZDBiZThlNzRmYTM2OGY0OGM0NzQxOTRiMTA5NTNk
YjFlOGIzNWU2YS4uMWZmNDk2MmEyNjQ2MjQ5Y2FlYmE5OWY0Yzc3ZmM2ZDQzM2IwMzRkYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVy
LmgKQEAgLTYxLDkgKzYxLDYgQEAgY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8SFJURkRhdGFiYXNlTG9hZGVyPiB7CiAKICAgICBmbG9hdCBkYXRhYmFzZVNhbXBs
ZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlU2FtcGxlUmF0ZTsgfQogICAgIAotICAg
IC8vIENhbGxlZCBpbiBhc3luY2hyb25vdXMgbG9hZGluZyB0aHJlYWQuCi0gICAgdm9pZCBsb2Fk
KCk7Ci0KIHByaXZhdGU6CiAgICAgLy8gQm90aCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBt
dXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KICAgICBleHBsaWNpdCBIUlRGRGF0
YWJhc2VMb2FkZXIoZmxvYXQgc2FtcGxlUmF0ZSk7CkBAIC03Miw2ICs2OSw5IEBAIGNsYXNzIEhS
VEZEYXRhYmFzZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEhSVEZEYXRhYmFzZUxvYWRlcj4g
ewogICAgIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAgICAg
dm9pZCBsb2FkQXN5bmNocm9ub3VzbHkoKTsKIAorICAgIC8vIENhbGxlZCBpbiBhc3luY2hyb25v
dXMgbG9hZGluZyB0aHJlYWQuCisgICAgdm9pZCBsb2FkKCk7CisKICAgICBzdGQ6OnVuaXF1ZV9w
dHI8SFJURkRhdGFiYXNlPiBtX2hydGZEYXRhYmFzZTsKIAogICAgIC8vIEhvbGRpbmcgYSBtX3Ro
cmVhZExvY2sgaXMgcmVxdWlyZWQgd2hlbiBhY2Nlc3NpbmcgbV9kYXRhYmFzZUxvYWRlclRocmVh
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZv
bHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIu
Y3BwCmluZGV4IDIxYmU5OTZlZjM3ZTUzZGI3MDMxMDAxOTYyN2MwYzQwZDJiMjEwZGYuLjBlNzQ2
NjE4NTg4Y2U4ODQ5YTdkM2RhMWIxYTAwZDM0M2M1MjM3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcApAQCAtNTQsMTIgKzU0LDYg
QEAgY29uc3Qgc2l6ZV90IFJlYWx0aW1lRnJhbWVMaW1pdCA9IDgxOTIgICsgNDA5NjsgLy8gfjI3
OG1zZWMgQCA0NC4xS0h6CiBjb25zdCBzaXplX3QgTWluRkZUU2l6ZSA9IDEyODsKIGNvbnN0IHNp
emVfdCBNYXhSZWFsdGltZUZGVFNpemUgPSAyMDQ4OwogCi1zdGF0aWMgdm9pZCBiYWNrZ3JvdW5k
VGhyZWFkRW50cnkodm9pZCogdGhyZWFkRGF0YSkKLXsKLSAgICBSZXZlcmJDb252b2x2ZXIqIHJl
dmVyYkNvbnZvbHZlciA9IHN0YXRpY19jYXN0PFJldmVyYkNvbnZvbHZlcio+KHRocmVhZERhdGEp
OwotICAgIHJldmVyYkNvbnZvbHZlci0+YmFja2dyb3VuZFRocmVhZEVudHJ5KCk7Ci19Ci0KIFJl
dmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3Bv
bnNlLCBzaXplX3QgcmVuZGVyU2xpY2VTaXplLCBzaXplX3QgbWF4RkZUU2l6ZSwgc2l6ZV90IGNv
bnZvbHZlclJlbmRlclBoYXNlLCBib29sIHVzZUJhY2tncm91bmRUaHJlYWRzKQogICAgIDogbV9p
bXB1bHNlUmVzcG9uc2VMZW5ndGgoaW1wdWxzZVJlc3BvbnNlLT5sZW5ndGgoKSkKICAgICAsIG1f
YWNjdW11bGF0aW9uQnVmZmVyKGltcHVsc2VSZXNwb25zZS0+bGVuZ3RoKCkgKyByZW5kZXJTbGlj
ZVNpemUpCkBAIC0xMjksOCArMTIzLDExIEBAIFJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9s
dmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVuZGVyU2xpCiAKICAg
ICAvLyBTdGFydCB1cCBiYWNrZ3JvdW5kIHRocmVhZAogICAgIC8vIEZJWE1FOiB3b3VsZCBiZSBi
ZXR0ZXIgdG8gdXAgdGhlIHRocmVhZCBwcmlvcml0eSBoZXJlLiAgSXQgZG9lc24ndCBuZWVkIHRv
IGJlIHJlYWwtdGltZSwgYnV0IGhpZ2hlciB0aGFuIHRoZSBkZWZhdWx0Li4uCi0gICAgaWYgKHRo
aXMtPnVzZUJhY2tncm91bmRUaHJlYWRzKCkgJiYgbV9iYWNrZ3JvdW5kU3RhZ2VzLnNpemUoKSA+
IDApCi0gICAgICAgIG1fYmFja2dyb3VuZFRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKFdlYkNvcmU6
OmJhY2tncm91bmRUaHJlYWRFbnRyeSwgdGhpcywgImNvbnZvbHV0aW9uIGJhY2tncm91bmQgdGhy
ZWFkIik7CisgICAgaWYgKHRoaXMtPnVzZUJhY2tncm91bmRUaHJlYWRzKCkgJiYgbV9iYWNrZ3Jv
dW5kU3RhZ2VzLnNpemUoKSA+IDApIHsKKyAgICAgICAgbV9iYWNrZ3JvdW5kVGhyZWFkID0gVGhy
ZWFkOjpjcmVhdGUoImNvbnZvbHV0aW9uIGJhY2tncm91bmQgdGhyZWFkIiwgW3RoaXNdIHsKKyAg
ICAgICAgICAgIGJhY2tncm91bmRUaHJlYWRFbnRyeSgpOworICAgICAgICB9KTsKKyAgICB9CiB9
CiAKIFJldmVyYkNvbnZvbHZlcjo6flJldmVyYkNvbnZvbHZlcigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCmluZGV4IDFmY2NmOTZjOTI3MTg2
ODUxY2E4NzdmN2RhZjUzNjdhMzI3YTcyZWIuLjhhYzZlZWM1YmEyNTY3NTc2MDJlNWNjNWNhYzAz
ZDgyOTBmMzlkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1Jl
dmVyYkNvbnZvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlci5oCkBAIC02MCwxMCArNjAsMTEgQEAgY2xhc3MgUmV2ZXJiQ29udm9sdmVyIHsK
ICAgICBSZXZlcmJJbnB1dEJ1ZmZlciogaW5wdXRCdWZmZXIoKSB7IHJldHVybiAmbV9pbnB1dEJ1
ZmZlcjsgfQogCiAgICAgYm9vbCB1c2VCYWNrZ3JvdW5kVGhyZWFkcygpIGNvbnN0IHsgcmV0dXJu
IG1fdXNlQmFja2dyb3VuZFRocmVhZHM7IH0KLSAgICB2b2lkIGJhY2tncm91bmRUaHJlYWRFbnRy
eSgpOwogCiAgICAgc2l6ZV90IGxhdGVuY3lGcmFtZXMoKSBjb25zdDsKIHByaXZhdGU6CisgICAg
dm9pZCBiYWNrZ3JvdW5kVGhyZWFkRW50cnkoKTsKKwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8UmV2ZXJiQ29udm9sdmVyU3RhZ2U+PiBtX3N0YWdlczsKICAgICBWZWN0b3I8c3RkOjp1bmlx
dWVfcHRyPFJldmVyYkNvbnZvbHZlclN0YWdlPj4gbV9iYWNrZ3JvdW5kU3RhZ2VzOwogICAgIHNp
emVfdCBtX2ltcHVsc2VSZXNwb25zZUxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAppbmRleCBmZmJmZGE5Yjg5
MzQ4MzU0OTBjOWE0MGJhMWY0ODMzNmU0NzYwYzhiLi5mMDgzMjdmZWQ3MjA0MGU4YTQ4MTNhMmMz
NWEzZmM1YTQzMjRhMzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCkBAIC00OCwyOCArNDgsNiBAQCBzdGF0aWMg
dm9pZCBlbXB0eVBlcmZvcm0odm9pZCopCiB7CiB9CiAKLXN0YXRpYyB2b2lkIHJ1bkxvYWRlclRo
cmVhZCh2b2lkKikKLXsKLSAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2Nr
PiBsb2NrKGxvYWRlclJ1bkxvb3BNdXRleCk7Ci0KLSAgICAgICAgbG9hZGVyUnVuTG9vcE9iamVj
dCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKLQotICAgICAgICAvLyBNdXN0IGFkZCBhIHNvdXJj
ZSB0byB0aGUgcnVuIGxvb3AgdG8gcHJldmVudCBDRlJ1bkxvb3BSdW4oKSBmcm9tIGV4aXRpbmcu
Ci0gICAgICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgY3R4dCA9IHswLCAodm9pZCopMSAvKm11
c3QgYmUgbm9uLW51bGwqLywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtfTsKLSAg
ICAgICAgQ0ZSdW5Mb29wU291cmNlUmVmIGJvZ3VzU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3Jl
YXRlKDAsIDAsICZjdHh0KTsKLSAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKGxvYWRlclJ1bkxv
b3BPYmplY3QsIGJvZ3VzU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotCi0gICAgICAg
IGxvYWRlclJ1bkxvb3BDb25kaXRpb25WYXJpYWJsZS5ub3RpZnlPbmUoKTsKLSAgICB9Ci0KLSAg
ICBTSW50MzIgcmVzdWx0OwotICAgIGRvIHsKLSAgICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7
Ci0gICAgICAgIHJlc3VsdCA9IENGUnVuTG9vcFJ1bkluTW9kZShrQ0ZSdW5Mb29wRGVmYXVsdE1v
ZGUsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCksIHRydWUpOwotICAgIH0gd2hp
bGUgKHJlc3VsdCAhPSBrQ0ZSdW5Mb29wUnVuU3RvcHBlZCAmJiByZXN1bHQgIT0ga0NGUnVuTG9v
cFJ1bkZpbmlzaGVkKTsKLX0KLQogQ0ZSdW5Mb29wUmVmIGxvYWRlclJ1bkxvb3AoKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC03Nyw3ICs1NSwyNiBAQCBDRlJ1bkxvb3BSZWYg
bG9hZGVyUnVuTG9vcCgpCiAgICAgc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNMb2NrPiBsb2NrKGxv
YWRlclJ1bkxvb3BNdXRleCk7CiAKICAgICBpZiAoIWxvYWRlclJ1bkxvb3BPYmplY3QpIHsKLSAg
ICAgICAgVGhyZWFkOjpjcmVhdGUocnVuTG9hZGVyVGhyZWFkLCAwLCAiV2ViQ29yZTogQ0ZOZXR3
b3JrIExvYWRlciIpOworICAgICAgICBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTogQ0ZOZXR3b3Jr
IExvYWRlciIsIFtdIHsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdGQ6OmxvY2tf
Z3VhcmQ8U3RhdGljTG9jaz4gbG9jayhsb2FkZXJSdW5Mb29wTXV0ZXgpOworCisgICAgICAgICAg
ICAgICAgbG9hZGVyUnVuTG9vcE9iamVjdCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKKworICAg
ICAgICAgICAgICAgIC8vIE11c3QgYWRkIGEgc291cmNlIHRvIHRoZSBydW4gbG9vcCB0byBwcmV2
ZW50IENGUnVuTG9vcFJ1bigpIGZyb20gZXhpdGluZy4KKyAgICAgICAgICAgICAgICBDRlJ1bkxv
b3BTb3VyY2VDb250ZXh0IGN0eHQgPSB7MCwgKHZvaWQqKTEgLyptdXN0IGJlIG5vbi1udWxsKi8s
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIGVtcHR5UGVyZm9ybX07CisgICAgICAgICAgICAgICAgQ0ZS
dW5Mb29wU291cmNlUmVmIGJvZ3VzU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAs
ICZjdHh0KTsKKyAgICAgICAgICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UobG9hZGVyUnVuTG9v
cE9iamVjdCwgYm9ndXNTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisKKyAgICAgICAg
ICAgICAgICBsb2FkZXJSdW5Mb29wQ29uZGl0aW9uVmFyaWFibGUubm90aWZ5T25lKCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIFNJbnQzMiByZXN1bHQ7CisgICAgICAgICAgICBkbyB7
CisgICAgICAgICAgICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gQ0ZSdW5Mb29wUnVuSW5Nb2RlKGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSwgdHJ1ZSk7CisgICAgICAgICAgICB9IHdoaWxl
IChyZXN1bHQgIT0ga0NGUnVuTG9vcFJ1blN0b3BwZWQgJiYgcmVzdWx0ICE9IGtDRlJ1bkxvb3BS
dW5GaW5pc2hlZCk7CisgICAgICAgIH0pOwogCiAgICAgICAgIGxvYWRlclJ1bkxvb3BDb25kaXRp
b25WYXJpYWJsZS53YWl0KGxvY2ssIFtdIHsgcmV0dXJuIGxvYWRlclJ1bkxvb3BPYmplY3Q7IH0p
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybE1hbmFnZXIuY3BwCmluZGV4IDhmMmVlZjY1MmNmZjlhOWFjNTE1ZjE1MjgwNjFlNDE4M2Iz
NTI2YTAuLjA1OWZmZTI2ODc3Y2I5NmM4YmNiNDgyMThjNTJkNWVjZDEyODk4MTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTWFuYWdlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNYW5hZ2VyLmNw
cApAQCAtMTA5LDcgKzEwOSw5IEBAIHZvaWQgQ3VybE1hbmFnZXI6OnN0YXJ0VGhyZWFkSWZOZWVk
ZWQoKQogICAgICAgICBpZiAobV90aHJlYWQpCiAgICAgICAgICAgICBtX3RocmVhZC0+d2FpdEZv
ckNvbXBsZXRpb24oKTsKICAgICAgICAgc2V0UnVuVGhyZWFkKHRydWUpOwotICAgICAgICBtX3Ro
cmVhZCA9IFRocmVhZDo6Y3JlYXRlKHdvcmtlclRocmVhZCwgdGhpcywgImN1cmxUaHJlYWQiKTsK
KyAgICAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiY3VybFRocmVhZCIsIFt0aGlzXSB7
CisgICAgICAgICAgICB3b3JrZXJUaHJlYWQoKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCkBA
IC0xNzYsMTUgKzE3OCwxMyBAQCBib29sIEN1cmxNYW5hZ2VyOjpyZW1vdmVGcm9tQ3VybChDVVJM
KiBjdXJsSGFuZGxlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDdXJsTWFuYWdlcjo6
d29ya2VyVGhyZWFkKHZvaWQqIGRhdGEpCit2b2lkIEN1cmxNYW5hZ2VyOjp3b3JrZXJUaHJlYWQo
KQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgQ3VybE1hbmFnZXIqIG1h
bmFnZXIgPSByZWludGVycHJldF9jYXN0PEN1cmxNYW5hZ2VyKj4oZGF0YSk7CisgICAgd2hpbGUg
KHJ1blRocmVhZCgpKSB7CiAKLSAgICB3aGlsZSAobWFuYWdlci0+cnVuVGhyZWFkKCkpIHsKLQot
ICAgICAgICBtYW5hZ2VyLT51cGRhdGVIYW5kbGVMaXN0KCk7CisgICAgICAgIHVwZGF0ZUhhbmRs
ZUxpc3QoKTsKIAogICAgICAgICAvLyBSZXRyeSAnc2VsZWN0JyBpZiBpdCB3YXMgaW50ZXJydXB0
ZWQgYnkgYSBwcm9jZXNzIHNpZ25hbC4KICAgICAgICAgaW50IHJjID0gMDsKQEAgLTIwNCw3ICsy
MDQsNyBAQCB2b2lkIEN1cmxNYW5hZ2VyOjp3b3JrZXJUaHJlYWQodm9pZCogZGF0YSkKICAgICAg
ICAgICAgIEZEX1pFUk8oJmZkcmVhZCk7CiAgICAgICAgICAgICBGRF9aRVJPKCZmZHdyaXRlKTsK
ICAgICAgICAgICAgIEZEX1pFUk8oJmZkZXhjZXApOwotICAgICAgICAgICAgY3VybF9tdWx0aV9m
ZHNldChtYW5hZ2VyLT5nZXRNdWx0aUhhbmRsZSgpLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhj
ZXAsICZtYXhmZCk7CisgICAgICAgICAgICBjdXJsX211bHRpX2Zkc2V0KGdldE11bHRpSGFuZGxl
KCksICZmZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJm1heGZkKTsKICAgICAgICAgICAgIC8v
IFdoZW4gdGhlIDMgZmlsZSBkZXNjcmlwdG9ycyBhcmUgZW1wdHksIHdpbnNvY2sgd2lsbCByZXR1
cm4gLTEKICAgICAgICAgICAgIC8vIGFuZCBiYWlsIG91dCwgc3RvcHBpbmcgdGhlIGZpbGUgZG93
bmxvYWQuIFNvIG1ha2Ugc3VyZSB3ZQogICAgICAgICAgICAgLy8gaGF2ZSB2YWxpZCBmaWxlIGRl
c2NyaXB0b3JzIGJlZm9yZSBjYWxsaW5nIHNlbGVjdC4KQEAgLTIxMywxMCArMjEzLDEwIEBAIHZv
aWQgQ3VybE1hbmFnZXI6OndvcmtlclRocmVhZCh2b2lkKiBkYXRhKQogICAgICAgICB9IHdoaWxl
IChyYyA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUik7CiAKICAgICAgICAgaW50IGFjdGl2ZUNvdW50
ID0gMDsKLSAgICAgICAgd2hpbGUgKGN1cmxfbXVsdGlfcGVyZm9ybShtYW5hZ2VyLT5nZXRNdWx0
aUhhbmRsZSgpLCAmYWN0aXZlQ291bnQpID09IENVUkxNX0NBTExfTVVMVElfUEVSRk9STSkgeyB9
CisgICAgICAgIHdoaWxlIChjdXJsX211bHRpX3BlcmZvcm0oZ2V0TXVsdGlIYW5kbGUoKSwgJmFj
dGl2ZUNvdW50KSA9PSBDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk0pIHsgfQogCiAgICAgICAgIGlu
dCBtZXNzYWdlc0luUXVldWUgPSAwOwotICAgICAgICBDVVJMTXNnKiBtc2cgPSBjdXJsX211bHRp
X2luZm9fcmVhZChtYW5hZ2VyLT5nZXRNdWx0aUhhbmRsZSgpLCAmbWVzc2FnZXNJblF1ZXVlKTsK
KyAgICAgICAgQ1VSTE1zZyogbXNnID0gY3VybF9tdWx0aV9pbmZvX3JlYWQoZ2V0TXVsdGlIYW5k
bGUoKSwgJm1lc3NhZ2VzSW5RdWV1ZSk7CiAKICAgICAgICAgaWYgKCFtc2cpCiAgICAgICAgICAg
ICBjb250aW51ZTsKQEAgLTIzMCw5ICsyMzAsOSBAQCB2b2lkIEN1cmxNYW5hZ2VyOjp3b3JrZXJU
aHJlYWQodm9pZCogZGF0YSkKICAgICAgICAgQ3VybEpvYkFjdGlvbiBhY3Rpb24gPSBqb2ItPmhh
bmRsZUN1cmxNc2cobXNnKTsKIAogICAgICAgICBpZiAoYWN0aW9uID09IEN1cmxKb2JBY3Rpb246
OkZpbmlzaGVkKQotICAgICAgICAgICAgbWFuYWdlci0+cmVtb3ZlRnJvbUN1cmwobXNnLT5lYXN5
X2hhbmRsZSk7CisgICAgICAgICAgICByZW1vdmVGcm9tQ3VybChtc2ctPmVhc3lfaGFuZGxlKTsK
IAotICAgICAgICBtYW5hZ2VyLT5zdG9wVGhyZWFkSWZJZGxlKCk7CisgICAgICAgIHN0b3BUaHJl
YWRJZklkbGUoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9DdXJsTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxNYW5hZ2VyLmgKaW5kZXggOTUyM2Q0Y2Q0M2JiOTE4YmY3MzJmM2Ex
NTE1Y2I2ODE2YTU3MWZiYS4uNTQ4MmVjMTZlZmZkNjI1NGQyODJkOWFmMGZmODEzODdhODllMTIy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxN
YW5hZ2VyLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgQ3VybE1hbmFnZXIgewogICAgIGJvb2wg
YWRkVG9DdXJsKENVUkwqIGN1cmxIYW5kbGUpOwogICAgIGJvb2wgcmVtb3ZlRnJvbUN1cmwoQ1VS
TCogY3VybEhhbmRsZSk7CiAKLSAgICBzdGF0aWMgdm9pZCB3b3JrZXJUaHJlYWQodm9pZCogZGF0
YSk7CisgICAgdm9pZCB3b3JrZXJUaHJlYWQoKTsKIAogICAgIFJlZlB0cjxUaHJlYWQ+IG1fdGhy
ZWFkOwogICAgIENVUkxNKiBtX2N1cmxNdWx0aUhhbmRsZSB7IG51bGxwdHIgfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCAzNWEyMzgyY2Q1ZDk3YjA0YzYwMWRk
NzFiMzY5OTI5NDcxYzBmNzVmLi40MjVjOTI0OGQ4NzA0ODI3YmIwZTAzODIxYTJhZThkYzhhYWMw
ZDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0xMzgsMTYg
KzEzOCwxMyBAQCBib29sIFdvcmtlclRocmVhZDo6c3RhcnQoKQogICAgIGlmIChtX3RocmVhZCkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKFdv
cmtlclRocmVhZDo6d29ya2VyVGhyZWFkU3RhcnQsIHRoaXMsICJXZWJDb3JlOiBXb3JrZXIiKTsK
KyAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJXZWJDb3JlOiBXb3JrZXIiLCBbdGhpc10g
eworICAgICAgICB3b3JrZXJUaHJlYWQoKTsKKyAgICB9KTsKIAogICAgIHJldHVybiBtX3RocmVh
ZDsKIH0KIAotdm9pZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZFN0YXJ0KHZvaWQqIHRocmVh
ZCkKLXsKLSAgICBzdGF0aWNfY2FzdDxXb3JrZXJUaHJlYWQqPih0aHJlYWQpLT53b3JrZXJUaHJl
YWQoKTsKLX0KLQogdm9pZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiB7CiAgICAgLy8g
UHJvcGFnYXRlIHRoZSBtYWluVGhyZWFkJ3MgZmVudiB0byB3b3JrZXJzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyVGhyZWFkLmgKaW5kZXggMjlmNGQ5ODcyNmJlZjcxZDUwNGZjMWVlMjliNmIw
MTYzZGUxOGVkMy4uMjI5MDhhODVmYzc0NjZlNTBjZjIyOTljYzI0YjFhNmFiNjYwYjk1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC05NCw4ICs5NCw2IEBAIGNsYXNz
IFdvcmtlclRocmVhZCA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclRocmVhZD4gewogICAgIFNv
Y2tldFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcigpOwogCiBwcml2YXRlOgotICAgIC8vIFN0YXRp
YyBmdW5jdGlvbiBleGVjdXRlZCBhcyB0aGUgY29yZSByb3V0aW5lIG9uIHRoZSBuZXcgdGhyZWFk
LiBQYXNzZWQgYSBwb2ludGVyIHRvIGEgV29ya2VyVGhyZWFkIG9iamVjdC4KLSAgICBzdGF0aWMg
dm9pZCB3b3JrZXJUaHJlYWRTdGFydCh2b2lkKik7CiAgICAgdm9pZCB3b3JrZXJUaHJlYWQoKTsK
IAogICAgIFJlZlB0cjxUaHJlYWQ+IG1fdGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3Jh
Z2VUaHJlYWQuY3BwCmluZGV4IGYzY2JlZDMxMDhiNGQxZmZhZWMyYjQwYmJlY2Y1YmM4NzYxM2Q2
YjIuLjliNTA5MDdjNGU2MjRiY2M2ZDJkMjMwYTE2ZGZlN2M1YzcxMGJmOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKQEAgLTUzLDE3ICs1MywxNSBAQCBTdG9yYWdl
VGhyZWFkOjp+U3RvcmFnZVRocmVhZCgpCiBib29sIFN0b3JhZ2VUaHJlYWQ6OnN0YXJ0KCkKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbV90aHJlYWQpCi0gICAgICAg
IG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2lu
dENhbGxiYWNrLCB0aGlzLCAiV2ViQ29yZTogTG9jYWxTdG9yYWdlIik7CisgICAgaWYgKCFtX3Ro
cmVhZCkgeworICAgICAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJXZWJDb3JlOiBMb2Nh
bFN0b3JhZ2UiLCBbdGhpc10geworICAgICAgICAgICAgdGhyZWFkRW50cnlQb2ludCgpOworICAg
ICAgICB9KTsKKyAgICB9CiAgICAgYWN0aXZlU3RvcmFnZVRocmVhZHMoKS5hZGQodGhpcyk7CiAg
ICAgcmV0dXJuIG1fdGhyZWFkOwogfQogCi12b2lkIFN0b3JhZ2VUaHJlYWQ6OnRocmVhZEVudHJ5
UG9pbnRDYWxsYmFjayh2b2lkKiB0aHJlYWQpCi17Ci0gICAgc3RhdGljX2Nhc3Q8U3RvcmFnZVRo
cmVhZCo+KHRocmVhZCktPnRocmVhZEVudHJ5UG9pbnQoKTsKLX0KLQogdm9pZCBTdG9yYWdlVGhy
ZWFkOjp0aHJlYWRFbnRyeVBvaW50KCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmggYi9Tb3Vy
Y2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5oCmluZGV4IDhjZjFiM2Q0YWRjNWEzMDZh
NzdlYzc3YzljMzI2NjYxNjg3YmVjNTAuLmFkZWQyMzAxNzBkYTAzNTNlMzhiNmI2ZDlmOWE3MmM1
NDRhNjczNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFk
LmgKKysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaApAQCAtNDksOCAr
NDksNiBAQCBjbGFzcyBTdG9yYWdlVGhyZWFkIHsKICAgICBzdGF0aWMgdm9pZCByZWxlYXNlRmFz
dE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKIAogcHJpdmF0ZToKLSAgICAvLyBDYWxs
ZWQgb24gYmFja2dyb3VuZCB0aHJlYWQuCi0gICAgc3RhdGljIHZvaWQgdGhyZWFkRW50cnlQb2lu
dENhbGxiYWNrKHZvaWQqKTsKICAgICB2b2lkIHRocmVhZEVudHJ5UG9pbnQoKTsKIAogICAgIC8v
IEJhY2tncm91bmQgdGhyZWFkIHBhcnQgb2YgdGhlIHRlcm1pbmF0ZSBwcm9jZWR1cmUuCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2U1MjI5N2Rl
NTFjMzA4MTU5ZDViMDI2NGMyMDE1MmUwZjQ4ZjMyYS4uNTBhNDMyMDIwYmQwOTc3NzMwZmIxMTVi
YmMxOWM4OTg4NWUzMTExZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTA2LTI1ICBZdXN1a2UgU3V6dWtpICA8
dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIERyb3AgVGhyZWFkOjpjcmVh
dGUob2Jzb2xldGUgdGhpbmdzKSBBUEkgc2luY2Ugd2UgY2FuIHVzZSBsYW1iZGEKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzgyNQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
SmF2YVNjcmlwdFRocmVhZGluZy5jcHA6CisgICAgICAgIChydW5KYXZhU2NyaXB0VGhyZWFkKToK
KyAgICAgICAgKHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHRlc3RUaHJlYWRJZGVudGlmaWVy
TWFwKToKKwogMjAxNy0wNi0yNSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxp
YS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxNTE5MC4KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAKaW5kZXggNzEwZDJhNTlk
YTkyOTAxNmU2MDhhNGNmN2Q5NDZmYTg3ZmFkOTMyYy4uMmVhZmJiZWJmYjViYjk5ZGIxNmJlNGE2
NDBmZjU0ZDMwNmYxODVmOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNj
cmlwdFRocmVhZGluZy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRo
cmVhZGluZy5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIFRocmVhZFNldCYgamF2YVNjcmlw
dFRocmVhZHMoKQogCiAvLyBUaGlzIGZ1bmN0aW9uIGV4ZXJjaXNlcyBKU0MgaW4gYSBsb29wIHVu
dGlsIGphdmFTY3JpcHRUaHJlYWRzU2hvdWxkVGVybWluYXRlCiAvLyBiZWNvbWVzIHRydWUgb3Ig
aXQgcHJvYmFiaWxpc3RpY2FsbHkgZGVjaWRlcyB0byBzcGF3biBhIHJlcGxhY2VtZW50IHRocmVh
ZCBhbmQgZXhpdC4KLXZvaWQgcnVuSmF2YVNjcmlwdFRocmVhZCh2b2lkKikKK3ZvaWQgcnVuSmF2
YVNjcmlwdFRocmVhZCgpCiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNjcmlwdCA9
CiAgICAgICAgICJ2YXIgYXJyYXkgPSBbXTsiCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBydW5K
YXZhU2NyaXB0VGhyZWFkKHZvaWQqKQogICAgICAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6
Y3VycmVudCgpOwogICAgICAgICB0aHJlYWQuZGV0YWNoKCk7CiAgICAgICAgIGphdmFTY3JpcHRU
aHJlYWRzKCkucmVtb3ZlKCZ0aHJlYWQpOwotICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygpLmFk
ZChUaHJlYWQ6OmNyZWF0ZSgmcnVuSmF2YVNjcmlwdFRocmVhZCwgMCwgMCkpOworICAgICAgICBq
YXZhU2NyaXB0VGhyZWFkcygpLmFkZChUaHJlYWQ6OmNyZWF0ZSgiSmF2YVNjcmlwdCBUaHJlYWQi
LCAmcnVuSmF2YVNjcmlwdFRocmVhZCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTEy
OCw3ICsxMjgsNyBAQCB2b2lkIHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMoKQogICAgIExvY2tIb2xk
ZXIgbG9ja2VyKGphdmFTY3JpcHRUaHJlYWRzTXV0ZXgoKSk7CiAKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGphdmFTY3JpcHRUaHJlYWRzQ291bnQ7ICsraSkKLSAgICAgICAgamF2YVNjcmlw
dFRocmVhZHMoKS5hZGQoVGhyZWFkOjpjcmVhdGUoJnJ1bkphdmFTY3JpcHRUaHJlYWQsIDAsIDAp
KTsKKyAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS5hZGQoVGhyZWFkOjpjcmVhdGUoIkphdmFT
Y3JpcHQgVGhyZWFkIiwgJnJ1bkphdmFTY3JpcHRUaHJlYWQpKTsKIH0KIAogdm9pZCBzdG9wSmF2
YVNjcmlwdFRocmVhZHMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1
bXBSZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVl
Lm1tCmluZGV4IDUyM2YzZjNmMTUwMDRiY2Q3ZTY2YWMxNWVhYTQxMmE2NmE2OTViODYuLjJjOGRh
MmM3MzAyMDBhYmE4OTQxYjdhMTYwNzllMzQ2OTU3NGE4NDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTEwNzksNyArMTA3OSw5IEBAIHN0YXRpYyB2
b2lkIHRlc3RUaHJlYWRJZGVudGlmaWVyTWFwKCkKIAogICAgIC8vIE5vdyBjcmVhdGUgYW5vdGhl
ciB0aHJlYWQgdXNpbmcgV1RGLiBPbiBPU1gsIGl0IHdpbGwgaGF2ZSB0aGUgc2FtZSBwdGhyZWFk
IGhhbmRsZQogICAgIC8vIGJ1dCBzaG91bGQgZ2V0IGEgZGlmZmVyZW50IFJlZlB0cjxUaHJlYWQ+
LgotICAgIFRocmVhZDo6Y3JlYXRlKHJ1blRocmVhZCwgMCwgIkR1bXBSZW5kZXJUcmVlOiB0ZXN0
Iik7CisgICAgVGhyZWFkOjpjcmVhdGUoIkR1bXBSZW5kZXJUcmVlOiB0ZXN0IiwgW10geworICAg
ICAgICBydW5UaHJlYWQobnVsbHB0cik7CisgICAgfSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFsbG9j
YXRlR2xvYmFsQ29udHJvbGxlcnMoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313816</attachid>
            <date>2017-06-25 14:21:00 -0700</date>
            <delta_ts>2017-06-25 19:52:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173825-20170626062059.patch</filename>
            <type>text/plain</type>
            <size>42275</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4Nzk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZTFmNmE5ZmJmYzJmNGM1NWZjNjZhNTIzZDIzYWU2NmUwZTZlMTdiLi44NmUzNjZjNWUwZTI2N2M0
NTE5ZTYyZWFlNDBmNjE2Yzg5YWU5MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNy0wNi0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBEcm9wIFRocmVhZDo6Y3JlYXRlKG9ic29sZXRlIHRoaW5n
cykgQVBJIHNpbmNlIHdlIGNhbiB1c2UgbGFtYmRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChzdGFydFRpbWVvdXRU
aHJlYWRJZk5lZWRlZCk6CisgICAgICAgICh0aW1lb3V0VGhyZWFkTWFpbik6IERlbGV0ZWQuCisK
IDIwMTctMDYtMjUgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAg
ICAgICAgIFJlbW92ZSBleGNlc3NpdmUgaGVhZGVycyBmcm9tIEphdmFTY3JpcHRDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IGExY2RiYjNjZGJjN2U5MDNhMmZlNDMzMWJiZWNiMTM2MTIyMzI4NWMuLmQ0ZGM4YTc2ZmZhMDAy
YmNlNTY5YzU3OTJkOTU3NzM4YzI2OTQ4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTctMDYt
MjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dU
Rl0gRHJvcCBUaHJlYWQ6OmNyZWF0ZShvYnNvbGV0ZSB0aGluZ3MpIEFQSSBzaW5jZSB3ZSBjYW4g
dXNlIGxhbWJkYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczODI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhyZWFkOjpjcmVhdGUoVGhyZWFkRnVuY3Rpb24sIHZvaWQqIGRhdGEsIGNvbnN0IGNoYXIq
IG5hbWUpIGlzIGEgYml0IG9sZCBBUEkuCisgICAgICAgIFNpbmNlIHdlIGhhdmUgQysrIGxhbWJk
YSwgdGhlIGFib3ZlIEFQSSBpcyBzaW1wbHkgdW5uZWNlc3NhcnkuIEFuZCBDKysgbGFtYmRhCisg
ICAgICAgIGJhc2VkIG9uZSBpcyBiZXR0ZXIgc2luY2UgdGhlIGFib3ZlIEFQSSBuZWVkcyBjYXN0
aW5nIGRhdGEgdG8gYW5kIGZyb20gdm9pZCouCisKKyAgICAgICAgKiB3dGYvUGFyYWxsZWxKb2Jz
R2VuZXJpYy5jcHA6CisgICAgICAgIChXVEY6OlBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFBy
aXZhdGU6OnRyeUxvY2tGb3IpOgorICAgICAgICAoV1RGOjpQYXJhbGxlbEVudmlyb25tZW50OjpU
aHJlYWRQcml2YXRlOjp3b3JrZXJUaHJlYWQpOiBEZWxldGVkLgorICAgICAgICAqIHd0Zi9QYXJh
bGxlbEpvYnNHZW5lcmljLmg6CisgICAgICAgICogd3RmL1RocmVhZGluZy5jcHA6CisgICAgICAg
ICogd3RmL1RocmVhZGluZ1dpbi5jcHA6CisgICAgICAgIChXVEY6OmNyZWF0ZVRocmVhZCk6CisK
IDIwMTctMDYtMjUgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAg
ICAgICAgIFJlbW92ZSBleGNlc3NpdmUgaGVhZGVycyBmcm9tIEphdmFTY3JpcHRDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNDJmZDRhYjJmY2JhZTU4ZDM1ZjMxMzE1ZDdlMTQzNTRmZGU2YzcyZi4uNDRlZDIw
NmU4MDhiNTE4ZjZkZmM5YTU3ZDJiYjI4NTFlZDZlNDNlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDY2IEBACisyMDE3LTA2LTI1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtXVEZdIERyb3AgVGhyZWFkOjpjcmVhdGUob2Jzb2xldGUgdGhpbmdzKSBB
UEkgc2luY2Ugd2UgY2FuIHVzZSBsYW1iZGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3MzgyNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURC
U2VydmVyOjpJREJTZXJ2ZXI6OklEQlNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2
ZXI6OklEQlNlcnZlcjo6ZGF0YWJhc2VUaHJlYWRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNB
dWRpb0RlY29kZXI6OkFzeW5jQXVkaW9EZWNvZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5j
QXVkaW9EZWNvZGVyOjp0aHJlYWRFbnRyeSk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZmxp
bmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpvZmZsaW5lUmVuZGVyRW50cnkpOiBEZWxl
dGVkLgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25O
b2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRocmVhZDo6c3RhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFkU3RhcnQpOiBEZWxldGVkLgorICAg
ICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaDoKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpHQ0NvbnRyb2xsZXI6OmdjVGltZXJGaXJlZCk6CisgICAgICAg
IChXZWJDb3JlOjpHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRG
b3JEZWJ1Z2dpbmcpOgorICAgICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJY29uRGF0YWJhc2U6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6
SWNvbkRhdGFiYXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkU3RhcnQpOiBEZWxldGVkLgorICAg
ICAgICAqIGxvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oOgorICAgICAgICAqIHBhZ2UvUmVzb3Vy
Y2VVc2FnZVRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdlVGhyZWFk
OjpjcmVhdGVUaHJlYWRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVVzYWdl
VGhyZWFkOjp0aHJlYWRDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9SZXNvdXJj
ZVVzYWdlVGhyZWFkLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFk
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RocmVhZDo6Y3JlYXRlVGhyZWFkSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjp0aHJlYWRDYWxsYmFj
ayk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OnRocmVhZEJv
ZHkpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5o
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIUlRGRGF0YWJhc2VMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpkYXRhYmFzZUxvYWRlckVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29u
dm9sdmVyOjpSZXZlcmJDb252b2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6YmFja2dyb3VuZFRo
cmVhZEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252
b2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJldmVyYkNvbnZvbHZlcjo6dXNlQmFja2dyb3Vu
ZFRocmVhZHMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENG
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRlclJ1bkxvb3ApOgorICAgICAgICAoV2ViQ29y
ZTo6cnVuTG9hZGVyVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2N1cmwvQ3VybE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE1hbmFnZXI6OnN0
YXJ0VGhyZWFkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybE1hbmFnZXI6Ondvcmtl
clRocmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNYW5hZ2VyLmg6
CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyVGhyZWFkOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWQ6Ondv
cmtlclRocmVhZFN0YXJ0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVh
ZC5oOgorCiAyMDE3LTA2LTI1ICBLb25zdGFudGluIFRva2FyZXYgIDxhbm51bGVuQHlhbmRleC5y
dT4KIAogICAgICAgICBSZW1vdmUgZXhjZXNzaXZlIGhlYWRlcnMgZnJvbSBXZWJDb3JlL3BsYXRm
b3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDdmMGZjZmQ0NTMxNjdmNWI1YTA1NmRhYTYzYzZlODcxMDNlOWFiMzMu
LmI4MWYyZTIzZTgyZWJmYzc1NGQ2OWM3Y2RhMTk0YmUzZWVhNmYyYTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTctMDYtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+CisKKyAgICAgICAgW1dURl0gRHJvcCBUaHJlYWQ6OmNyZWF0ZShvYnNvbGV0ZSB0aGlu
Z3MpIEFQSSBzaW5jZSB3ZSBjYW4gdXNlIGxhbWJkYQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczODI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3RvcmFnZVRocmVhZDo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBTdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaDoKKwogMjAxNy0wNi0xNiAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBWaXN1YWwgU3R1
ZGlvIDIwMTcgNjQtYml0IGJ1aWxkIGFmdGVyIHIyMTgyNTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5k
ZXggNmYxNzZhOTFiYzI0YjE0ZTAzOWEwZTVkMzgwNzQ1YjFkYTZjOGY1OC4uYTcxZmU3NjNhYzk0
YzNkZDYzM2ZmNzRkMWQ2ZDVjOTE1YTg5ZTU2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTMx
NzMsMjIgKzMxNzMsMjAgQEAgaW50IGpzY21haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KTsKIHN0
YXRpYyBkb3VibGUgc19kZXNpcmVkVGltZW91dDsKIHN0YXRpYyBkb3VibGUgc190aW1lb3V0TXVs
dGlwbGllciA9IDEuMDsKIAotc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCB0aW1l
b3V0VGhyZWFkTWFpbih2b2lkKikKLXsKLSAgICBTZWNvbmRzIHRpbWVvdXREdXJhdGlvbihzX2Rl
c2lyZWRUaW1lb3V0ICogc190aW1lb3V0TXVsdGlwbGllcik7Ci0gICAgc2xlZXAodGltZW91dER1
cmF0aW9uKTsKLSAgICBkYXRhTG9nKCJUaW1lZCBvdXQgYWZ0ZXIgIiwgdGltZW91dER1cmF0aW9u
LCAiIHNlY29uZHMhXG4iKTsKLSAgICBDUkFTSCgpOwotfQotCiBzdGF0aWMgdm9pZCBzdGFydFRp
bWVvdXRUaHJlYWRJZk5lZWRlZCgpCiB7CiAgICAgaWYgKGNoYXIqIHRpbWVvdXRTdHJpbmcgPSBn
ZXRlbnYoIkpTQ1RFU1RfdGltZW91dCIpKSB7CiAgICAgICAgIGlmIChzc2NhbmYodGltZW91dFN0
cmluZywgIiVsZiIsICZzX2Rlc2lyZWRUaW1lb3V0KSAhPSAxKSB7CiAgICAgICAgICAgICBkYXRh
TG9nKCJXQVJOSU5HOiB0aW1lb3V0IHN0cmluZyBpcyBtYWxmb3JtZWQsIGdvdCAiLCB0aW1lb3V0
U3RyaW5nLAogICAgICAgICAgICAgICAgICIgYnV0IGV4cGVjdGVkIGEgbnVtYmVyLiBOb3QgdXNp
bmcgYSB0aW1lb3V0LlxuIik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgVGhyZWFkOjpj
cmVhdGUodGltZW91dFRocmVhZE1haW4sIDAsICJqc2MgVGltZW91dCBUaHJlYWQiKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFRocmVhZDo6Y3JlYXRlKCJqc2MgVGltZW91dCBUaHJl
YWQiLCBbXSAoKSB7CisgICAgICAgICAgICAgICAgU2Vjb25kcyB0aW1lb3V0RHVyYXRpb24oc19k
ZXNpcmVkVGltZW91dCAqIHNfdGltZW91dE11bHRpcGxpZXIpOworICAgICAgICAgICAgICAgIHNs
ZWVwKHRpbWVvdXREdXJhdGlvbik7CisgICAgICAgICAgICAgICAgZGF0YUxvZygiVGltZWQgb3V0
IGFmdGVyICIsIHRpbWVvdXREdXJhdGlvbiwgIiBzZWNvbmRzIVxuIik7CisgICAgICAgICAgICAg
ICAgQ1JBU0goKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuY3BwCmluZGV4IGNjZTExMDZkNDY3YjcyMDgzYzFl
ZGIyMTNhZDU5YzQ0MDMxN2E0ZWUuLmFhY2M3Y2NjMzU1NjZmZjY5ZDNhMGMyMWI2YzZhMjk0Mzc1
NWMzN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuY3Bw
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuY3BwCkBAIC05Myw4ICs5
MywyMiBAQCBib29sIFBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFByaXZhdGU6OnRyeUxvY2tG
b3IoUGFyYWxsZWxFbnZpcm9ubWVudCogcGFyZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgaWYgKCFtX3RocmVhZCkKLSAgICAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNy
ZWF0ZSgmUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0ZTo6d29ya2VyVGhyZWFkLCB0
aGlzLCAiUGFyYWxsZWwgd29ya2VyIik7CisgICAgaWYgKCFtX3RocmVhZCkgeworICAgICAgICBt
X3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJQYXJhbGxlbCB3b3JrZXIiLCBbdGhpc10geworICAg
ICAgICAgICAgTG9ja0hvbGRlciBsb2NrKG1fbXV0ZXgpOworCisgICAgICAgICAgICB3aGlsZSAo
bV90aHJlYWQpIHsKKyAgICAgICAgICAgICAgICBpZiAobV9ydW5uaW5nKSB7CisgICAgICAgICAg
ICAgICAgICAgICgqbV90aHJlYWRGdW5jdGlvbikobV9wYXJhbWV0ZXJzKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9ydW5uaW5nID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIG1fcGFyZW50
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgbV90aHJlYWRDb25kaXRpb24ubm90aWZ5T25lKCk7
CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbV90aHJlYWRDb25kaXRpb24u
d2FpdChtX211dGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQogCiAgICAg
aWYgKG1fdGhyZWFkKQogICAgICAgICBtX3BhcmVudCA9IHBhcmVudDsKQEAgLTEyMSwyMiArMTM1
LDUgQEAgdm9pZCBQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjp3YWl0Rm9yRmlu
aXNoKCkKICAgICAgICAgbV90aHJlYWRDb25kaXRpb24ud2FpdChtX211dGV4KTsKIH0KIAotdm9p
ZCBQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjp3b3JrZXJUaHJlYWQodm9pZCog
dGhyZWFkRGF0YSkKLXsKLSAgICBUaHJlYWRQcml2YXRlKiBzaGFyZWRUaHJlYWQgPSByZWludGVy
cHJldF9jYXN0PFRocmVhZFByaXZhdGUqPih0aHJlYWREYXRhKTsKLSAgICBMb2NrSG9sZGVyIGxv
Y2soc2hhcmVkVGhyZWFkLT5tX211dGV4KTsKLQotICAgIHdoaWxlIChzaGFyZWRUaHJlYWQtPm1f
dGhyZWFkKSB7Ci0gICAgICAgIGlmIChzaGFyZWRUaHJlYWQtPm1fcnVubmluZykgewotICAgICAg
ICAgICAgKCpzaGFyZWRUaHJlYWQtPm1fdGhyZWFkRnVuY3Rpb24pKHNoYXJlZFRocmVhZC0+bV9w
YXJhbWV0ZXJzKTsKLSAgICAgICAgICAgIHNoYXJlZFRocmVhZC0+bV9ydW5uaW5nID0gZmFsc2U7
Ci0gICAgICAgICAgICBzaGFyZWRUaHJlYWQtPm1fcGFyZW50ID0gMDsKLSAgICAgICAgICAgIHNo
YXJlZFRocmVhZC0+bV90aHJlYWRDb25kaXRpb24ubm90aWZ5T25lKCk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBzaGFyZWRUaHJlYWQtPm1fdGhyZWFkQ29uZGl0aW9uLndhaXQoc2hhcmVkVGhyZWFk
LT5tX211dGV4KTsKLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdURgogI2VuZGlmIC8vIEVO
QUJMRShUSFJFQURJTkdfR0VORVJJQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BhcmFs
bGVsSm9ic0dlbmVyaWMuaCBiL1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVsSm9ic0dlbmVyaWMuaApp
bmRleCBhMjBjYWI2MWVlNzljZWFiZDU0ZTYyNzdjZWI1N2RmNjhlNjZhOTBkLi43ZjcwODBjNTRj
MjhkYWU2NDNjMmE4NjYxZDNkNjIzNGE5MmQxZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmgKKysrIGIvU291cmNlL1dURi93dGYvUGFyYWxsZWxKb2Jz
R2VuZXJpYy5oCkBAIC02NCw4ICs2NCw2IEBAIGNsYXNzIFBhcmFsbGVsRW52aXJvbm1lbnQgewog
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGhyZWFkUHJpdmF0ZSgpKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHN0YXRpYyB2b2lkIHdvcmtlclRocmVhZCh2b2lkKik7Ci0KICAgICBw
cml2YXRlOgogICAgICAgICBSZWZQdHI8VGhyZWFkPiBtX3RocmVhZDsKICAgICAgICAgYm9vbCBt
X3J1bm5pbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5n
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAKaW5kZXggNzg5NmU5YzA1YTJjZWZl
Zjg1YzU3NWNkOTZiNDNiNzNkZTczNDU0Yi4uZGRjMjhjMmE1NGIzMmExYTY2NGNhM2IwOTdmM2Fi
ZTJmN2M4NmY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCkBAIC0xMTEsMTMgKzExMSw2IEBAIFJlZlB0
cjxUaHJlYWQ+IFRocmVhZDo6Y3JlYXRlKGNvbnN0IGNoYXIqIG5hbWUsIEZ1bmN0aW9uPHZvaWQo
KT4mJiBlbnRyeVBvaW50KQogICAgIHJldHVybiBUaHJlYWQ6OmNyZWF0ZUludGVybmFsKHRocmVh
ZEVudHJ5UG9pbnQsIGNvbnRleHQsIG5hbWUpOwogfQogCi1SZWZQdHI8VGhyZWFkPiBUaHJlYWQ6
OmNyZWF0ZShUaHJlYWRGdW5jdGlvbiBlbnRyeVBvaW50LCB2b2lkKiBkYXRhLCBjb25zdCBjaGFy
KiBuYW1lKQotewotICAgIHJldHVybiBUaHJlYWQ6OmNyZWF0ZShuYW1lLCBbZW50cnlQb2ludCwg
ZGF0YV0gewotICAgICAgICBlbnRyeVBvaW50KGRhdGEpOwotICAgIH0pOwotfQotCiB2b2lkIFRo
cmVhZDo6ZGlkRXhpdCgpCiB7CiAgICAgc3RkOjp1bmlxdWVfbG9jazxzdGQ6Om11dGV4PiBsb2Nr
ZXIobV9tdXRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3Bw
IGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNwcAppbmRleCA1ZDViMTYyMGMxOGRjNGNi
MjBlYWFlN2ViNTk3MWJjZjVhOWRkNjE0Li5iZDYxNWZiOTJjNjQyZTU4ZTBiYTFjNTc0Y2FjNGQ3
NjgxZTlmMmZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCisr
KyBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKQEAgLTUxNiw3ICs1MTYsOSBAQCBE
V09SRCBhYnNvbHV0ZVRpbWVUb1dhaXRUaW1lb3V0SW50ZXJ2YWwoZG91YmxlIGFic29sdXRlVGlt
ZSkKIC8vIFJlbW92ZSB0aGlzIHdvcmthcm91bmQgY29kZSB3aGVuIDxyZGFyOi8vcHJvYmxlbS8z
MTc5MzIxMz4gaXMgZml4ZWQuCiBUaHJlYWRJZGVudGlmaWVyIGNyZWF0ZVRocmVhZChUaHJlYWRG
dW5jdGlvbiBmdW5jdGlvbiwgdm9pZCogZGF0YSwgY29uc3QgY2hhciogdGhyZWFkTmFtZSkKIHsK
LSAgICByZXR1cm4gVGhyZWFkOjpjcmVhdGUoZnVuY3Rpb24sIGRhdGEsIHRocmVhZE5hbWUpLT5p
ZCgpOworICAgIHJldHVybiBUaHJlYWQ6OmNyZWF0ZSh0aHJlYWROYW1lLCBbZnVuY3Rpb24sIGRh
dGFdIHsKKyAgICAgICAgZnVuY3Rpb24oZGF0YSk7CisgICAgfSktPmlkKCk7CiB9CiAKIGludCB3
YWl0Rm9yVGhyZWFkQ29tcGxldGlvbihUaHJlYWRJZGVudGlmaWVyIHRocmVhZElEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNw
cAppbmRleCA2NDQzZGRjYTkzNDkwZDhjOWU2ZTZiMTJkMzQyM2MwYjgzNjk0ZTg2Li40MjBjM2E2
YWRlZWM0ZGU2M2E5ODIyYzk1Nzg1NWEyMTE3NGIzM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmNwcApAQCAtNTYsNyAr
NTYsOSBAQCBJREJTZXJ2ZXI6OklEQlNlcnZlcihJREJCYWNraW5nU3RvcmVUZW1wb3JhcnlGaWxl
SGFuZGxlciYgZmlsZUhhbmRsZXIpCiAgICAgOiBtX2JhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVI
YW5kbGVyKGZpbGVIYW5kbGVyKQogewogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9kYXRhYmFz
ZVRocmVhZENyZWF0aW9uTG9jayk7Ci0gICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShJREJT
ZXJ2ZXI6OmRhdGFiYXNlVGhyZWFkRW50cnksIHRoaXMsICJJbmRleGVkRGF0YWJhc2UgU2VydmVy
Iik7CisgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW5kZXhlZERhdGFiYXNlIFNlcnZl
ciIsIFt0aGlzXSB7CisgICAgICAgIGRhdGFiYXNlUnVuTG9vcCgpOworICAgIH0pOwogfQogCiBJ
REJTZXJ2ZXI6OklEQlNlcnZlcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlyZWN0b3J5UGF0aCwg
SURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5RmlsZUhhbmRsZXImIGZpbGVIYW5kbGVyKQpAQCAtNjYs
NyArNjgsOSBAQCBJREJTZXJ2ZXI6OklEQlNlcnZlcihjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGly
ZWN0b3J5UGF0aCwgSURCQmFja2luZ1N0b3JlVGVtcG9yYQogICAgIExPRyhJbmRleGVkREIsICJJ
REJTZXJ2ZXIgY3JlYXRlZCBhdCBwYXRoICVzIiwgZGF0YWJhc2VEaXJlY3RvcnlQYXRoLnV0Zjgo
KS5kYXRhKCkpOwogCiAgICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX2RhdGFiYXNlVGhyZWFkQ3Jl
YXRpb25Mb2NrKTsKLSAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKElEQlNlcnZlcjo6ZGF0
YWJhc2VUaHJlYWRFbnRyeSwgdGhpcywgIkluZGV4ZWREYXRhYmFzZSBTZXJ2ZXIiKTsKKyAgICBt
X3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJJbmRleGVkRGF0YWJhc2UgU2VydmVyIiwgW3RoaXNd
IHsKKyAgICAgICAgZGF0YWJhc2VSdW5Mb29wKCk7CisgICAgfSk7CiB9CiAKIHZvaWQgSURCU2Vy
dmVyOjpyZWdpc3RlckNvbm5lY3Rpb24oSURCQ29ubmVjdGlvblRvQ2xpZW50JiBjb25uZWN0aW9u
KQpAQCAtNTAwLDEzICs1MDQsNiBAQCB2b2lkIElEQlNlcnZlcjo6cG9zdERhdGFiYXNlVGFza1Jl
cGx5KENyb3NzVGhyZWFkVGFzayYmIHRhc2spCiAgICAgfSk7CiB9CiAKLXZvaWQgSURCU2VydmVy
OjpkYXRhYmFzZVRocmVhZEVudHJ5KHZvaWQqIHRocmVhZERhdGEpCi17Ci0gICAgQVNTRVJUKHRo
cmVhZERhdGEpOwotICAgIElEQlNlcnZlciogc2VydmVyID0gcmVpbnRlcnByZXRfY2FzdDxJREJT
ZXJ2ZXIqPih0aHJlYWREYXRhKTsKLSAgICBzZXJ2ZXItPmRhdGFiYXNlUnVuTG9vcCgpOwotfQot
CiB2b2lkIElEQlNlcnZlcjo6ZGF0YWJhc2VSdW5Mb29wKCkKIHsKICAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L3NlcnZlci9JREJTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3Nl
cnZlci9JREJTZXJ2ZXIuaAppbmRleCBlNDZmN2I1ODIxZWEwMTZiZmUyNTRmNGQxNzdjNmVhYWQx
NTJjMmQ4Li5kYjEwZDY5ZGUxNmI5MDc1ZDE0NWU0YzgxNmZmNmMyNDBiOTg1ZDA4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5o
CkBAIC0xMTgsNyArMTE4LDYgQEAgY2xhc3MgSURCU2VydmVyIDogcHVibGljIFJlZkNvdW50ZWQ8
SURCU2VydmVyPiB7CiAgICAgdm9pZCBwZXJmb3JtQ2xvc2VBbmREZWxldGVEYXRhYmFzZXNGb3JP
cmlnaW5zKGNvbnN0IFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+JiwgdWludDY0X3QgY2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBkaWRQZXJmb3JtQ2xvc2VBbmREZWxldGVEYXRhYmFzZXModWludDY0
X3QgY2FsbGJhY2tJRCk7CiAKLSAgICBzdGF0aWMgdm9pZCBkYXRhYmFzZVRocmVhZEVudHJ5KHZv
aWQqKTsKICAgICB2b2lkIGRhdGFiYXNlUnVuTG9vcCgpOwogICAgIHZvaWQgaGFuZGxlVGFza1Jl
cGxpZXNPbk1haW5UaHJlYWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmNwcAppbmRleCA3Y2Y3YWY4ZmVhMmUxZTY3ZDUy
MzdjODcxYTAxNWIzYzQ5MDBhMjdiLi4xMTUwMTU3NWE3M2NmNDY5MWI0NTIzMmM5YTcwM2E0YWE2
OTNkMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FzeW5j
QXVkaW9EZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Fz
eW5jQXVkaW9EZWNvZGVyLmNwcApAQCAtMzksNyArMzksOSBAQCBBc3luY0F1ZGlvRGVjb2Rlcjo6
QXN5bmNBdWRpb0RlY29kZXIoKQogewogICAgIC8vIFN0YXJ0IHdvcmtlciB0aHJlYWQuCiAgICAg
TG9ja0hvbGRlciBsb2NrKG1fdGhyZWFkQ3JlYXRpb25NdXRleCk7Ci0gICAgbV90aHJlYWQgPSBU
aHJlYWQ6OmNyZWF0ZShBc3luY0F1ZGlvRGVjb2Rlcjo6dGhyZWFkRW50cnksIHRoaXMsICJBdWRp
byBEZWNvZGVyIik7CisgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiQXVkaW8gRGVjb2Rl
ciIsIFt0aGlzXSB7CisgICAgICAgIHJ1bkxvb3AoKTsKKyAgICB9KTsKIH0KIAogQXN5bmNBdWRp
b0RlY29kZXI6On5Bc3luY0F1ZGlvRGVjb2RlcigpCkBAIC01OSwxNCArNjEsNiBAQCB2b2lkIEFz
eW5jQXVkaW9EZWNvZGVyOjpkZWNvZGVBc3luYyhSZWY8QXJyYXlCdWZmZXI+JiYgYXVkaW9EYXRh
LCBmbG9hdCBzYW1wbGVSYQogICAgIG1fcXVldWUuYXBwZW5kKFdURk1vdmUoZGVjb2RpbmdUYXNr
KSk7IC8vIG5vdGUgdGhhdCBvd25lcnNoaXAgb2YgdGhlIHRhc2sgaXMgZWZmZWN0aXZlbHkgdGFr
ZW4gYnkgdGhlIHF1ZXVlLgogfQogCi0vLyBBc3luY2hyb25vdXNseSBkZWNvZGUgaW4gdGhpcyB0
aHJlYWQuCi12b2lkIEFzeW5jQXVkaW9EZWNvZGVyOjp0aHJlYWRFbnRyeSh2b2lkKiB0aHJlYWRE
YXRhKQotewotICAgIEFTU0VSVCh0aHJlYWREYXRhKTsKLSAgICBBc3luY0F1ZGlvRGVjb2Rlciog
ZGVjb2RlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8QXN5bmNBdWRpb0RlY29kZXIqPih0aHJlYWREYXRh
KTsKLSAgICBkZWNvZGVyLT5ydW5Mb29wKCk7Ci19Ci0KIHZvaWQgQXN5bmNBdWRpb0RlY29kZXI6
OnJ1bkxvb3AoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCmluZGV4IGYx
MjUxMGQxOTdjM2RmOTZjYzA1Njg1NDZjYmMzZmI0NmVhYWE4YTEuLjQyZmMwMDI5OWEzZTg4OGJk
NDZmNjI5YmI2ZmE4NmE2Njk3YTBjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKQEAgLTc0LDcgKzc0LDYgQEAgY2xhc3Mg
QXN5bmNBdWRpb0RlY29kZXIgewogICAgICAgICBSZWZQdHI8QXVkaW9CdWZmZXI+IG1fYXVkaW9C
dWZmZXI7CiAgICAgfTsKICAgICAKLSAgICBzdGF0aWMgdm9pZCB0aHJlYWRFbnRyeSh2b2lkKiB0
aHJlYWREYXRhKTsKICAgICB2b2lkIHJ1bkxvb3AoKTsKIAogICAgIFJlZlB0cjxUaHJlYWQ+IG1f
dGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDM3Yjk1ODg0MDQxZGM0
NWRmNTQ4Mjk0YTJmNGQxODFjMGZhOGFlOTMuLmU5OTViMDg2NTg3MDY3OWY3YTZiZjlhMjFhYzI4
ZTFkZjNlMzE0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKQEAgLTgyLDE4ICs4
MiwxMiBAQCB2b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3RhcnRSZW5kZXJpbmco
KQogICAgIGlmICghbV9zdGFydGVkUmVuZGVyaW5nKSB7CiAgICAgICAgIG1fc3RhcnRlZFJlbmRl
cmluZyA9IHRydWU7CiAgICAgICAgIHJlZigpOyAvLyBTZWUgY29ycmVzcG9uZGluZyBkZXJlZigp
IGNhbGwgaW4gbm90aWZ5Q29tcGxldGVEaXNwYXRjaCgpLgotICAgICAgICBtX3JlbmRlclRocmVh
ZCA9IFRocmVhZDo6Y3JlYXRlKE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6b2ZmbGluZVJl
bmRlckVudHJ5LCB0aGlzLCAib2ZmbGluZSByZW5kZXJlciIpOworICAgICAgICBtX3JlbmRlclRo
cmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJvZmZsaW5lIHJlbmRlcmVyIiwgW3RoaXNdIHsKKyAgICAg
ICAgICAgIG9mZmxpbmVSZW5kZXIoKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCi0vLyBEbyBv
ZmZsaW5lIHJlbmRlcmluZyBpbiB0aGlzIHRocmVhZC4KLXZvaWQgT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlOjpvZmZsaW5lUmVuZGVyRW50cnkodm9pZCogdGhyZWFkRGF0YSkKLXsKLSAgICBP
ZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUqIGRlc3RpbmF0aW9uTm9kZSA9IHJlaW50ZXJwcmV0
X2Nhc3Q8T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKj4odGhyZWFkRGF0YSk7Ci0gICAgQVNT
RVJUKGRlc3RpbmF0aW9uTm9kZSk7Ci0gICAgZGVzdGluYXRpb25Ob2RlLT5vZmZsaW5lUmVuZGVy
KCk7Ci19Ci0KIHZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpvZmZsaW5lUmVuZGVy
KCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCmluZGV4IDU2OTAxMzhiMTY1NzBiM2Y5ZDIzN2Y5ZGQ0YThlYTIzZDczZmZhYTYuLmI5NDVi
ZWY5MWY3Y2RlYmFkYTUyMWVkMDU5ZWJlYzRjYzQyNWI1YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaApAQCAtNjUsNyArNjUsNiBAQCBjbGFzcyBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5v
ZGUgOiBwdWJsaWMgQXVkaW9EZXN0aW5hdGlvbk5vZGUgewogICAgIC8vIFJlbmRlcmluZyB0aHJl
YWQuCiAgICAgUmVmUHRyPFRocmVhZD4gbV9yZW5kZXJUaHJlYWQ7CiAgICAgYm9vbCBtX3N0YXJ0
ZWRSZW5kZXJpbmc7Ci0gICAgc3RhdGljIHZvaWQgb2ZmbGluZVJlbmRlckVudHJ5KHZvaWQqIHRo
cmVhZERhdGEpOwogICAgIHZvaWQgb2ZmbGluZVJlbmRlcigpOwogICAgIAogICAgIC8vIEZvciBj
b21wbGV0aW9uIGNhbGxiYWNrIG9uIG1haW4gdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAppbmRleCBkNzA4MTRm
OWI1NWIyNDhmZDY0ZTFhZmY0M2UzNzY3NGYxNjkyZDRiLi4xMTUyNGNkY2QyYWIzNDJmYjA5ZmU2
MTlhYjQ2ZjU3OTIzY2U2OWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcApAQCAtNjMsNyArNjMsOSBAQCBib29sIERh
dGFiYXNlVGhyZWFkOjpzdGFydCgpCiAgICAgaWYgKG1fdGhyZWFkKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoRGF0YWJhc2VUaHJlYWQ6OmRh
dGFiYXNlVGhyZWFkU3RhcnQsIHRoaXMsICJXZWJDb3JlOiBEYXRhYmFzZSIpOworICAgIG1fdGhy
ZWFkID0gVGhyZWFkOjpjcmVhdGUoIldlYkNvcmU6IERhdGFiYXNlIiwgW3RoaXNdIHsKKyAgICAg
ICAgZGF0YWJhc2VUaHJlYWQoKTsKKyAgICB9KTsKIAogICAgIHJldHVybiBtX3RocmVhZDsKIH0K
QEAgLTg3LDEyICs4OSw2IEBAIGJvb2wgRGF0YWJhc2VUaHJlYWQ6OnRlcm1pbmF0aW9uUmVxdWVz
dGVkKERhdGFiYXNlVGFza1N5bmNocm9uaXplciogdGFza1N5bmNocm9uCiAgICAgcmV0dXJuIG1f
cXVldWUua2lsbGVkKCk7CiB9CiAKLXZvaWQgRGF0YWJhc2VUaHJlYWQ6OmRhdGFiYXNlVGhyZWFk
U3RhcnQodm9pZCogdkRhdGFiYXNlVGhyZWFkKQotewotICAgIERhdGFiYXNlVGhyZWFkKiBkYlRo
cmVhZCA9IHN0YXRpY19jYXN0PERhdGFiYXNlVGhyZWFkKj4odkRhdGFiYXNlVGhyZWFkKTsKLSAg
ICBkYlRocmVhZC0+ZGF0YWJhc2VUaHJlYWQoKTsKLX0KLQogdm9pZCBEYXRhYmFzZVRocmVhZDo6
ZGF0YWJhc2VUaHJlYWQoKQogewogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuaAppbmRleCAwZTdhMDAwYjRiNzYzZmZiN2Fj
NWVhMDBhYTk1ODdiMDc4ZTZhM2NkLi4zNDAwOWQxYjIyYzQ0YzJlMDNlZWNiYjdmNDRlNGM3Yzhk
N2RhZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZVRocmVhZC5oCkBAIC02NSw3ICs2NSw2IEBAIGNsYXNzIERhdGFiYXNlVGhyZWFkIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPERhdGFiYXNlVGhyZWFkPiB7CiBwcml2YXRlOgog
ICAgIERhdGFiYXNlVGhyZWFkKCk7CiAKLSAgICBzdGF0aWMgdm9pZCBkYXRhYmFzZVRocmVhZFN0
YXJ0KHZvaWQqKTsKICAgICB2b2lkIGRhdGFiYXNlVGhyZWFkKCk7CiAKICAgICBMb2NrIG1fdGhy
ZWFkQ3JlYXRpb25NdXRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0dDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xs
ZXIuY3BwCmluZGV4IDVhZTM5NzJjNjRjOWY5ZjM0NzVhMDI2ZjlkYWZiOGQ2OGU1OTAzODkuLmI1
ZmNmNjIyOGY3Njk1ZTE0ODJjMTIwOTIwMzBiNTU1ZGNiNzViYjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBu
YW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIGNvbGxl
Y3Qodm9pZCopCitzdGF0aWMgdm9pZCBjb2xsZWN0KCkKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhjb21tb25WTSgpKTsKICAgICBjb21tb25WTSgpLmhlYXAuY29sbGVjdE5vdyhBc3luYywgQ29s
bGVjdGlvblNjb3BlOjpGdWxsKTsKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBHQ0NvbnRyb2xsZXI6
OmdhcmJhZ2VDb2xsZWN0T25OZXh0UnVuTG9vcCgpCiAKIHZvaWQgR0NDb250cm9sbGVyOjpnY1Rp
bWVyRmlyZWQoKQogewotICAgIGNvbGxlY3QobnVsbHB0cik7CisgICAgY29sbGVjdCgpOwogfQog
CiB2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3ROb3coKQpAQCAtMTAxLDcgKzEwMSw3
IEBAIHZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE5vd0lmTm90RG9uZVJlY2VudGx5
KCkKIAogdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0T25BbHRlcm5hdGVUaHJlYWRG
b3JEZWJ1Z2dpbmcoYm9vbCB3YWl0VW50aWxEb25lKQogewotICAgIFJlZlB0cjxUaHJlYWQ+IHRo
cmVhZCA9IFRocmVhZDo6Y3JlYXRlKGNvbGxlY3QsIDAsICJXZWJDb3JlOiBHQ0NvbnRyb2xsZXIi
KTsKKyAgICBSZWZQdHI8VGhyZWFkPiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTog
R0NDb250cm9sbGVyIiwgY29sbGVjdCk7CiAKICAgICBpZiAod2FpdFVudGlsRG9uZSkgewogICAg
ICAgICB0aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkRhdGFiYXNlLmNwcAppbmRleCA0OGY4OGM1ZmQ5NjQwZGQ2ZWFjNDNkMWU4MWNk
YTczYThlNGIxY2JkLi41OThjOTM5OGY4ZWFhYjE0MWEyZDlmZGNhNDg0YzUzM2I4ZWJlYjQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAKQEAgLTE0MSw3
ICsxNDEsOSBAQCBib29sIEljb25EYXRhYmFzZTo6b3Blbihjb25zdCBTdHJpbmcmIGRpcmVjdG9y
eSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSkKICAgICAvLyBMb2NrIGhlcmUgYXMgd2VsbCBhcyBm
aXJzdCB0aGluZyBpbiB0aGUgdGhyZWFkIHNvIHRoZSB0aHJlYWQgZG9lc24ndCBhY3R1YWxseSBj
b21tZW5jZSB1bnRpbCB0aGUgY3JlYXRlVGhyZWFkKCkgY2FsbCAKICAgICAvLyBjb21wbGV0ZXMg
YW5kIG1fc3luY1RocmVhZFJ1bm5pbmcgaXMgcHJvcGVybHkgc2V0CiAgICAgbV9zeW5jTG9jay5s
b2NrKCk7Ci0gICAgbV9zeW5jVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoSWNvbkRhdGFiYXNlOjpp
Y29uRGF0YWJhc2VTeW5jVGhyZWFkU3RhcnQsIHRoaXMsICJXZWJDb3JlOiBJY29uRGF0YWJhc2Ui
KTsKKyAgICBtX3N5bmNUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTogSWNvbkRhdGFi
YXNlIiwgW3RoaXNdIHsKKyAgICAgICAgaWNvbkRhdGFiYXNlU3luY1RocmVhZCgpOworICAgIH0p
OwogICAgIG1fc3luY1RocmVhZFJ1bm5pbmcgPSBtX3N5bmNUaHJlYWQ7CiAgICAgbV9zeW5jTG9j
ay51bmxvY2soKTsKICAgICBpZiAoIW1fc3luY1RocmVhZCkKQEAgLTk0MiwxMyArOTQ0LDYgQEAg
Ym9vbCBJY29uRGF0YWJhc2U6OnNob3VsZFN0b3BUaHJlYWRBY3Rpdml0eSgpIGNvbnN0CiAgICAg
cmV0dXJuIG1fdGhyZWFkVGVybWluYXRpb25SZXF1ZXN0ZWQgfHwgbV9yZW1vdmVJY29uc1JlcXVl
c3RlZDsKIH0KIAotdm9pZCBJY29uRGF0YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWRTdGFy
dCh2b2lkKiB2SWNvbkRhdGFiYXNlKQoteyAgICAKLSAgICBJY29uRGF0YWJhc2UqIGljb25EQiA9
IHN0YXRpY19jYXN0PEljb25EYXRhYmFzZSo+KHZJY29uRGF0YWJhc2UpOwotICAgIAotICAgIGlj
b25EQi0+aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpOwotfQotCiB2b2lkIEljb25EYXRhYmFzZTo6
aWNvbkRhdGFiYXNlU3luY1RocmVhZCgpCiB7CiAgICAgLy8gVGhlIGNhbGwgdG8gY3JlYXRlIHRo
aXMgdGhyZWFkIG1pZ2h0IG5vdCBjb21wbGV0ZSBiZWZvcmUgdGhlIHRocmVhZCBhY3R1YWxseSBz
dGFydHMsIHNvIHdlIG1pZ2h0IGZhaWwgdGhpcyBBU1NFUlRfSUNPTl9TWU5DX1RIUkVBRCgpIGJl
Y2F1c2UgdGhlIHBvaW50ZXIgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNv
bi9JY29uRGF0YWJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFz
ZS5oCmluZGV4IDg2NDA5NTU0NzUzM2ZkODkwZjAzYWZlOTJiYjA2ZjYwODdlZTczNjIuLjAwNDBi
NDI5YWUxYTE2ZWJkZWU5ZDIwNDBjMTdiZTJhMWJlY2Q0YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25EYXRhYmFzZS5oCkBAIC0xODIsNyArMTgyLDYgQEAgY2xhc3MgSWNvbkRh
dGFiYXNlIGZpbmFsIDogcHVibGljIEljb25EYXRhYmFzZUJhc2UgewogICAgIFdFQkNPUkVfRVhQ
T1JUIGJvb2wgc2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKIHByaXZh
dGU6ICAgIAotICAgIHN0YXRpYyB2b2lkIGljb25EYXRhYmFzZVN5bmNUaHJlYWRTdGFydCh2b2lk
ICopOwogICAgIHZvaWQgaWNvbkRhdGFiYXNlU3luY1RocmVhZCgpOwogICAgIAogICAgIC8vIFRo
ZSBmb2xsb3dpbmcgYmxvY2sgb2YgbWV0aG9kcyBhcmUgY2FsbGVkIGV4Y2x1c2l2ZWx5IGJ5IHRo
ZSBzeW5jIHRocmVhZCB0byBtYW5hZ2UgaS9vIHRvIGFuZCBmcm9tIHRoZSBkYXRhYmFzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5jcHAKaW5kZXggZTBiMjc4NDdl
ZmYyMGMwNjQxNzY2MzQ3NTU0ZjkzODc4NjlkZmRiZC4uYmI2OTRiZGQzYzhiZThiNTcyNzM5ZGU2
ZTYyNGU5MDI4YTM0NzNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJj
ZVVzYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VU
aHJlYWQuY3BwCkBAIC0xMDAsMTIgKzEwMCw5IEBAIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6
Y3JlYXRlVGhyZWFkSWZOZWVkZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX3ZtID0gJmNv
bW1vblZNKCk7Ci0gICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSh0aHJlYWRDYWxsYmFjaywg
dGhpcywgIldlYkNvcmU6IFJlc291cmNlVXNhZ2UiKTsKLX0KLQotdm9pZCBSZXNvdXJjZVVzYWdl
VGhyZWFkOjp0aHJlYWRDYWxsYmFjayh2b2lkKiByZXNvdXJjZVVzYWdlVGhyZWFkKQotewotICAg
IHN0YXRpY19jYXN0PFJlc291cmNlVXNhZ2VUaHJlYWQqPihyZXNvdXJjZVVzYWdlVGhyZWFkKS0+
dGhyZWFkQm9keSgpOworICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIldlYkNvcmU6IFJl
c291cmNlVXNhZ2UiLCBbdGhpc10geworICAgICAgICB0aHJlYWRCb2R5KCk7CisgICAgfSk7CiB9
CiAKIE5PX1JFVFVSTiB2b2lkIFJlc291cmNlVXNhZ2VUaHJlYWQ6OnRocmVhZEJvZHkoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaAppbmRleCAzNjE3YjdhZGVjMDE5
MjIyMTEzMDgxYWQ0YjNhODg3NTRmMWZhNWJhLi44MjRiNjQ4MzUxZDEzNTdjNzg5NDk0ZjI0MmQz
NGI5ZDg3MGFmMGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNh
Z2VUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQu
aApAQCAtNTgsNyArNTgsNiBAQCBjbGFzcyBSZXNvdXJjZVVzYWdlVGhyZWFkIHsKICAgICB2b2lk
IG5vdGlmeU9ic2VydmVycyhSZXNvdXJjZVVzYWdlRGF0YSYmKTsKIAogICAgIHZvaWQgY3JlYXRl
VGhyZWFkSWZOZWVkZWQoKTsKLSAgICBzdGF0aWMgdm9pZCB0aHJlYWRDYWxsYmFjayh2b2lkKiBz
Y3JvbGxpbmdUaHJlYWQpOwogICAgIHZvaWQgdGhyZWFkQm9keSgpOwogICAgIHZvaWQgcGxhdGZv
cm1UaHJlYWRCb2R5KEpTQzo6Vk0qLCBSZXNvdXJjZVVzYWdlRGF0YSYpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcAppbmRleCA2NGQw
NTBhNjg0OGU4MWI1NjhkZDViODY1MWU0YjlmZjBkYmI3NTUxLi5kMjA0Yzc2MjEwYjMzNDA0ZGY0
NGM0ZGEzZmNhN2FjY2Q3N2I0MmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKQEAgLTgwLDcgKzgwLDEwIEBAIHZvaWQgU2Nyb2xs
aW5nVGhyZWFkOjpjcmVhdGVUaHJlYWRJZk5lZWRlZCgpCiAgICAgewogICAgICAgICBzdGQ6OnVu
aXF1ZV9sb2NrPExvY2s+IGxvY2sobV9pbml0aWFsaXplUnVuTG9vcE11dGV4KTsKIAotICAgICAg
ICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKHRocmVhZENhbGxiYWNrLCB0aGlzLCAiV2ViQ29y
ZTogU2Nyb2xsaW5nIik7CisgICAgICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIldlYkNv
cmU6IFNjcm9sbGluZyIsIFt0aGlzXSB7CisgICAgICAgICAgICBXVEY6OlRocmVhZDo6c2V0Q3Vy
cmVudFRocmVhZElzVXNlckludGVyYWN0aXZlKCk7CisgICAgICAgICAgICBpbml0aWFsaXplUnVu
TG9vcCgpOworICAgICAgICB9KTsKICAgICAgICAgCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
ICAgIG1faW5pdGlhbGl6ZVJ1bkxvb3BDb25kaXRpb25WYXJpYWJsZS53YWl0KGxvY2ssIFt0aGlz
XXsgcmV0dXJuIG1fdGhyZWFkUnVuTG9vcDsgfSk7CkBAIC04OCwxNyArOTEsNiBAQCB2b2lkIFNj
cm9sbGluZ1RocmVhZDo6Y3JlYXRlVGhyZWFkSWZOZWVkZWQoKQogICAgIH0KIH0KIAotdm9pZCBT
Y3JvbGxpbmdUaHJlYWQ6OnRocmVhZENhbGxiYWNrKHZvaWQqIHNjcm9sbGluZ1RocmVhZCkKLXsK
LSAgICBXVEY6OlRocmVhZDo6c2V0Q3VycmVudFRocmVhZElzVXNlckludGVyYWN0aXZlKCk7Ci0g
ICAgc3RhdGljX2Nhc3Q8U2Nyb2xsaW5nVGhyZWFkKj4oc2Nyb2xsaW5nVGhyZWFkKS0+dGhyZWFk
Qm9keSgpOwotfQotCi12b2lkIFNjcm9sbGluZ1RocmVhZDo6dGhyZWFkQm9keSgpCi17Ci0gICAg
aW5pdGlhbGl6ZVJ1bkxvb3AoKTsKLX0KLQogdm9pZCBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNo
RnVuY3Rpb25zRnJvbVNjcm9sbGluZ1RocmVhZCgpCiB7CiAgICAgQVNTRVJUKGlzQ3VycmVudFRo
cmVhZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhy
ZWFkLmgKaW5kZXggZDg4OTJmMDViZTY0MzdkNGFhY2MwYTc1MWE3Y2E3ZTkzYmVlMGRmYy4uN2U4
MWQwODdkOTRkN2E0ZWJjNzdlMTVlMTA5YjE3ODM4M2Q4N2Q0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmgKQEAgLTYxLDggKzYxLDYgQEAg
Y2xhc3MgU2Nyb2xsaW5nVGhyZWFkIHsKICAgICBzdGF0aWMgU2Nyb2xsaW5nVGhyZWFkJiBzaW5n
bGV0b24oKTsKIAogICAgIHZvaWQgY3JlYXRlVGhyZWFkSWZOZWVkZWQoKTsKLSAgICBzdGF0aWMg
dm9pZCB0aHJlYWRDYWxsYmFjayh2b2lkKiBzY3JvbGxpbmdUaHJlYWQpOwotICAgIHZvaWQgdGhy
ZWFkQm9keSgpOwogICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlvbnNGcm9tU2Nyb2xsaW5nVGhyZWFk
KCk7CiAKICAgICB2b2lkIGluaXRpYWxpemVSdW5Mb29wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcAppbmRleCBlNTc0ZWE4
ZjdiOGEyN2I0OGVmNzMwOTMxNjk3ZTlhZGVkYzhjMWRhLi5mNDViZTg0N2NlNzEwZGNlZGEyZTBl
YzEwNmI3NWJmMjY4NTc4OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKQEAgLTgwLDE0ICs4MCw2IEBAIEhSVEZEYXRh
YmFzZUxvYWRlcjo6fkhSVEZEYXRhYmFzZUxvYWRlcigpCiAgICAgbG9hZGVyTWFwKCkucmVtb3Zl
KG1fZGF0YWJhc2VTYW1wbGVSYXRlKTsKIH0KIAotLy8gQXN5bmNocm9ub3VzbHkgbG9hZCB0aGUg
ZGF0YWJhc2UgaW4gdGhpcyB0aHJlYWQuCi1zdGF0aWMgdm9pZCBkYXRhYmFzZUxvYWRlckVudHJ5
KHZvaWQqIHRocmVhZERhdGEpCi17Ci0gICAgSFJURkRhdGFiYXNlTG9hZGVyKiBsb2FkZXIgPSBy
ZWludGVycHJldF9jYXN0PEhSVEZEYXRhYmFzZUxvYWRlcio+KHRocmVhZERhdGEpOwotICAgIEFT
U0VSVChsb2FkZXIpOwotICAgIGxvYWRlci0+bG9hZCgpOwotfQotCiB2b2lkIEhSVEZEYXRhYmFz
ZUxvYWRlcjo6bG9hZCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CkBAIC0xMDUs
NyArOTcsOSBAQCB2b2lkIEhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KCkK
ICAgICAKICAgICBpZiAoIW1faHJ0ZkRhdGFiYXNlLmdldCgpICYmICFtX2RhdGFiYXNlTG9hZGVy
VGhyZWFkKSB7CiAgICAgICAgIC8vIFN0YXJ0IHRoZSBhc3luY2hyb25vdXMgZGF0YWJhc2UgbG9h
ZGluZyBwcm9jZXNzLgotICAgICAgICBtX2RhdGFiYXNlTG9hZGVyVGhyZWFkID0gVGhyZWFkOjpj
cmVhdGUoZGF0YWJhc2VMb2FkZXJFbnRyeSwgdGhpcywgIkhSVEYgZGF0YWJhc2UgbG9hZGVyIik7
CisgICAgICAgIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSFJURiBk
YXRhYmFzZSBsb2FkZXIiLCBbdGhpc10geworICAgICAgICAgICAgbG9hZCgpOworICAgICAgICB9
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L0hSVEZEYXRhYmFzZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJU
RkRhdGFiYXNlTG9hZGVyLmgKaW5kZXggZDBiZThlNzRmYTM2OGY0OGM0NzQxOTRiMTA5NTNkYjFl
OGIzNWU2YS4uMWZmNDk2MmEyNjQ2MjQ5Y2FlYmE5OWY0Yzc3ZmM2ZDQzM2IwMzRkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmgK
QEAgLTYxLDkgKzYxLDYgQEAgY2xhc3MgSFJURkRhdGFiYXNlTG9hZGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8SFJURkRhdGFiYXNlTG9hZGVyPiB7CiAKICAgICBmbG9hdCBkYXRhYmFzZVNhbXBsZVJh
dGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGFiYXNlU2FtcGxlUmF0ZTsgfQogICAgIAotICAgIC8v
IENhbGxlZCBpbiBhc3luY2hyb25vdXMgbG9hZGluZyB0aHJlYWQuCi0gICAgdm9pZCBsb2FkKCk7
Ci0KIHByaXZhdGU6CiAgICAgLy8gQm90aCBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBtdXN0
IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KICAgICBleHBsaWNpdCBIUlRGRGF0YWJh
c2VMb2FkZXIoZmxvYXQgc2FtcGxlUmF0ZSk7CkBAIC03Miw2ICs2OSw5IEBAIGNsYXNzIEhSVEZE
YXRhYmFzZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEhSVEZEYXRhYmFzZUxvYWRlcj4gewog
ICAgIC8vIFRoaXMgbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQuCiAgICAgdm9p
ZCBsb2FkQXN5bmNocm9ub3VzbHkoKTsKIAorICAgIC8vIENhbGxlZCBpbiBhc3luY2hyb25vdXMg
bG9hZGluZyB0aHJlYWQuCisgICAgdm9pZCBsb2FkKCk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
SFJURkRhdGFiYXNlPiBtX2hydGZEYXRhYmFzZTsKIAogICAgIC8vIEhvbGRpbmcgYSBtX3RocmVh
ZExvY2sgaXMgcmVxdWlyZWQgd2hlbiBhY2Nlc3NpbmcgbV9kYXRhYmFzZUxvYWRlclRocmVhZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3Bw
CmluZGV4IDIxYmU5OTZlZjM3ZTUzZGI3MDMxMDAxOTYyN2MwYzQwZDJiMjEwZGYuLjBlNzQ2NjE4
NTg4Y2U4ODQ5YTdkM2RhMWIxYTAwZDM0M2M1MjM3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcApAQCAtNTQsMTIgKzU0LDYgQEAg
Y29uc3Qgc2l6ZV90IFJlYWx0aW1lRnJhbWVMaW1pdCA9IDgxOTIgICsgNDA5NjsgLy8gfjI3OG1z
ZWMgQCA0NC4xS0h6CiBjb25zdCBzaXplX3QgTWluRkZUU2l6ZSA9IDEyODsKIGNvbnN0IHNpemVf
dCBNYXhSZWFsdGltZUZGVFNpemUgPSAyMDQ4OwogCi1zdGF0aWMgdm9pZCBiYWNrZ3JvdW5kVGhy
ZWFkRW50cnkodm9pZCogdGhyZWFkRGF0YSkKLXsKLSAgICBSZXZlcmJDb252b2x2ZXIqIHJldmVy
YkNvbnZvbHZlciA9IHN0YXRpY19jYXN0PFJldmVyYkNvbnZvbHZlcio+KHRocmVhZERhdGEpOwot
ICAgIHJldmVyYkNvbnZvbHZlci0+YmFja2dyb3VuZFRocmVhZEVudHJ5KCk7Ci19Ci0KIFJldmVy
YkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVyKEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3BvbnNl
LCBzaXplX3QgcmVuZGVyU2xpY2VTaXplLCBzaXplX3QgbWF4RkZUU2l6ZSwgc2l6ZV90IGNvbnZv
bHZlclJlbmRlclBoYXNlLCBib29sIHVzZUJhY2tncm91bmRUaHJlYWRzKQogICAgIDogbV9pbXB1
bHNlUmVzcG9uc2VMZW5ndGgoaW1wdWxzZVJlc3BvbnNlLT5sZW5ndGgoKSkKICAgICAsIG1fYWNj
dW11bGF0aW9uQnVmZmVyKGltcHVsc2VSZXNwb25zZS0+bGVuZ3RoKCkgKyByZW5kZXJTbGljZVNp
emUpCkBAIC0xMjksOCArMTIzLDExIEBAIFJldmVyYkNvbnZvbHZlcjo6UmV2ZXJiQ29udm9sdmVy
KEF1ZGlvQ2hhbm5lbCogaW1wdWxzZVJlc3BvbnNlLCBzaXplX3QgcmVuZGVyU2xpCiAKICAgICAv
LyBTdGFydCB1cCBiYWNrZ3JvdW5kIHRocmVhZAogICAgIC8vIEZJWE1FOiB3b3VsZCBiZSBiZXR0
ZXIgdG8gdXAgdGhlIHRocmVhZCBwcmlvcml0eSBoZXJlLiAgSXQgZG9lc24ndCBuZWVkIHRvIGJl
IHJlYWwtdGltZSwgYnV0IGhpZ2hlciB0aGFuIHRoZSBkZWZhdWx0Li4uCi0gICAgaWYgKHRoaXMt
PnVzZUJhY2tncm91bmRUaHJlYWRzKCkgJiYgbV9iYWNrZ3JvdW5kU3RhZ2VzLnNpemUoKSA+IDAp
Ci0gICAgICAgIG1fYmFja2dyb3VuZFRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKFdlYkNvcmU6OmJh
Y2tncm91bmRUaHJlYWRFbnRyeSwgdGhpcywgImNvbnZvbHV0aW9uIGJhY2tncm91bmQgdGhyZWFk
Iik7CisgICAgaWYgKHRoaXMtPnVzZUJhY2tncm91bmRUaHJlYWRzKCkgJiYgbV9iYWNrZ3JvdW5k
U3RhZ2VzLnNpemUoKSA+IDApIHsKKyAgICAgICAgbV9iYWNrZ3JvdW5kVGhyZWFkID0gVGhyZWFk
OjpjcmVhdGUoImNvbnZvbHV0aW9uIGJhY2tncm91bmQgdGhyZWFkIiwgW3RoaXNdIHsKKyAgICAg
ICAgICAgIGJhY2tncm91bmRUaHJlYWRFbnRyeSgpOworICAgICAgICB9KTsKKyAgICB9CiB9CiAK
IFJldmVyYkNvbnZvbHZlcjo6flJldmVyYkNvbnZvbHZlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oCmluZGV4IDFmY2NmOTZjOTI3MTg2ODUx
Y2E4NzdmN2RhZjUzNjdhMzI3YTcyZWIuLjhhYzZlZWM1YmEyNTY3NTc2MDJlNWNjNWNhYzAzZDgy
OTBmMzlkMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVy
YkNvbnZvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNv
bnZvbHZlci5oCkBAIC02MCwxMCArNjAsMTEgQEAgY2xhc3MgUmV2ZXJiQ29udm9sdmVyIHsKICAg
ICBSZXZlcmJJbnB1dEJ1ZmZlciogaW5wdXRCdWZmZXIoKSB7IHJldHVybiAmbV9pbnB1dEJ1ZmZl
cjsgfQogCiAgICAgYm9vbCB1c2VCYWNrZ3JvdW5kVGhyZWFkcygpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlQmFja2dyb3VuZFRocmVhZHM7IH0KLSAgICB2b2lkIGJhY2tncm91bmRUaHJlYWRFbnRyeSgp
OwogCiAgICAgc2l6ZV90IGxhdGVuY3lGcmFtZXMoKSBjb25zdDsKIHByaXZhdGU6CisgICAgdm9p
ZCBiYWNrZ3JvdW5kVGhyZWFkRW50cnkoKTsKKwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
UmV2ZXJiQ29udm9sdmVyU3RhZ2U+PiBtX3N0YWdlczsKICAgICBWZWN0b3I8c3RkOjp1bmlxdWVf
cHRyPFJldmVyYkNvbnZvbHZlclN0YWdlPj4gbV9iYWNrZ3JvdW5kU3RhZ2VzOwogICAgIHNpemVf
dCBtX2ltcHVsc2VSZXNwb25zZUxlbmd0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAppbmRleCBmZmJmZGE5Yjg5MzQ4
MzU0OTBjOWE0MGJhMWY0ODMzNmU0NzYwYzhiLi5mMDgzMjdmZWQ3MjA0MGU4YTQ4MTNhMmMzNWEz
ZmM1YTQzMjRhMzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCkBAIC00OCwyOCArNDgsNiBAQCBzdGF0aWMgdm9p
ZCBlbXB0eVBlcmZvcm0odm9pZCopCiB7CiB9CiAKLXN0YXRpYyB2b2lkIHJ1bkxvYWRlclRocmVh
ZCh2b2lkKikKLXsKLSAgICB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNMb2NrPiBs
b2NrKGxvYWRlclJ1bkxvb3BNdXRleCk7Ci0KLSAgICAgICAgbG9hZGVyUnVuTG9vcE9iamVjdCA9
IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKLQotICAgICAgICAvLyBNdXN0IGFkZCBhIHNvdXJjZSB0
byB0aGUgcnVuIGxvb3AgdG8gcHJldmVudCBDRlJ1bkxvb3BSdW4oKSBmcm9tIGV4aXRpbmcuCi0g
ICAgICAgIENGUnVuTG9vcFNvdXJjZUNvbnRleHQgY3R4dCA9IHswLCAodm9pZCopMSAvKm11c3Qg
YmUgbm9uLW51bGwqLywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtfTsKLSAgICAg
ICAgQ0ZSdW5Mb29wU291cmNlUmVmIGJvZ3VzU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRl
KDAsIDAsICZjdHh0KTsKLSAgICAgICAgQ0ZSdW5Mb29wQWRkU291cmNlKGxvYWRlclJ1bkxvb3BP
YmplY3QsIGJvZ3VzU291cmNlLCBrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUpOwotCi0gICAgICAgIGxv
YWRlclJ1bkxvb3BDb25kaXRpb25WYXJpYWJsZS5ub3RpZnlPbmUoKTsKLSAgICB9Ci0KLSAgICBT
SW50MzIgcmVzdWx0OwotICAgIGRvIHsKLSAgICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7Ci0g
ICAgICAgIHJlc3VsdCA9IENGUnVuTG9vcFJ1bkluTW9kZShrQ0ZSdW5Mb29wRGVmYXVsdE1vZGUs
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCksIHRydWUpOwotICAgIH0gd2hpbGUg
KHJlc3VsdCAhPSBrQ0ZSdW5Mb29wUnVuU3RvcHBlZCAmJiByZXN1bHQgIT0ga0NGUnVuTG9vcFJ1
bkZpbmlzaGVkKTsKLX0KLQogQ0ZSdW5Mb29wUmVmIGxvYWRlclJ1bkxvb3AoKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC03Nyw3ICs1NSwyNiBAQCBDRlJ1bkxvb3BSZWYgbG9h
ZGVyUnVuTG9vcCgpCiAgICAgc3RkOjp1bmlxdWVfbG9jazxTdGF0aWNMb2NrPiBsb2NrKGxvYWRl
clJ1bkxvb3BNdXRleCk7CiAKICAgICBpZiAoIWxvYWRlclJ1bkxvb3BPYmplY3QpIHsKLSAgICAg
ICAgVGhyZWFkOjpjcmVhdGUocnVuTG9hZGVyVGhyZWFkLCAwLCAiV2ViQ29yZTogQ0ZOZXR3b3Jr
IExvYWRlciIpOworICAgICAgICBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTogQ0ZOZXR3b3JrIExv
YWRlciIsIFtdIHsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8U3RhdGljTG9jaz4gbG9jayhsb2FkZXJSdW5Mb29wTXV0ZXgpOworCisgICAgICAgICAgICAg
ICAgbG9hZGVyUnVuTG9vcE9iamVjdCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKKworICAgICAg
ICAgICAgICAgIC8vIE11c3QgYWRkIGEgc291cmNlIHRvIHRoZSBydW4gbG9vcCB0byBwcmV2ZW50
IENGUnVuTG9vcFJ1bigpIGZyb20gZXhpdGluZy4KKyAgICAgICAgICAgICAgICBDRlJ1bkxvb3BT
b3VyY2VDb250ZXh0IGN0eHQgPSB7MCwgKHZvaWQqKTEgLyptdXN0IGJlIG5vbi1udWxsKi8sIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIGVtcHR5UGVyZm9ybX07CisgICAgICAgICAgICAgICAgQ0ZSdW5M
b29wU291cmNlUmVmIGJvZ3VzU291cmNlID0gQ0ZSdW5Mb29wU291cmNlQ3JlYXRlKDAsIDAsICZj
dHh0KTsKKyAgICAgICAgICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UobG9hZGVyUnVuTG9vcE9i
amVjdCwgYm9ndXNTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7CisKKyAgICAgICAgICAg
ICAgICBsb2FkZXJSdW5Mb29wQ29uZGl0aW9uVmFyaWFibGUubm90aWZ5T25lKCk7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIFNJbnQzMiByZXN1bHQ7CisgICAgICAgICAgICBkbyB7Cisg
ICAgICAgICAgICAgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CisgICAgICAgICAgICAgICAgcmVz
dWx0ID0gQ0ZSdW5Mb29wUnVuSW5Nb2RlKGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjptYXgoKSwgdHJ1ZSk7CisgICAgICAgICAgICB9IHdoaWxlIChy
ZXN1bHQgIT0ga0NGUnVuTG9vcFJ1blN0b3BwZWQgJiYgcmVzdWx0ICE9IGtDRlJ1bkxvb3BSdW5G
aW5pc2hlZCk7CisgICAgICAgIH0pOwogCiAgICAgICAgIGxvYWRlclJ1bkxvb3BDb25kaXRpb25W
YXJpYWJsZS53YWl0KGxvY2ssIFtdIHsgcmV0dXJuIGxvYWRlclJ1bkxvb3BPYmplY3Q7IH0pOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE1hbmFnZXIuY3BwCmluZGV4IDhmMmVlZjY1MmNmZjlhOWFjNTE1ZjE1MjgwNjFlNDE4M2IzNTI2
YTAuLjA1OWZmZTI2ODc3Y2I5NmM4YmNiNDgyMThjNTJkNWVjZDEyODk4MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNYW5hZ2VyLmNwcApA
QCAtMTA5LDcgKzEwOSw5IEBAIHZvaWQgQ3VybE1hbmFnZXI6OnN0YXJ0VGhyZWFkSWZOZWVkZWQo
KQogICAgICAgICBpZiAobV90aHJlYWQpCiAgICAgICAgICAgICBtX3RocmVhZC0+d2FpdEZvckNv
bXBsZXRpb24oKTsKICAgICAgICAgc2V0UnVuVGhyZWFkKHRydWUpOwotICAgICAgICBtX3RocmVh
ZCA9IFRocmVhZDo6Y3JlYXRlKHdvcmtlclRocmVhZCwgdGhpcywgImN1cmxUaHJlYWQiKTsKKyAg
ICAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiY3VybFRocmVhZCIsIFt0aGlzXSB7Cisg
ICAgICAgICAgICB3b3JrZXJUaHJlYWQoKTsKKyAgICAgICAgfSk7CiAgICAgfQogfQogCkBAIC0x
NzYsMTUgKzE3OCwxMyBAQCBib29sIEN1cmxNYW5hZ2VyOjpyZW1vdmVGcm9tQ3VybChDVVJMKiBj
dXJsSGFuZGxlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDdXJsTWFuYWdlcjo6d29y
a2VyVGhyZWFkKHZvaWQqIGRhdGEpCit2b2lkIEN1cmxNYW5hZ2VyOjp3b3JrZXJUaHJlYWQoKQog
ewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgQ3VybE1hbmFnZXIqIG1hbmFn
ZXIgPSByZWludGVycHJldF9jYXN0PEN1cmxNYW5hZ2VyKj4oZGF0YSk7CisgICAgd2hpbGUgKHJ1
blRocmVhZCgpKSB7CiAKLSAgICB3aGlsZSAobWFuYWdlci0+cnVuVGhyZWFkKCkpIHsKLQotICAg
ICAgICBtYW5hZ2VyLT51cGRhdGVIYW5kbGVMaXN0KCk7CisgICAgICAgIHVwZGF0ZUhhbmRsZUxp
c3QoKTsKIAogICAgICAgICAvLyBSZXRyeSAnc2VsZWN0JyBpZiBpdCB3YXMgaW50ZXJydXB0ZWQg
YnkgYSBwcm9jZXNzIHNpZ25hbC4KICAgICAgICAgaW50IHJjID0gMDsKQEAgLTIwNCw3ICsyMDQs
NyBAQCB2b2lkIEN1cmxNYW5hZ2VyOjp3b3JrZXJUaHJlYWQodm9pZCogZGF0YSkKICAgICAgICAg
ICAgIEZEX1pFUk8oJmZkcmVhZCk7CiAgICAgICAgICAgICBGRF9aRVJPKCZmZHdyaXRlKTsKICAg
ICAgICAgICAgIEZEX1pFUk8oJmZkZXhjZXApOwotICAgICAgICAgICAgY3VybF9tdWx0aV9mZHNl
dChtYW5hZ2VyLT5nZXRNdWx0aUhhbmRsZSgpLCAmZmRyZWFkLCAmZmR3cml0ZSwgJmZkZXhjZXAs
ICZtYXhmZCk7CisgICAgICAgICAgICBjdXJsX211bHRpX2Zkc2V0KGdldE11bHRpSGFuZGxlKCks
ICZmZHJlYWQsICZmZHdyaXRlLCAmZmRleGNlcCwgJm1heGZkKTsKICAgICAgICAgICAgIC8vIFdo
ZW4gdGhlIDMgZmlsZSBkZXNjcmlwdG9ycyBhcmUgZW1wdHksIHdpbnNvY2sgd2lsbCByZXR1cm4g
LTEKICAgICAgICAgICAgIC8vIGFuZCBiYWlsIG91dCwgc3RvcHBpbmcgdGhlIGZpbGUgZG93bmxv
YWQuIFNvIG1ha2Ugc3VyZSB3ZQogICAgICAgICAgICAgLy8gaGF2ZSB2YWxpZCBmaWxlIGRlc2Ny
aXB0b3JzIGJlZm9yZSBjYWxsaW5nIHNlbGVjdC4KQEAgLTIxMywxMCArMjEzLDEwIEBAIHZvaWQg
Q3VybE1hbmFnZXI6OndvcmtlclRocmVhZCh2b2lkKiBkYXRhKQogICAgICAgICB9IHdoaWxlIChy
YyA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUik7CiAKICAgICAgICAgaW50IGFjdGl2ZUNvdW50ID0g
MDsKLSAgICAgICAgd2hpbGUgKGN1cmxfbXVsdGlfcGVyZm9ybShtYW5hZ2VyLT5nZXRNdWx0aUhh
bmRsZSgpLCAmYWN0aXZlQ291bnQpID09IENVUkxNX0NBTExfTVVMVElfUEVSRk9STSkgeyB9Cisg
ICAgICAgIHdoaWxlIChjdXJsX211bHRpX3BlcmZvcm0oZ2V0TXVsdGlIYW5kbGUoKSwgJmFjdGl2
ZUNvdW50KSA9PSBDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk0pIHsgfQogCiAgICAgICAgIGludCBt
ZXNzYWdlc0luUXVldWUgPSAwOwotICAgICAgICBDVVJMTXNnKiBtc2cgPSBjdXJsX211bHRpX2lu
Zm9fcmVhZChtYW5hZ2VyLT5nZXRNdWx0aUhhbmRsZSgpLCAmbWVzc2FnZXNJblF1ZXVlKTsKKyAg
ICAgICAgQ1VSTE1zZyogbXNnID0gY3VybF9tdWx0aV9pbmZvX3JlYWQoZ2V0TXVsdGlIYW5kbGUo
KSwgJm1lc3NhZ2VzSW5RdWV1ZSk7CiAKICAgICAgICAgaWYgKCFtc2cpCiAgICAgICAgICAgICBj
b250aW51ZTsKQEAgLTIzMCw5ICsyMzAsOSBAQCB2b2lkIEN1cmxNYW5hZ2VyOjp3b3JrZXJUaHJl
YWQodm9pZCogZGF0YSkKICAgICAgICAgQ3VybEpvYkFjdGlvbiBhY3Rpb24gPSBqb2ItPmhhbmRs
ZUN1cmxNc2cobXNnKTsKIAogICAgICAgICBpZiAoYWN0aW9uID09IEN1cmxKb2JBY3Rpb246OkZp
bmlzaGVkKQotICAgICAgICAgICAgbWFuYWdlci0+cmVtb3ZlRnJvbUN1cmwobXNnLT5lYXN5X2hh
bmRsZSk7CisgICAgICAgICAgICByZW1vdmVGcm9tQ3VybChtc2ctPmVhc3lfaGFuZGxlKTsKIAot
ICAgICAgICBtYW5hZ2VyLT5zdG9wVGhyZWFkSWZJZGxlKCk7CisgICAgICAgIHN0b3BUaHJlYWRJ
ZklkbGUoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxNYW5hZ2VyLmgKaW5kZXggOTUyM2Q0Y2Q0M2JiOTE4YmY3MzJmM2ExNTE1
Y2I2ODE2YTU3MWZiYS4uNTQ4MmVjMTZlZmZkNjI1NGQyODJkOWFmMGZmODEzODdhODllMTIyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNYW5h
Z2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNYW5h
Z2VyLmgKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgQ3VybE1hbmFnZXIgewogICAgIGJvb2wgYWRk
VG9DdXJsKENVUkwqIGN1cmxIYW5kbGUpOwogICAgIGJvb2wgcmVtb3ZlRnJvbUN1cmwoQ1VSTCog
Y3VybEhhbmRsZSk7CiAKLSAgICBzdGF0aWMgdm9pZCB3b3JrZXJUaHJlYWQodm9pZCogZGF0YSk7
CisgICAgdm9pZCB3b3JrZXJUaHJlYWQoKTsKIAogICAgIFJlZlB0cjxUaHJlYWQ+IG1fdGhyZWFk
OwogICAgIENVUkxNKiBtX2N1cmxNdWx0aUhhbmRsZSB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyVGhyZWFkLmNwcAppbmRleCAzNWEyMzgyY2Q1ZDk3YjA0YzYwMWRkNzFi
MzY5OTI5NDcxYzBmNzVmLi40MjVjOTI0OGQ4NzA0ODI3YmIwZTAzODIxYTJhZThkYzhhYWMwZDcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCkBAIC0xMzgsMTYgKzEz
OCwxMyBAQCBib29sIFdvcmtlclRocmVhZDo6c3RhcnQoKQogICAgIGlmIChtX3RocmVhZCkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKFdvcmtl
clRocmVhZDo6d29ya2VyVGhyZWFkU3RhcnQsIHRoaXMsICJXZWJDb3JlOiBXb3JrZXIiKTsKKyAg
ICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJXZWJDb3JlOiBXb3JrZXIiLCBbdGhpc10gewor
ICAgICAgICB3b3JrZXJUaHJlYWQoKTsKKyAgICB9KTsKIAogICAgIHJldHVybiBtX3RocmVhZDsK
IH0KIAotdm9pZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZFN0YXJ0KHZvaWQqIHRocmVhZCkK
LXsKLSAgICBzdGF0aWNfY2FzdDxXb3JrZXJUaHJlYWQqPih0aHJlYWQpLT53b3JrZXJUaHJlYWQo
KTsKLX0KLQogdm9pZCBXb3JrZXJUaHJlYWQ6OndvcmtlclRocmVhZCgpCiB7CiAgICAgLy8gUHJv
cGFnYXRlIHRoZSBtYWluVGhyZWFkJ3MgZmVudiB0byB3b3JrZXJzLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyVGhyZWFkLmgKaW5kZXggMjlmNGQ5ODcyNmJlZjcxZDUwNGZjMWVlMjliNmIwMTYz
ZGUxOGVkMy4uMjI5MDhhODVmYzc0NjZlNTBjZjIyOTljYzI0YjFhNmFiNjYwYjk1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCkBAIC05NCw4ICs5NCw2IEBAIGNsYXNzIFdv
cmtlclRocmVhZCA6IHB1YmxpYyBSZWZDb3VudGVkPFdvcmtlclRocmVhZD4gewogICAgIFNvY2tl
dFByb3ZpZGVyKiBzb2NrZXRQcm92aWRlcigpOwogCiBwcml2YXRlOgotICAgIC8vIFN0YXRpYyBm
dW5jdGlvbiBleGVjdXRlZCBhcyB0aGUgY29yZSByb3V0aW5lIG9uIHRoZSBuZXcgdGhyZWFkLiBQ
YXNzZWQgYSBwb2ludGVyIHRvIGEgV29ya2VyVGhyZWFkIG9iamVjdC4KLSAgICBzdGF0aWMgdm9p
ZCB3b3JrZXJUaHJlYWRTdGFydCh2b2lkKik7CiAgICAgdm9pZCB3b3JrZXJUaHJlYWQoKTsKIAog
ICAgIFJlZlB0cjxUaHJlYWQ+IG1fdGhyZWFkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
dG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VU
aHJlYWQuY3BwCmluZGV4IGYzY2JlZDMxMDhiNGQxZmZhZWMyYjQwYmJlY2Y1YmM4NzYxM2Q2YjIu
LjliNTA5MDdjNGU2MjRiY2M2ZDJkMjMwYTE2ZGZlN2M1YzcxMGJmOGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAKQEAgLTUzLDE3ICs1MywxNSBAQCBTdG9yYWdlVGhy
ZWFkOjp+U3RvcmFnZVRocmVhZCgpCiBib29sIFN0b3JhZ2VUaHJlYWQ6OnN0YXJ0KCkKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghbV90aHJlYWQpCi0gICAgICAgIG1f
dGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50cnlQb2ludENh
bGxiYWNrLCB0aGlzLCAiV2ViQ29yZTogTG9jYWxTdG9yYWdlIik7CisgICAgaWYgKCFtX3RocmVh
ZCkgeworICAgICAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJXZWJDb3JlOiBMb2NhbFN0
b3JhZ2UiLCBbdGhpc10geworICAgICAgICAgICAgdGhyZWFkRW50cnlQb2ludCgpOworICAgICAg
ICB9KTsKKyAgICB9CiAgICAgYWN0aXZlU3RvcmFnZVRocmVhZHMoKS5hZGQodGhpcyk7CiAgICAg
cmV0dXJuIG1fdGhyZWFkOwogfQogCi12b2lkIFN0b3JhZ2VUaHJlYWQ6OnRocmVhZEVudHJ5UG9p
bnRDYWxsYmFjayh2b2lkKiB0aHJlYWQpCi17Ci0gICAgc3RhdGljX2Nhc3Q8U3RvcmFnZVRocmVh
ZCo+KHRocmVhZCktPnRocmVhZEVudHJ5UG9pbnQoKTsKLX0KLQogdm9pZCBTdG9yYWdlVGhyZWFk
Ojp0aHJlYWRFbnRyeVBvaW50KCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmggYi9Tb3VyY2Uv
V2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5oCmluZGV4IDhjZjFiM2Q0YWRjNWEzMDZhNzdl
Yzc3YzljMzI2NjYxNjg3YmVjNTAuLmFkZWQyMzAxNzBkYTAzNTNlMzhiNmI2ZDlmOWE3MmM1NDRh
NjczNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmgK
KysrIGIvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaApAQCAtNDksOCArNDks
NiBAQCBjbGFzcyBTdG9yYWdlVGhyZWFkIHsKICAgICBzdGF0aWMgdm9pZCByZWxlYXNlRmFzdE1h
bGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKIAogcHJpdmF0ZToKLSAgICAvLyBDYWxsZWQg
b24gYmFja2dyb3VuZCB0aHJlYWQuCi0gICAgc3RhdGljIHZvaWQgdGhyZWFkRW50cnlQb2ludENh
bGxiYWNrKHZvaWQqKTsKICAgICB2b2lkIHRocmVhZEVudHJ5UG9pbnQoKTsKIAogICAgIC8vIEJh
Y2tncm91bmQgdGhyZWFkIHBhcnQgb2YgdGhlIHRlcm1pbmF0ZSBwcm9jZWR1cmUuCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2U1MjI5N2RlNTFj
MzA4MTU5ZDViMDI2NGMyMDE1MmUwZjQ4ZjMyYS4uMGZjNTQyODE2MzAxOGQzYjNmMjk5ZmEwMmE2
ODI2ZGZiMDQ5YzgxMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA2LTI1ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtXVEZdIERyb3AgVGhyZWFkOjpjcmVhdGUo
b2Jzb2xldGUgdGhpbmdzKSBBUEkgc2luY2Ugd2UgY2FuIHVzZSBsYW1iZGEKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzgyNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvSmF2
YVNjcmlwdFRocmVhZGluZy5jcHA6CisgICAgICAgIChydW5KYXZhU2NyaXB0VGhyZWFkKToKKyAg
ICAgICAgKHN0YXJ0SmF2YVNjcmlwdFRocmVhZHMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L21hYy9EdW1wUmVuZGVyVHJlZS5tbToKKyAgICAgICAgKHJ1blRocmVhZCk6CisgICAgICAgIChy
dW5QdGhyZWFkKToKKyAgICAgICAgKHRlc3RUaHJlYWRJZGVudGlmaWVyTWFwKToKKwogMjAxNy0w
Ni0yNSAgTWljaGFlbCBDYXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxNTE5MC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0phdmFTY3JpcHRUaHJlYWRpbmcuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAKaW5kZXggNzEwZDJhNTlkYTkyOTAxNmU2MDhhNGNm
N2Q5NDZmYTg3ZmFkOTMyYy4uYzExZjJmNzU5NmFjZGZjNThmMzY5MjQ5OWM5ZDJmZWY0NWEwYzIx
MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgc3RhdGljIFRocmVhZFNldCYgamF2YVNjcmlwdFRocmVhZHMoKQogCiAv
LyBUaGlzIGZ1bmN0aW9uIGV4ZXJjaXNlcyBKU0MgaW4gYSBsb29wIHVudGlsIGphdmFTY3JpcHRU
aHJlYWRzU2hvdWxkVGVybWluYXRlCiAvLyBiZWNvbWVzIHRydWUgb3IgaXQgcHJvYmFiaWxpc3Rp
Y2FsbHkgZGVjaWRlcyB0byBzcGF3biBhIHJlcGxhY2VtZW50IHRocmVhZCBhbmQgZXhpdC4KLXZv
aWQgcnVuSmF2YVNjcmlwdFRocmVhZCh2b2lkKikKK3ZvaWQgcnVuSmF2YVNjcmlwdFRocmVhZCgp
CiB7CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHNjcmlwdCA9CiAgICAgICAgICJ2YXIg
YXJyYXkgPSBbXTsiCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBydW5KYXZhU2NyaXB0VGhyZWFk
KHZvaWQqKQogICAgICAgICBUaHJlYWQmIHRocmVhZCA9IFRocmVhZDo6Y3VycmVudCgpOwogICAg
ICAgICB0aHJlYWQuZGV0YWNoKCk7CiAgICAgICAgIGphdmFTY3JpcHRUaHJlYWRzKCkucmVtb3Zl
KCZ0aHJlYWQpOwotICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygpLmFkZChUaHJlYWQ6OmNyZWF0
ZSgmcnVuSmF2YVNjcmlwdFRocmVhZCwgMCwgMCkpOworICAgICAgICBqYXZhU2NyaXB0VGhyZWFk
cygpLmFkZChUaHJlYWQ6OmNyZWF0ZSgiSmF2YVNjcmlwdCBUaHJlYWQiLCBydW5KYXZhU2NyaXB0
VGhyZWFkKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTI4LDcgKzEyOCw3IEBAIHZv
aWQgc3RhcnRKYXZhU2NyaXB0VGhyZWFkcygpCiAgICAgTG9ja0hvbGRlciBsb2NrZXIoamF2YVNj
cmlwdFRocmVhZHNNdXRleCgpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgamF2YVNj
cmlwdFRocmVhZHNDb3VudDsgKytpKQotICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygpLmFkZChU
aHJlYWQ6OmNyZWF0ZSgmcnVuSmF2YVNjcmlwdFRocmVhZCwgMCwgMCkpOworICAgICAgICBqYXZh
U2NyaXB0VGhyZWFkcygpLmFkZChUaHJlYWQ6OmNyZWF0ZSgiSmF2YVNjcmlwdCBUaHJlYWQiLCBy
dW5KYXZhU2NyaXB0VGhyZWFkKSk7CiB9CiAKIHZvaWQgc3RvcEphdmFTY3JpcHRUaHJlYWRzKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbSBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQppbmRleCA1MjNmM2Yz
ZjE1MDA0YmNkN2U2NmFjMTVlYWE0MTJhNjZhNjk1Yjg2Li4yODBlYjdlZjhlZjU3ZmRmZjQ2Zjc1
N2NmYjBhZmQ3MjJkZGRhOTRkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
RHVtcFJlbmRlclRyZWUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5k
ZXJUcmVlLm1tCkBAIC0xMDUyLDcgKzEwNTIsNyBAQCBzdGF0aWMgdm9pZCBzZXREZWZhdWx0c1Rv
Q29uc2lzdGVudFZhbHVlc0ZvclRlc3RpbmcoKQogICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIHNldFZvbGF0aWxlRG9tYWluOnByb2Nlc3NJbnN0YW5jZURlZmF1bHRz
IGZvck5hbWU6TlNBcmd1bWVudERvbWFpbl07CiB9CiAKLXN0YXRpYyB2b2lkIHJ1blRocmVhZCh2
b2lkKiBhcmcpCitzdGF0aWMgdm9pZCBydW5UaHJlYWQoKQogewogICAgIHN0YXRpYyBUaHJlYWRJ
ZGVudGlmaWVyIHByZXZpb3VzSWQgPSAwOwogICAgIFRocmVhZElkZW50aWZpZXIgY3VycmVudElk
ID0gY3VycmVudFRocmVhZCgpOwpAQCAtMTA2MSwxMCArMTA2MSwxMCBAQCBzdGF0aWMgdm9pZCBy
dW5UaHJlYWQodm9pZCogYXJnKQogICAgIHByZXZpb3VzSWQgPSBjdXJyZW50SWQ7CiB9CiAKLXN0
YXRpYyB2b2lkKiBydW5QdGhyZWFkKHZvaWQqIGFyZykKK3N0YXRpYyB2b2lkKiBydW5QdGhyZWFk
KHZvaWQqKQogewotICAgIHJ1blRocmVhZChhcmcpOwotICAgIHJldHVybiAwOworICAgIHJ1blRo
cmVhZCgpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBzdGF0aWMgdm9pZCB0ZXN0VGhyZWFk
SWRlbnRpZmllck1hcCgpCkBAIC0xMDc5LDcgKzEwNzksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0VGhy
ZWFkSWRlbnRpZmllck1hcCgpCiAKICAgICAvLyBOb3cgY3JlYXRlIGFub3RoZXIgdGhyZWFkIHVz
aW5nIFdURi4gT24gT1NYLCBpdCB3aWxsIGhhdmUgdGhlIHNhbWUgcHRocmVhZCBoYW5kbGUKICAg
ICAvLyBidXQgc2hvdWxkIGdldCBhIGRpZmZlcmVudCBSZWZQdHI8VGhyZWFkPi4KLSAgICBUaHJl
YWQ6OmNyZWF0ZShydW5UaHJlYWQsIDAsICJEdW1wUmVuZGVyVHJlZTogdGVzdCIpOworICAgIFRo
cmVhZDo6Y3JlYXRlKCJEdW1wUmVuZGVyVHJlZTogdGVzdCIsIHJ1blRocmVhZCk7CiB9CiAKIHN0
YXRpYyB2b2lkIGFsbG9jYXRlR2xvYmFsQ29udHJvbGxlcnMoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313818</attachid>
            <date>2017-06-25 19:52:05 -0700</date>
            <delta_ts>2017-06-26 11:19:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173825-20170626115204.patch</filename>
            <type>text/plain</type>
            <size>43935</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4ODAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZTFmNmE5ZmJmYzJmNGM1NWZjNjZhNTIzZDIzYWU2NmUwZTZlMTdiLi44NmUzNjZjNWUwZTI2N2M0
NTE5ZTYyZWFlNDBmNjE2Yzg5YWU5MmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNCBAQAorMjAxNy0wNi0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV1RGXSBEcm9wIFRocmVhZDo6Y3JlYXRlKG9ic29sZXRlIHRoaW5n
cykgQVBJIHNpbmNlIHdlIGNhbiB1c2UgbGFtYmRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM4MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChzdGFydFRpbWVvdXRU
aHJlYWRJZk5lZWRlZCk6CisgICAgICAgICh0aW1lb3V0VGhyZWFkTWFpbik6IERlbGV0ZWQuCisK
IDIwMTctMDYtMjUgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAg
ICAgICAgIFJlbW92ZSBleGNlc3NpdmUgaGVhZGVycyBmcm9tIEphdmFTY3JpcHRDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IDdkN2VmYmJiNzIwNGE1YTVkNDUzYTU1MDU5NzIxNGRlNDBjODdjZTUuLjMwNTcxYWFhOGZmOTUw
MDZmMDg0ZTA1YjA5YzkyN2UwMDExNGEyY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjYgQEAKIDIwMTctMDYt
MjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKKyAgICAgICAgW1dU
Rl0gRHJvcCBUaHJlYWQ6OmNyZWF0ZShvYnNvbGV0ZSB0aGluZ3MpIEFQSSBzaW5jZSB3ZSBjYW4g
dXNlIGxhbWJkYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTczODI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhyZWFkOjpjcmVhdGUoVGhyZWFkRnVuY3Rpb24sIHZvaWQqIGRhdGEsIGNvbnN0IGNoYXIq
IG5hbWUpIGlzIGEgYml0IG9sZCBBUEkuCisgICAgICAgIFNpbmNlIHdlIGhhdmUgQysrIGxhbWJk
YSwgdGhlIGFib3ZlIEFQSSBpcyBzaW1wbHkgdW5uZWNlc3NhcnkuIEFuZCBDKysgbGFtYmRhCisg
ICAgICAgIGJhc2VkIG9uZSBpcyBiZXR0ZXIgc2luY2UgdGhlIGFib3ZlIEFQSSBuZWVkcyBjYXN0
aW5nIGRhdGEgdG8gYW5kIGZyb20gdm9pZCouCisKKyAgICAgICAgKiB3dGYvRnVuY3Rpb24uaDoK
KyAgICAgICAgQXZvaWQgYW1iaWd1aXR5LgorICAgICAgICAqIHd0Zi9QYXJhbGxlbEpvYnNHZW5l
cmljLmNwcDoKKyAgICAgICAgKFdURjo6UGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0
ZTo6dHJ5TG9ja0Zvcik6CisgICAgICAgIChXVEY6OlBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVh
ZFByaXZhdGU6OndvcmtlclRocmVhZCk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL1BhcmFsbGVs
Sm9ic0dlbmVyaWMuaDoKKyAgICAgICAgKiB3dGYvVGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKiB3
dGYvVGhyZWFkaW5nV2luLmNwcDoKKyAgICAgICAgKFdURjo6Y3JlYXRlVGhyZWFkKToKKworMjAx
Ny0wNi0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwogICAgICAg
ICBpbml0aWFsaXplVGhyZWFkaW5nKCkgW2ZpcnN0XSBjYXVzZXMgV1RGQ3Jhc2ggZHVlIHRvIG1h
eFNpbmdsZUFsbG9jYXRpb25TaXplIG5vdCBiZWluZyBpbml0aWFsaXplZAogICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNzIwCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCA0MmZkNGFiMmZjYmFlNThkMzVmMzEzMTVkN2UxNDM1NGZkZTZjNzJmLi40NGVkMjA2ZTgwOGI1
MThmNmRmYzlhNTdkMmJiMjg1MWVkNmU0M2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAK
KzIwMTctMDYtMjUgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW1dURl0gRHJvcCBUaHJlYWQ6OmNyZWF0ZShvYnNvbGV0ZSB0aGluZ3MpIEFQSSBzaW5j
ZSB3ZSBjYW4gdXNlIGxhbWJkYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTczODI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTZXJ2ZXI6
OklEQlNlcnZlcjo6SURCU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlNlcnZlcjo6SURC
U2VydmVyOjpkYXRhYmFzZVRocmVhZEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9Bc3luY0F1ZGlvRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY0F1ZGlvRGVj
b2Rlcjo6QXN5bmNBdWRpb0RlY29kZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNBdWRpb0Rl
Y29kZXI6OnRocmVhZEVudHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0FzeW5jQXVkaW9EZWNvZGVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5l
QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2ZmbGluZUF1ZGlv
RGVzdGluYXRpb25Ob2RlOjpzdGFydFJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVSZW5kZXJFbnRyeSk6IERlbGV0ZWQuCisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRhdGFiYXNlVGhyZWFkOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpE
YXRhYmFzZVRocmVhZDo6ZGF0YWJhc2VUaHJlYWRTdGFydCk6IERlbGV0ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5oOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0dDQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb2xsZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkdDQ29udHJvbGxlcjo6Z2NUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3RPbkFsdGVybmF0ZVRocmVhZEZvckRlYnVn
Z2luZyk6CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okljb25EYXRhYmFzZTo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJY29uRGF0
YWJhc2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWRTdGFydCk6IERlbGV0ZWQuCisgICAgICAgICog
bG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmg6CisgICAgICAgICogcGFnZS9SZXNvdXJjZVVzYWdl
VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VUaHJlYWQ6OmNyZWF0
ZVRocmVhZElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlVXNhZ2VUaHJlYWQ6
OnRocmVhZENhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL1Jlc291cmNlVXNhZ2VU
aHJlYWQuaDoKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVGhyZWFkOjpjcmVhdGVUaHJlYWRJZk5lZWRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUaHJlYWQ6OnRocmVhZENhbGxiYWNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RocmVhZDo6dGhyZWFkQm9keSk6IERl
bGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmg6CisgICAg
ICAgICogcGxhdGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhSVEZEYXRhYmFzZUxvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KToKKyAgICAgICAg
KFdlYkNvcmU6OmRhdGFiYXNlTG9hZGVyRW50cnkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlv
L1JldmVyYkNvbnZvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6
OlJldmVyYkNvbnZvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpiYWNrZ3JvdW5kVGhyZWFkRW50
cnkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5o
OgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjp1c2VCYWNrZ3JvdW5kVGhyZWFk
cyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6bG9hZGVyUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpydW5M
b2FkZXJUaHJlYWQpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTWFuYWdlcjo6c3RhcnRUaHJl
YWRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsTWFuYWdlcjo6d29ya2VyVGhyZWFk
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE1hbmFnZXIuaDoKKyAgICAg
ICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJU
aHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZDo6d29ya2VyVGhy
ZWFkU3RhcnQpOiBEZWxldGVkLgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyVGhyZWFkLmg6CisK
IDIwMTctMDYtMjUgIEtvbnN0YW50aW4gVG9rYXJldiAgPGFubnVsZW5AeWFuZGV4LnJ1PgogCiAg
ICAgICAgIFJlbW92ZSBleGNlc3NpdmUgaGVhZGVycyBmcm9tIFdlYkNvcmUvcGxhdGZvcm0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggN2YwZmNmZDQ1MzE2N2Y1YjVhMDU2ZGFhNjNjNmU4NzEwM2U5YWIzMy4uYjgxZjJl
MjNlODJlYmZjNzU0ZDY5YzdjZGExOTRiZTNlZWE2ZjJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAxNy0wNi0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4K
KworICAgICAgICBbV1RGXSBEcm9wIFRocmVhZDo6Y3JlYXRlKG9ic29sZXRlIHRoaW5ncykgQVBJ
IHNpbmNlIHdlIGNhbiB1c2UgbGFtYmRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzM4MjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFN0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdG9yYWdlVGhyZWFkOjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTdG9yYWdl
VGhyZWFkOjp0aHJlYWRFbnRyeVBvaW50Q2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAqIFN0
b3JhZ2UvU3RvcmFnZVRocmVhZC5oOgorCiAyMDE3LTA2LTE2ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IFZpc3VhbCBTdHVkaW8gMjAx
NyA2NC1iaXQgYnVpbGQgYWZ0ZXIgcjIxODI1OApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA2ZjE3
NmE5MWJjMjRiMTRlMDM5YTBlNWQzODA3NDViMWRhNmM4ZjU4Li5hNzFmZTc2M2FjOTRjM2RkNjMz
ZmY3NGQxZDZkNWM5MTVhODllNTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMzE3MywyMiAr
MzE3MywyMCBAQCBpbnQganNjbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpOwogc3RhdGljIGRv
dWJsZSBzX2Rlc2lyZWRUaW1lb3V0Owogc3RhdGljIGRvdWJsZSBzX3RpbWVvdXRNdWx0aXBsaWVy
ID0gMS4wOwogCi1zdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIHRpbWVvdXRUaHJl
YWRNYWluKHZvaWQqKQotewotICAgIFNlY29uZHMgdGltZW91dER1cmF0aW9uKHNfZGVzaXJlZFRp
bWVvdXQgKiBzX3RpbWVvdXRNdWx0aXBsaWVyKTsKLSAgICBzbGVlcCh0aW1lb3V0RHVyYXRpb24p
OwotICAgIGRhdGFMb2coIlRpbWVkIG91dCBhZnRlciAiLCB0aW1lb3V0RHVyYXRpb24sICIgc2Vj
b25kcyFcbiIpOwotICAgIENSQVNIKCk7Ci19Ci0KIHN0YXRpYyB2b2lkIHN0YXJ0VGltZW91dFRo
cmVhZElmTmVlZGVkKCkKIHsKICAgICBpZiAoY2hhciogdGltZW91dFN0cmluZyA9IGdldGVudigi
SlNDVEVTVF90aW1lb3V0IikpIHsKICAgICAgICAgaWYgKHNzY2FuZih0aW1lb3V0U3RyaW5nLCAi
JWxmIiwgJnNfZGVzaXJlZFRpbWVvdXQpICE9IDEpIHsKICAgICAgICAgICAgIGRhdGFMb2coIldB
Uk5JTkc6IHRpbWVvdXQgc3RyaW5nIGlzIG1hbGZvcm1lZCwgZ290ICIsIHRpbWVvdXRTdHJpbmcs
CiAgICAgICAgICAgICAgICAgIiBidXQgZXhwZWN0ZWQgYSBudW1iZXIuIE5vdCB1c2luZyBhIHRp
bWVvdXQuXG4iKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBUaHJlYWQ6OmNyZWF0ZSh0
aW1lb3V0VGhyZWFkTWFpbiwgMCwgImpzYyBUaW1lb3V0IFRocmVhZCIpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgVGhyZWFkOjpjcmVhdGUoImpzYyBUaW1lb3V0IFRocmVhZCIsIFtd
ICgpIHsKKyAgICAgICAgICAgICAgICBTZWNvbmRzIHRpbWVvdXREdXJhdGlvbihzX2Rlc2lyZWRU
aW1lb3V0ICogc190aW1lb3V0TXVsdGlwbGllcik7CisgICAgICAgICAgICAgICAgc2xlZXAodGlt
ZW91dER1cmF0aW9uKTsKKyAgICAgICAgICAgICAgICBkYXRhTG9nKCJUaW1lZCBvdXQgYWZ0ZXIg
IiwgdGltZW91dER1cmF0aW9uLCAiIHNlY29uZHMhXG4iKTsKKyAgICAgICAgICAgICAgICBDUkFT
SCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL0Z1bmN0aW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9GdW5jdGlvbi5oCmlu
ZGV4IDYwMzA0OGQzY2U0NWZiZDFiMjhhZDcxNzQ5YjBkNWVjZThhNmU5NmQuLmJkNWIwNWM0YTdl
MjliMzUyODlmYWNiYzU3YTg4MDFkMGI0MGU5ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvRnVuY3Rpb24uaApAQCAtMzgsNyArMzgs
NyBAQCBjbGFzcyBGdW5jdGlvbjxPdXQoSW4uLi4pPiB7CiAgICAgRnVuY3Rpb24oKSA9IGRlZmF1
bHQ7CiAgICAgRnVuY3Rpb24oc3RkOjpudWxscHRyX3QpIHsgfQogCi0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2FsbGFibGVUeXBlLCBjbGFzcyA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6
aXNfcnZhbHVlX3JlZmVyZW5jZTxDYWxsYWJsZVR5cGUmJj46OnZhbHVlPjo6dHlwZT4KKyAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFi
bGVfaWY8IShzdGQ6OmlzX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6dmFsdWUgJiYgc3RkOjppc19m
dW5jdGlvbjx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPENhbGxhYmxlVHlwZT46OnR5cGU+
Ojp2YWx1ZSkgJiYgc3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFs
dWU+Ojp0eXBlPgogICAgIEZ1bmN0aW9uKENhbGxhYmxlVHlwZSYmIGNhbGxhYmxlKQogICAgICAg
ICA6IG1fY2FsbGFibGVXcmFwcGVyKHN0ZDo6bWFrZV91bmlxdWU8Q2FsbGFibGVXcmFwcGVyPENh
bGxhYmxlVHlwZT4+KFdURk1vdmUoY2FsbGFibGUpKSkKICAgICB7CkBAIC01OSw3ICs1OSw3IEBA
IGNsYXNzIEZ1bmN0aW9uPE91dChJbi4uLik+IHsKIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJv
b2woKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbGFibGVXcmFwcGVyOyB9CiAKLSAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBDYWxsYWJsZVR5cGUsIGNsYXNzID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8
c3RkOjppc19ydmFsdWVfcmVmZXJlbmNlPENhbGxhYmxlVHlwZSYmPjo6dmFsdWU+Ojp0eXBlPgor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENhbGxhYmxlVHlwZSwgY2xhc3MgPSB0eXBlbmFtZSBzdGQ6
OmVuYWJsZV9pZjwhKHN0ZDo6aXNfcG9pbnRlcjxDYWxsYWJsZVR5cGU+Ojp2YWx1ZSAmJiBzdGQ6
OmlzX2Z1bmN0aW9uPHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8Q2FsbGFibGVUeXBlPjo6
dHlwZT46OnZhbHVlKSAmJiBzdGQ6OmlzX3J2YWx1ZV9yZWZlcmVuY2U8Q2FsbGFibGVUeXBlJiY+
Ojp2YWx1ZT46OnR5cGU+CiAgICAgRnVuY3Rpb24mIG9wZXJhdG9yPShDYWxsYWJsZVR5cGUmJiBj
YWxsYWJsZSkKICAgICB7CiAgICAgICAgIG1fY2FsbGFibGVXcmFwcGVyID0gc3RkOjptYWtlX3Vu
aXF1ZTxDYWxsYWJsZVdyYXBwZXI8Q2FsbGFibGVUeXBlPj4oV1RGTW92ZShjYWxsYWJsZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmNwcAppbmRleCBjY2UxMTA2ZDQ2N2I3MjA4
M2MxZWRiMjEzYWQ1OWM0NDAzMTdhNGVlLi5hYWNjN2NjYzM1NTY2ZmY2OWQzYTBjMjFiNmM2YTI5
NDM3NTVjMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmlj
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmljLmNwcApAQCAtOTMs
OCArOTMsMjIgQEAgYm9vbCBQYXJhbGxlbEVudmlyb25tZW50OjpUaHJlYWRQcml2YXRlOjp0cnlM
b2NrRm9yKFBhcmFsbGVsRW52aXJvbm1lbnQqIHBhcmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KIAotICAgIGlmICghbV90aHJlYWQpCi0gICAgICAgIG1fdGhyZWFkID0gVGhyZWFk
OjpjcmVhdGUoJlBhcmFsbGVsRW52aXJvbm1lbnQ6OlRocmVhZFByaXZhdGU6OndvcmtlclRocmVh
ZCwgdGhpcywgIlBhcmFsbGVsIHdvcmtlciIpOworICAgIGlmICghbV90aHJlYWQpIHsKKyAgICAg
ICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiUGFyYWxsZWwgd29ya2VyIiwgW3RoaXNdIHsK
KyAgICAgICAgICAgIExvY2tIb2xkZXIgbG9jayhtX211dGV4KTsKKworICAgICAgICAgICAgd2hp
bGUgKG1fdGhyZWFkKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fcnVubmluZykgeworICAgICAg
ICAgICAgICAgICAgICAoKm1fdGhyZWFkRnVuY3Rpb24pKG1fcGFyYW1ldGVycyk7CisgICAgICAg
ICAgICAgICAgICAgIG1fcnVubmluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBtX3Bh
cmVudCA9IDA7CisgICAgICAgICAgICAgICAgICAgIG1fdGhyZWFkQ29uZGl0aW9uLm5vdGlmeU9u
ZSgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1fdGhyZWFkQ29uZGl0
aW9uLndhaXQobV9tdXRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KIAog
ICAgIGlmIChtX3RocmVhZCkKICAgICAgICAgbV9wYXJlbnQgPSBwYXJlbnQ7CkBAIC0xMjEsMjIg
KzEzNSw1IEBAIHZvaWQgUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0ZTo6d2FpdEZv
ckZpbmlzaCgpCiAgICAgICAgIG1fdGhyZWFkQ29uZGl0aW9uLndhaXQobV9tdXRleCk7CiB9CiAK
LXZvaWQgUGFyYWxsZWxFbnZpcm9ubWVudDo6VGhyZWFkUHJpdmF0ZTo6d29ya2VyVGhyZWFkKHZv
aWQqIHRocmVhZERhdGEpCi17Ci0gICAgVGhyZWFkUHJpdmF0ZSogc2hhcmVkVGhyZWFkID0gcmVp
bnRlcnByZXRfY2FzdDxUaHJlYWRQcml2YXRlKj4odGhyZWFkRGF0YSk7Ci0gICAgTG9ja0hvbGRl
ciBsb2NrKHNoYXJlZFRocmVhZC0+bV9tdXRleCk7Ci0KLSAgICB3aGlsZSAoc2hhcmVkVGhyZWFk
LT5tX3RocmVhZCkgewotICAgICAgICBpZiAoc2hhcmVkVGhyZWFkLT5tX3J1bm5pbmcpIHsKLSAg
ICAgICAgICAgICgqc2hhcmVkVGhyZWFkLT5tX3RocmVhZEZ1bmN0aW9uKShzaGFyZWRUaHJlYWQt
Pm1fcGFyYW1ldGVycyk7Ci0gICAgICAgICAgICBzaGFyZWRUaHJlYWQtPm1fcnVubmluZyA9IGZh
bHNlOwotICAgICAgICAgICAgc2hhcmVkVGhyZWFkLT5tX3BhcmVudCA9IDA7Ci0gICAgICAgICAg
ICBzaGFyZWRUaHJlYWQtPm1fdGhyZWFkQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgc2hhcmVkVGhyZWFkLT5tX3RocmVhZENvbmRpdGlvbi53YWl0KHNoYXJlZFRo
cmVhZC0+bV9tdXRleCk7Ci0gICAgfQotfQotCiB9IC8vIG5hbWVzcGFjZSBXVEYKICNlbmRpZiAv
LyBFTkFCTEUoVEhSRUFESU5HX0dFTkVSSUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Q
YXJhbGxlbEpvYnNHZW5lcmljLmggYi9Tb3VyY2UvV1RGL3d0Zi9QYXJhbGxlbEpvYnNHZW5lcmlj
LmgKaW5kZXggYTIwY2FiNjFlZTc5Y2VhYmQ1NGU2Mjc3Y2ViNTdkZjY4ZTY2YTkwZC4uN2Y3MDgw
YzU0YzI4ZGFlNjQzYzJhODY2MWQzZDYyMzRhOTJkMWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvUGFyYWxsZWxKb2JzR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BhcmFsbGVs
Sm9ic0dlbmVyaWMuaApAQCAtNjQsOCArNjQsNiBAQCBjbGFzcyBQYXJhbGxlbEVudmlyb25tZW50
IHsKICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRocmVhZFByaXZhdGUoKSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCB3b3JrZXJUaHJlYWQodm9pZCopOwotCiAg
ICAgcHJpdmF0ZToKICAgICAgICAgUmVmUHRyPFRocmVhZD4gbV90aHJlYWQ7CiAgICAgICAgIGJv
b2wgbV9ydW5uaW5nIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1RocmVh
ZGluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmcuY3BwCmluZGV4IDc4OTZlOWMwNWEy
Y2VmZWY4NWM1NzVjZDk2YjQzYjczZGU3MzQ1NGIuLmRkYzI4YzJhNTRiMzJhMWE2NjRjYTNiMDk3
ZjNhYmUyZjdjODZmOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZy5jcHAK
KysrIGIvU291cmNlL1dURi93dGYvVGhyZWFkaW5nLmNwcApAQCAtMTExLDEzICsxMTEsNiBAQCBS
ZWZQdHI8VGhyZWFkPiBUaHJlYWQ6OmNyZWF0ZShjb25zdCBjaGFyKiBuYW1lLCBGdW5jdGlvbjx2
b2lkKCk+JiYgZW50cnlQb2ludCkKICAgICByZXR1cm4gVGhyZWFkOjpjcmVhdGVJbnRlcm5hbCh0
aHJlYWRFbnRyeVBvaW50LCBjb250ZXh0LCBuYW1lKTsKIH0KIAotUmVmUHRyPFRocmVhZD4gVGhy
ZWFkOjpjcmVhdGUoVGhyZWFkRnVuY3Rpb24gZW50cnlQb2ludCwgdm9pZCogZGF0YSwgY29uc3Qg
Y2hhciogbmFtZSkKLXsKLSAgICByZXR1cm4gVGhyZWFkOjpjcmVhdGUobmFtZSwgW2VudHJ5UG9p
bnQsIGRhdGFdIHsKLSAgICAgICAgZW50cnlQb2ludChkYXRhKTsKLSAgICB9KTsKLX0KLQogdm9p
ZCBUaHJlYWQ6OmRpZEV4aXQoKQogewogICAgIHN0ZDo6dW5pcXVlX2xvY2s8c3RkOjptdXRleD4g
bG9ja2VyKG1fbXV0ZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2lu
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL1RocmVhZGluZ1dpbi5jcHAKaW5kZXggNWQ1YjE2MjBjMThk
YzRjYjIwZWFhZTdlYjU5NzFiY2Y1YTlkZDYxNC4uYmQ2MTVmYjkyYzY0MmU1OGUwYmExYzU3NGNh
YzRkNzY4MWU5ZjJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVGhyZWFkaW5nV2luLmNw
cAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9UaHJlYWRpbmdXaW4uY3BwCkBAIC01MTYsNyArNTE2LDkg
QEAgRFdPUkQgYWJzb2x1dGVUaW1lVG9XYWl0VGltZW91dEludGVydmFsKGRvdWJsZSBhYnNvbHV0
ZVRpbWUpCiAvLyBSZW1vdmUgdGhpcyB3b3JrYXJvdW5kIGNvZGUgd2hlbiA8cmRhcjovL3Byb2Js
ZW0vMzE3OTMyMTM+IGlzIGZpeGVkLgogVGhyZWFkSWRlbnRpZmllciBjcmVhdGVUaHJlYWQoVGhy
ZWFkRnVuY3Rpb24gZnVuY3Rpb24sIHZvaWQqIGRhdGEsIGNvbnN0IGNoYXIqIHRocmVhZE5hbWUp
CiB7Ci0gICAgcmV0dXJuIFRocmVhZDo6Y3JlYXRlKGZ1bmN0aW9uLCBkYXRhLCB0aHJlYWROYW1l
KS0+aWQoKTsKKyAgICByZXR1cm4gVGhyZWFkOjpjcmVhdGUodGhyZWFkTmFtZSwgW2Z1bmN0aW9u
LCBkYXRhXSB7CisgICAgICAgIGZ1bmN0aW9uKGRhdGEpOworICAgIH0pLT5pZCgpOwogfQogCiBp
bnQgd2FpdEZvclRocmVhZENvbXBsZXRpb24oVGhyZWFkSWRlbnRpZmllciB0aHJlYWRJRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZl
ci5jcHAKaW5kZXggNjQ0M2RkY2E5MzQ5MGQ4YzllNmU2YjEyZDM0MjNjMGI4MzY5NGU4Ni4uNDIw
YzNhNmFkZWVjNGRlNjNhOTgyMmM5NTc4NTVhMjExNzRiMzNmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZlci5jcHAKQEAgLTU2
LDcgKzU2LDkgQEAgSURCU2VydmVyOjpJREJTZXJ2ZXIoSURCQmFja2luZ1N0b3JlVGVtcG9yYXJ5
RmlsZUhhbmRsZXImIGZpbGVIYW5kbGVyKQogICAgIDogbV9iYWNraW5nU3RvcmVUZW1wb3JhcnlG
aWxlSGFuZGxlcihmaWxlSGFuZGxlcikKIHsKICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fZGF0
YWJhc2VUaHJlYWRDcmVhdGlvbkxvY2spOwotICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUo
SURCU2VydmVyOjpkYXRhYmFzZVRocmVhZEVudHJ5LCB0aGlzLCAiSW5kZXhlZERhdGFiYXNlIFNl
cnZlciIpOworICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkluZGV4ZWREYXRhYmFzZSBT
ZXJ2ZXIiLCBbdGhpc10geworICAgICAgICBkYXRhYmFzZVJ1bkxvb3AoKTsKKyAgICB9KTsKIH0K
IAogSURCU2VydmVyOjpJREJTZXJ2ZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeVBh
dGgsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmFyeUZpbGVIYW5kbGVyJiBmaWxlSGFuZGxlcikKQEAg
LTY2LDcgKzY4LDkgQEAgSURCU2VydmVyOjpJREJTZXJ2ZXIoY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZURpcmVjdG9yeVBhdGgsIElEQkJhY2tpbmdTdG9yZVRlbXBvcmEKICAgICBMT0coSW5kZXhlZERC
LCAiSURCU2VydmVyIGNyZWF0ZWQgYXQgcGF0aCAlcyIsIGRhdGFiYXNlRGlyZWN0b3J5UGF0aC51
dGY4KCkuZGF0YSgpKTsKIAogICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9kYXRhYmFzZVRocmVh
ZENyZWF0aW9uTG9jayk7Ci0gICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShJREJTZXJ2ZXI6
OmRhdGFiYXNlVGhyZWFkRW50cnksIHRoaXMsICJJbmRleGVkRGF0YWJhc2UgU2VydmVyIik7Cisg
ICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiSW5kZXhlZERhdGFiYXNlIFNlcnZlciIsIFt0
aGlzXSB7CisgICAgICAgIGRhdGFiYXNlUnVuTG9vcCgpOworICAgIH0pOwogfQogCiB2b2lkIElE
QlNlcnZlcjo6cmVnaXN0ZXJDb25uZWN0aW9uKElEQkNvbm5lY3Rpb25Ub0NsaWVudCYgY29ubmVj
dGlvbikKQEAgLTUwMCwxMyArNTA0LDYgQEAgdm9pZCBJREJTZXJ2ZXI6OnBvc3REYXRhYmFzZVRh
c2tSZXBseShDcm9zc1RocmVhZFRhc2smJiB0YXNrKQogICAgIH0pOwogfQogCi12b2lkIElEQlNl
cnZlcjo6ZGF0YWJhc2VUaHJlYWRFbnRyeSh2b2lkKiB0aHJlYWREYXRhKQotewotICAgIEFTU0VS
VCh0aHJlYWREYXRhKTsKLSAgICBJREJTZXJ2ZXIqIHNlcnZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
SURCU2VydmVyKj4odGhyZWFkRGF0YSk7Ci0gICAgc2VydmVyLT5kYXRhYmFzZVJ1bkxvb3AoKTsK
LX0KLQogdm9pZCBJREJTZXJ2ZXI6OmRhdGFiYXNlUnVuTG9vcCgpCiB7CiAgICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvSURCU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zZXJ2ZXIvSURCU2VydmVyLmgKaW5kZXggZTQ2ZjdiNTgyMWVhMDE2YmZlMjU0ZjRkMTc3YzZl
YWFkMTUyYzJkOC4uZGIxMGQ2OWRlMTZiOTA3NWQxNDVlNGM4MTZmZjZjMjQwYjk4NWQwOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL0lEQlNlcnZl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9JREJTZXJ2
ZXIuaApAQCAtMTE4LDcgKzExOCw2IEBAIGNsYXNzIElEQlNlcnZlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPElEQlNlcnZlcj4gewogICAgIHZvaWQgcGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2Vz
Rm9yT3JpZ2lucyhjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOwogICAgIHZvaWQgZGlkUGVyZm9ybUNsb3NlQW5kRGVsZXRlRGF0YWJhc2VzKHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwogCi0gICAgc3RhdGljIHZvaWQgZGF0YWJhc2VUaHJlYWRFbnRy
eSh2b2lkKik7CiAgICAgdm9pZCBkYXRhYmFzZVJ1bkxvb3AoKTsKICAgICB2b2lkIGhhbmRsZVRh
c2tSZXBsaWVzT25NYWluVGhyZWFkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKaW5kZXggN2NmN2FmOGZlYTJlMWU2
N2Q1MjM3Yzg3MWEwMTViM2M0OTAwYTI3Yi4uMTE1MDE1NzVhNzNjZjQ2OTFiNDUyMzJjOWE3MDNh
NGFhNjkzZDFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
c3luY0F1ZGlvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKQEAgLTM5LDcgKzM5LDkgQEAgQXN5bmNBdWRpb0RlY29k
ZXI6OkFzeW5jQXVkaW9EZWNvZGVyKCkKIHsKICAgICAvLyBTdGFydCB3b3JrZXIgdGhyZWFkLgog
ICAgIExvY2tIb2xkZXIgbG9jayhtX3RocmVhZENyZWF0aW9uTXV0ZXgpOwotICAgIG1fdGhyZWFk
ID0gVGhyZWFkOjpjcmVhdGUoQXN5bmNBdWRpb0RlY29kZXI6OnRocmVhZEVudHJ5LCB0aGlzLCAi
QXVkaW8gRGVjb2RlciIpOworICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIkF1ZGlvIERl
Y29kZXIiLCBbdGhpc10geworICAgICAgICBydW5Mb29wKCk7CisgICAgfSk7CiB9CiAKIEFzeW5j
QXVkaW9EZWNvZGVyOjp+QXN5bmNBdWRpb0RlY29kZXIoKQpAQCAtNTksMTQgKzYxLDYgQEAgdm9p
ZCBBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5bmMoUmVmPEFycmF5QnVmZmVyPiYmIGF1ZGlv
RGF0YSwgZmxvYXQgc2FtcGxlUmEKICAgICBtX3F1ZXVlLmFwcGVuZChXVEZNb3ZlKGRlY29kaW5n
VGFzaykpOyAvLyBub3RlIHRoYXQgb3duZXJzaGlwIG9mIHRoZSB0YXNrIGlzIGVmZmVjdGl2ZWx5
IHRha2VuIGJ5IHRoZSBxdWV1ZS4KIH0KIAotLy8gQXN5bmNocm9ub3VzbHkgZGVjb2RlIGluIHRo
aXMgdGhyZWFkLgotdm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6dGhyZWFkRW50cnkodm9pZCogdGhy
ZWFkRGF0YSkKLXsKLSAgICBBU1NFUlQodGhyZWFkRGF0YSk7Ci0gICAgQXN5bmNBdWRpb0RlY29k
ZXIqIGRlY29kZXIgPSByZWludGVycHJldF9jYXN0PEFzeW5jQXVkaW9EZWNvZGVyKj4odGhyZWFk
RGF0YSk7Ci0gICAgZGVjb2Rlci0+cnVuTG9vcCgpOwotfQotCiB2b2lkIEFzeW5jQXVkaW9EZWNv
ZGVyOjpydW5Mb29wKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29kZXIuaAppbmRl
eCBmMTI1MTBkMTk3YzNkZjk2Y2MwNTY4NTQ2Y2JjM2ZiNDZlYWFhOGExLi40MmZjMDAyOTlhM2U4
ODhiZDQ2ZjYyOWJiNmZhODZhNjY5N2EwYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCkBAIC03NCw3ICs3NCw2IEBAIGNs
YXNzIEFzeW5jQXVkaW9EZWNvZGVyIHsKICAgICAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBtX2F1
ZGlvQnVmZmVyOwogICAgIH07CiAgICAgCi0gICAgc3RhdGljIHZvaWQgdGhyZWFkRW50cnkodm9p
ZCogdGhyZWFkRGF0YSk7CiAgICAgdm9pZCBydW5Mb29wKCk7CiAKICAgICBSZWZQdHI8VGhyZWFk
PiBtX3RocmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCAzN2I5NTg4NDA0
MWRjNDVkZjU0ODI5NGEyZjRkMTgxYzBmYThhZTkzLi5lOTk1YjA4NjU4NzA2NzlmN2E2YmY5YTIx
YWMyOGUxZGYzZTMxNDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC04Miwx
OCArODIsMTIgQEAgdm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN0YXJ0UmVuZGVy
aW5nKCkKICAgICBpZiAoIW1fc3RhcnRlZFJlbmRlcmluZykgewogICAgICAgICBtX3N0YXJ0ZWRS
ZW5kZXJpbmcgPSB0cnVlOwogICAgICAgICByZWYoKTsgLy8gU2VlIGNvcnJlc3BvbmRpbmcgZGVy
ZWYoKSBjYWxsIGluIG5vdGlmeUNvbXBsZXRlRGlzcGF0Y2goKS4KLSAgICAgICAgbV9yZW5kZXJU
aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxp
bmVSZW5kZXJFbnRyeSwgdGhpcywgIm9mZmxpbmUgcmVuZGVyZXIiKTsKKyAgICAgICAgbV9yZW5k
ZXJUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgib2ZmbGluZSByZW5kZXJlciIsIFt0aGlzXSB7Cisg
ICAgICAgICAgICBvZmZsaW5lUmVuZGVyKCk7CisgICAgICAgIH0pOwogICAgIH0KIH0KIAotLy8g
RG8gb2ZmbGluZSByZW5kZXJpbmcgaW4gdGhpcyB0aHJlYWQuCi12b2lkIE9mZmxpbmVBdWRpb0Rl
c3RpbmF0aW9uTm9kZTo6b2ZmbGluZVJlbmRlckVudHJ5KHZvaWQqIHRocmVhZERhdGEpCi17Ci0g
ICAgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKiBkZXN0aW5hdGlvbk5vZGUgPSByZWludGVy
cHJldF9jYXN0PE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSo+KHRocmVhZERhdGEpOwotICAg
IEFTU0VSVChkZXN0aW5hdGlvbk5vZGUpOwotICAgIGRlc3RpbmF0aW9uTm9kZS0+b2ZmbGluZVJl
bmRlcigpOwotfQotCiB2b2lkIE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6b2ZmbGluZVJl
bmRlcigpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlv
bk5vZGUuaAppbmRleCA1NjkwMTM4YjE2NTcwYjNmOWQyMzdmOWRkNGE4ZWEyM2Q3M2ZmYWE2Li5i
OTQ1YmVmOTFmN2NkZWJhZGE1MjFlZDA1OWViZWM0Y2M0MjViNWJlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGlu
YXRpb25Ob2RlLmgKQEAgLTY1LDcgKzY1LDYgQEAgY2xhc3MgT2ZmbGluZUF1ZGlvRGVzdGluYXRp
b25Ob2RlIDogcHVibGljIEF1ZGlvRGVzdGluYXRpb25Ob2RlIHsKICAgICAvLyBSZW5kZXJpbmcg
dGhyZWFkLgogICAgIFJlZlB0cjxUaHJlYWQ+IG1fcmVuZGVyVGhyZWFkOwogICAgIGJvb2wgbV9z
dGFydGVkUmVuZGVyaW5nOwotICAgIHN0YXRpYyB2b2lkIG9mZmxpbmVSZW5kZXJFbnRyeSh2b2lk
KiB0aHJlYWREYXRhKTsKICAgICB2b2lkIG9mZmxpbmVSZW5kZXIoKTsKICAgICAKICAgICAvLyBG
b3IgY29tcGxldGlvbiBjYWxsYmFjayBvbiBtYWluIHRocmVhZC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUaHJlYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKaW5kZXggZDcw
ODE0ZjliNTViMjQ4ZmQ2NGUxYWZmNDNlMzc2NzRmMTY5MmQ0Yi4uMTE1MjRjZGNkMmFiMzQyZmIw
OWZlNjE5YWI0NmY1NzkyM2NlNjllZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRocmVhZC5jcHAKQEAgLTYzLDcgKzYzLDkgQEAgYm9v
bCBEYXRhYmFzZVRocmVhZDo6c3RhcnQoKQogICAgIGlmIChtX3RocmVhZCkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKERhdGFiYXNlVGhyZWFk
OjpkYXRhYmFzZVRocmVhZFN0YXJ0LCB0aGlzLCAiV2ViQ29yZTogRGF0YWJhc2UiKTsKKyAgICBt
X3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJXZWJDb3JlOiBEYXRhYmFzZSIsIFt0aGlzXSB7Cisg
ICAgICAgIGRhdGFiYXNlVGhyZWFkKCk7CisgICAgfSk7CiAKICAgICByZXR1cm4gbV90aHJlYWQ7
CiB9CkBAIC04NywxMiArODksNiBAQCBib29sIERhdGFiYXNlVGhyZWFkOjp0ZXJtaW5hdGlvblJl
cXVlc3RlZChEYXRhYmFzZVRhc2tTeW5jaHJvbml6ZXIqIHRhc2tTeW5jaHJvbgogICAgIHJldHVy
biBtX3F1ZXVlLmtpbGxlZCgpOwogfQogCi12b2lkIERhdGFiYXNlVGhyZWFkOjpkYXRhYmFzZVRo
cmVhZFN0YXJ0KHZvaWQqIHZEYXRhYmFzZVRocmVhZCkKLXsKLSAgICBEYXRhYmFzZVRocmVhZCog
ZGJUaHJlYWQgPSBzdGF0aWNfY2FzdDxEYXRhYmFzZVRocmVhZCo+KHZEYXRhYmFzZVRocmVhZCk7
Ci0gICAgZGJUaHJlYWQtPmRhdGFiYXNlVGhyZWFkKCk7Ci19Ci0KIHZvaWQgRGF0YWJhc2VUaHJl
YWQ6OmRhdGFiYXNlVGhyZWFkKCkKIHsKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVGhyZWFkLmgKaW5kZXggMGU3YTAwMGI0Yjc2M2Zm
YjdhYzVlYTAwYWE5NTg3YjA3OGU2YTNjZC4uMzQwMDlkMWIyMmM0NGMyZTAzZWVjYmI3ZjQ0ZTRj
N2M4ZDdkYWQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VUaHJlYWQuaApAQCAtNjUsNyArNjUsNiBAQCBjbGFzcyBEYXRhYmFzZVRocmVh
ZCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxEYXRhYmFzZVRocmVhZD4gewogcHJpdmF0
ZToKICAgICBEYXRhYmFzZVRocmVhZCgpOwogCi0gICAgc3RhdGljIHZvaWQgZGF0YWJhc2VUaHJl
YWRTdGFydCh2b2lkKik7CiAgICAgdm9pZCBkYXRhYmFzZVRocmVhZCgpOwogCiAgICAgTG9jayBt
X3RocmVhZENyZWF0aW9uTXV0ZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9HQ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvR0NDb250
cm9sbGVyLmNwcAppbmRleCA1YWUzOTcyYzY0YzlmOWYzNDc1YTAyNmY5ZGFmYjhkNjhlNTkwMzg5
Li5iMjZmNzU3MDA5YzZlNzhhYmExMjFkMjA4MDdiMDg1MjFiZDk1ZjA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBj
b2xsZWN0KHZvaWQqKQorc3RhdGljIHZvaWQgY29sbGVjdCgpCiB7CiAgICAgSlNMb2NrSG9sZGVy
IGxvY2soY29tbW9uVk0oKSk7CiAgICAgY29tbW9uVk0oKS5oZWFwLmNvbGxlY3ROb3coQXN5bmMs
IENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CkBAIC03Niw3ICs3Niw3IEBAIHZvaWQgR0NDb250cm9s
bGVyOjpnYXJiYWdlQ29sbGVjdE9uTmV4dFJ1bkxvb3AoKQogCiB2b2lkIEdDQ29udHJvbGxlcjo6
Z2NUaW1lckZpcmVkKCkKIHsKLSAgICBjb2xsZWN0KG51bGxwdHIpOworICAgIGNvbGxlY3QoKTsK
IH0KIAogdm9pZCBHQ0NvbnRyb2xsZXI6OmdhcmJhZ2VDb2xsZWN0Tm93KCkKQEAgLTEwMSw3ICsx
MDEsNyBAQCB2b2lkIEdDQ29udHJvbGxlcjo6Z2FyYmFnZUNvbGxlY3ROb3dJZk5vdERvbmVSZWNl
bnRseSgpCiAKIHZvaWQgR0NDb250cm9sbGVyOjpnYXJiYWdlQ29sbGVjdE9uQWx0ZXJuYXRlVGhy
ZWFkRm9yRGVidWdnaW5nKGJvb2wgd2FpdFVudGlsRG9uZSkKIHsKLSAgICBSZWZQdHI8VGhyZWFk
PiB0aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShjb2xsZWN0LCAwLCAiV2ViQ29yZTogR0NDb250cm9s
bGVyIik7CisgICAgUmVmUHRyPFRocmVhZD4gdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIldlYkNv
cmU6IEdDQ29udHJvbGxlciIsICZjb2xsZWN0KTsKIAogICAgIGlmICh3YWl0VW50aWxEb25lKSB7
CiAgICAgICAgIHRocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwCmluZGV4IDQ4Zjg4YzVmZDk2NDBkZDZlYWM0M2Qx
ZTgxY2RhNzNhOGU0YjFjYmQuLjU5OGM5Mzk4ZjhlYWFiMTQxYTJkOWZkY2E0ODRjNTMzYjhlYmVi
NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25EYXRhYmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmNwcApAQCAt
MTQxLDcgKzE0MSw5IEBAIGJvb2wgSWNvbkRhdGFiYXNlOjpvcGVuKGNvbnN0IFN0cmluZyYgZGly
ZWN0b3J5LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lKQogICAgIC8vIExvY2sgaGVyZSBhcyB3ZWxs
IGFzIGZpcnN0IHRoaW5nIGluIHRoZSB0aHJlYWQgc28gdGhlIHRocmVhZCBkb2Vzbid0IGFjdHVh
bGx5IGNvbW1lbmNlIHVudGlsIHRoZSBjcmVhdGVUaHJlYWQoKSBjYWxsIAogICAgIC8vIGNvbXBs
ZXRlcyBhbmQgbV9zeW5jVGhyZWFkUnVubmluZyBpcyBwcm9wZXJseSBzZXQKICAgICBtX3N5bmNM
b2NrLmxvY2soKTsKLSAgICBtX3N5bmNUaHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShJY29uRGF0YWJh
c2U6Omljb25EYXRhYmFzZVN5bmNUaHJlYWRTdGFydCwgdGhpcywgIldlYkNvcmU6IEljb25EYXRh
YmFzZSIpOworICAgIG1fc3luY1RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJXZWJDb3JlOiBJY29u
RGF0YWJhc2UiLCBbdGhpc10geworICAgICAgICBpY29uRGF0YWJhc2VTeW5jVGhyZWFkKCk7Cisg
ICAgfSk7CiAgICAgbV9zeW5jVGhyZWFkUnVubmluZyA9IG1fc3luY1RocmVhZDsKICAgICBtX3N5
bmNMb2NrLnVubG9jaygpOwogICAgIGlmICghbV9zeW5jVGhyZWFkKQpAQCAtOTQyLDEzICs5NDQs
NiBAQCBib29sIEljb25EYXRhYmFzZTo6c2hvdWxkU3RvcFRocmVhZEFjdGl2aXR5KCkgY29uc3QK
ICAgICByZXR1cm4gbV90aHJlYWRUZXJtaW5hdGlvblJlcXVlc3RlZCB8fCBtX3JlbW92ZUljb25z
UmVxdWVzdGVkOwogfQogCi12b2lkIEljb25EYXRhYmFzZTo6aWNvbkRhdGFiYXNlU3luY1RocmVh
ZFN0YXJ0KHZvaWQqIHZJY29uRGF0YWJhc2UpCi17ICAgIAotICAgIEljb25EYXRhYmFzZSogaWNv
bkRCID0gc3RhdGljX2Nhc3Q8SWNvbkRhdGFiYXNlKj4odkljb25EYXRhYmFzZSk7Ci0gICAgCi0g
ICAgaWNvbkRCLT5pY29uRGF0YWJhc2VTeW5jVGhyZWFkKCk7Ci19Ci0KIHZvaWQgSWNvbkRhdGFi
YXNlOjppY29uRGF0YWJhc2VTeW5jVGhyZWFkKCkKIHsKICAgICAvLyBUaGUgY2FsbCB0byBjcmVh
dGUgdGhpcyB0aHJlYWQgbWlnaHQgbm90IGNvbXBsZXRlIGJlZm9yZSB0aGUgdGhyZWFkIGFjdHVh
bGx5IHN0YXJ0cywgc28gd2UgbWlnaHQgZmFpbCB0aGlzIEFTU0VSVF9JQ09OX1NZTkNfVEhSRUFE
KCkgYmVjYXVzZSB0aGUgcG9pbnRlciAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9pY29uL0ljb25EYXRhYmFzZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRh
dGFiYXNlLmgKaW5kZXggODY0MDk1NTQ3NTMzZmQ4OTBmMDNhZmU5MmJiMDZmNjA4N2VlNzM2Mi4u
MDA0MGI0MjlhZTFhMTZlYmRlZTlkMjA0MGMxN2JlMmExYmVjZDRjMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2ljb24vSWNvbkRhdGFiYXNlLmgKQEAgLTE4Miw3ICsxODIsNiBAQCBjbGFzcyBJ
Y29uRGF0YWJhc2UgZmluYWwgOiBwdWJsaWMgSWNvbkRhdGFiYXNlQmFzZSB7CiAgICAgV0VCQ09S
RV9FWFBPUlQgYm9vbCBzaG91bGRTdG9wVGhyZWFkQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAog
cHJpdmF0ZTogICAgCi0gICAgc3RhdGljIHZvaWQgaWNvbkRhdGFiYXNlU3luY1RocmVhZFN0YXJ0
KHZvaWQgKik7CiAgICAgdm9pZCBpY29uRGF0YWJhc2VTeW5jVGhyZWFkKCk7CiAgICAgCiAgICAg
Ly8gVGhlIGZvbGxvd2luZyBibG9jayBvZiBtZXRob2RzIGFyZSBjYWxsZWQgZXhjbHVzaXZlbHkg
YnkgdGhlIHN5bmMgdGhyZWFkIHRvIG1hbmFnZSBpL28gdG8gYW5kIGZyb20gdGhlIGRhdGFiYXNl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9SZXNvdXJjZVVzYWdlVGhyZWFkLmNwcAppbmRleCBlMGIy
Nzg0N2VmZjIwYzA2NDE3NjYzNDc1NTRmOTM4Nzg2OWRmZGJkLi5iYjY5NGJkZDNjOGJlOGI1NzI3
MzlkZTZlNjI0ZTkwMjhhMzQ3M2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jl
c291cmNlVXNhZ2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VV
c2FnZVRocmVhZC5jcHAKQEAgLTEwMCwxMiArMTAwLDkgQEAgdm9pZCBSZXNvdXJjZVVzYWdlVGhy
ZWFkOjpjcmVhdGVUaHJlYWRJZk5lZWRlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fdm0g
PSAmY29tbW9uVk0oKTsKLSAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKHRocmVhZENhbGxi
YWNrLCB0aGlzLCAiV2ViQ29yZTogUmVzb3VyY2VVc2FnZSIpOwotfQotCi12b2lkIFJlc291cmNl
VXNhZ2VUaHJlYWQ6OnRocmVhZENhbGxiYWNrKHZvaWQqIHJlc291cmNlVXNhZ2VUaHJlYWQpCi17
Ci0gICAgc3RhdGljX2Nhc3Q8UmVzb3VyY2VVc2FnZVRocmVhZCo+KHJlc291cmNlVXNhZ2VUaHJl
YWQpLT50aHJlYWRCb2R5KCk7CisgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29y
ZTogUmVzb3VyY2VVc2FnZSIsIFt0aGlzXSB7CisgICAgICAgIHRocmVhZEJvZHkoKTsKKyAgICB9
KTsKIH0KIAogTk9fUkVUVVJOIHZvaWQgUmVzb3VyY2VVc2FnZVRocmVhZDo6dGhyZWFkQm9keSgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Jlc291cmNlVXNhZ2VUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRocmVhZC5oCmluZGV4IDM2MTdiN2Fk
ZWMwMTkyMjIxMTMwODFhZDRiM2E4ODc1NGYxZmE1YmEuLjgyNGI2NDgzNTFkMTM1N2M3ODk0OTRm
MjQyZDM0YjlkODcwYWYwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3Vy
Y2VVc2FnZVRocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUmVzb3VyY2VVc2FnZVRo
cmVhZC5oCkBAIC01OCw3ICs1OCw2IEBAIGNsYXNzIFJlc291cmNlVXNhZ2VUaHJlYWQgewogICAg
IHZvaWQgbm90aWZ5T2JzZXJ2ZXJzKFJlc291cmNlVXNhZ2VEYXRhJiYpOwogCiAgICAgdm9pZCBj
cmVhdGVUaHJlYWRJZk5lZWRlZCgpOwotICAgIHN0YXRpYyB2b2lkIHRocmVhZENhbGxiYWNrKHZv
aWQqIHNjcm9sbGluZ1RocmVhZCk7CiAgICAgdm9pZCB0aHJlYWRCb2R5KCk7CiAgICAgdm9pZCBw
bGF0Zm9ybVRocmVhZEJvZHkoSlNDOjpWTSosIFJlc291cmNlVXNhZ2VEYXRhJik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuY3BwCmluZGV4
IDY0ZDA1MGE2ODQ4ZTgxYjU2OGRkNWI4NjUxZTRiOWZmMGRiYjc1NTEuLmQyMDRjNzYyMTBiMzM0
MDRkZjQ0YzRkYTNmY2E3YWNjZDc3YjQyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVGhyZWFkLmNwcApAQCAtODAsNyArODAsMTAgQEAgdm9pZCBT
Y3JvbGxpbmdUaHJlYWQ6OmNyZWF0ZVRocmVhZElmTmVlZGVkKCkKICAgICB7CiAgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX2luaXRpYWxpemVSdW5Mb29wTXV0ZXgpOwogCi0g
ICAgICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUodGhyZWFkQ2FsbGJhY2ssIHRoaXMsICJX
ZWJDb3JlOiBTY3JvbGxpbmciKTsKKyAgICAgICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgi
V2ViQ29yZTogU2Nyb2xsaW5nIiwgW3RoaXNdIHsKKyAgICAgICAgICAgIFdURjo6VGhyZWFkOjpz
ZXRDdXJyZW50VGhyZWFkSXNVc2VySW50ZXJhY3RpdmUoKTsKKyAgICAgICAgICAgIGluaXRpYWxp
emVSdW5Mb29wKCk7CisgICAgICAgIH0pOwogICAgICAgICAKICNpZiBQTEFURk9STShDT0NPQSkK
ICAgICAgICAgbV9pbml0aWFsaXplUnVuTG9vcENvbmRpdGlvblZhcmlhYmxlLndhaXQobG9jaywg
W3RoaXNdeyByZXR1cm4gbV90aHJlYWRSdW5Mb29wOyB9KTsKQEAgLTg4LDE3ICs5MSw2IEBAIHZv
aWQgU2Nyb2xsaW5nVGhyZWFkOjpjcmVhdGVUaHJlYWRJZk5lZWRlZCgpCiAgICAgfQogfQogCi12
b2lkIFNjcm9sbGluZ1RocmVhZDo6dGhyZWFkQ2FsbGJhY2sodm9pZCogc2Nyb2xsaW5nVGhyZWFk
KQotewotICAgIFdURjo6VGhyZWFkOjpzZXRDdXJyZW50VGhyZWFkSXNVc2VySW50ZXJhY3RpdmUo
KTsKLSAgICBzdGF0aWNfY2FzdDxTY3JvbGxpbmdUaHJlYWQqPihzY3JvbGxpbmdUaHJlYWQpLT50
aHJlYWRCb2R5KCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVGhyZWFkOjp0aHJlYWRCb2R5KCkKLXsK
LSAgICBpbml0aWFsaXplUnVuTG9vcCgpOwotfQotCiB2b2lkIFNjcm9sbGluZ1RocmVhZDo6ZGlz
cGF0Y2hGdW5jdGlvbnNGcm9tU2Nyb2xsaW5nVGhyZWFkKCkKIHsKICAgICBBU1NFUlQoaXNDdXJy
ZW50VGhyZWFkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUaHJlYWQuaAppbmRleCBkODg5MmYwNWJlNjQzN2Q0YWFjYzBhNzUxYTdjYTdlOTNiZWUwZGZj
Li43ZTgxZDA4N2Q5NGQ3YTRlYmM3N2UxNWUxMDliMTc4MzgzZDg3ZDQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUaHJlYWQuaApAQCAtNjEsOCArNjEs
NiBAQCBjbGFzcyBTY3JvbGxpbmdUaHJlYWQgewogICAgIHN0YXRpYyBTY3JvbGxpbmdUaHJlYWQm
IHNpbmdsZXRvbigpOwogCiAgICAgdm9pZCBjcmVhdGVUaHJlYWRJZk5lZWRlZCgpOwotICAgIHN0
YXRpYyB2b2lkIHRocmVhZENhbGxiYWNrKHZvaWQqIHNjcm9sbGluZ1RocmVhZCk7Ci0gICAgdm9p
ZCB0aHJlYWRCb2R5KCk7CiAgICAgdm9pZCBkaXNwYXRjaEZ1bmN0aW9uc0Zyb21TY3JvbGxpbmdU
aHJlYWQoKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVJ1bkxvb3AoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2FkZXIuY3BwCmluZGV4IGU1
NzRlYThmN2I4YTI3YjQ4ZWY3MzA5MzE2OTdlOWFkZWRjOGMxZGEuLmY0NWJlODQ3Y2U3MTBkY2Vk
YTJlMGVjMTA2Yjc1YmYyNjg1Nzg5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL0hSVEZEYXRhYmFzZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmNwcApAQCAtODAsMTQgKzgwLDYgQEAgSFJU
RkRhdGFiYXNlTG9hZGVyOjp+SFJURkRhdGFiYXNlTG9hZGVyKCkKICAgICBsb2FkZXJNYXAoKS5y
ZW1vdmUobV9kYXRhYmFzZVNhbXBsZVJhdGUpOwogfQogCi0vLyBBc3luY2hyb25vdXNseSBsb2Fk
IHRoZSBkYXRhYmFzZSBpbiB0aGlzIHRocmVhZC4KLXN0YXRpYyB2b2lkIGRhdGFiYXNlTG9hZGVy
RW50cnkodm9pZCogdGhyZWFkRGF0YSkKLXsKLSAgICBIUlRGRGF0YWJhc2VMb2FkZXIqIGxvYWRl
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8SFJURkRhdGFiYXNlTG9hZGVyKj4odGhyZWFkRGF0YSk7Ci0g
ICAgQVNTRVJUKGxvYWRlcik7Ci0gICAgbG9hZGVyLT5sb2FkKCk7Ci19Ci0KIHZvaWQgSFJURkRh
dGFiYXNlTG9hZGVyOjpsb2FkKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKQEAg
LTEwNSw3ICs5Nyw5IEBAIHZvaWQgSFJURkRhdGFiYXNlTG9hZGVyOjpsb2FkQXN5bmNocm9ub3Vz
bHkoKQogICAgIAogICAgIGlmICghbV9ocnRmRGF0YWJhc2UuZ2V0KCkgJiYgIW1fZGF0YWJhc2VM
b2FkZXJUaHJlYWQpIHsKICAgICAgICAgLy8gU3RhcnQgdGhlIGFzeW5jaHJvbm91cyBkYXRhYmFz
ZSBsb2FkaW5nIHByb2Nlc3MuCi0gICAgICAgIG1fZGF0YWJhc2VMb2FkZXJUaHJlYWQgPSBUaHJl
YWQ6OmNyZWF0ZShkYXRhYmFzZUxvYWRlckVudHJ5LCB0aGlzLCAiSFJURiBkYXRhYmFzZSBsb2Fk
ZXIiKTsKKyAgICAgICAgbV9kYXRhYmFzZUxvYWRlclRocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJI
UlRGIGRhdGFiYXNlIGxvYWRlciIsIFt0aGlzXSB7CisgICAgICAgICAgICBsb2FkKCk7CisgICAg
ICAgIH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YXVkaW8vSFJURkRhdGFiYXNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9IUlRGRGF0YWJhc2VMb2FkZXIuaAppbmRleCBkMGJlOGU3NGZhMzY4ZjQ4YzQ3NDE5NGIxMDk1
M2RiMWU4YjM1ZTZhLi4xZmY0OTYyYTI2NDYyNDljYWViYTk5ZjRjNzdmYzZkNDMzYjAzNGRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2Fk
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9IUlRGRGF0YWJhc2VMb2Fk
ZXIuaApAQCAtNjEsOSArNjEsNiBAQCBjbGFzcyBIUlRGRGF0YWJhc2VMb2FkZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxIUlRGRGF0YWJhc2VMb2FkZXI+IHsKIAogICAgIGZsb2F0IGRhdGFiYXNlU2Ft
cGxlUmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YWJhc2VTYW1wbGVSYXRlOyB9CiAgICAgCi0g
ICAgLy8gQ2FsbGVkIGluIGFzeW5jaHJvbm91cyBsb2FkaW5nIHRocmVhZC4KLSAgICB2b2lkIGxv
YWQoKTsKLQogcHJpdmF0ZToKICAgICAvLyBCb3RoIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9y
IG11c3QgYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogICAgIGV4cGxpY2l0IEhSVEZE
YXRhYmFzZUxvYWRlcihmbG9hdCBzYW1wbGVSYXRlKTsKQEAgLTcyLDYgKzY5LDkgQEAgY2xhc3Mg
SFJURkRhdGFiYXNlTG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8SFJURkRhdGFiYXNlTG9hZGVy
PiB7CiAgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZC4KICAg
ICB2b2lkIGxvYWRBc3luY2hyb25vdXNseSgpOwogCisgICAgLy8gQ2FsbGVkIGluIGFzeW5jaHJv
bm91cyBsb2FkaW5nIHRocmVhZC4KKyAgICB2b2lkIGxvYWQoKTsKKwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxIUlRGRGF0YWJhc2U+IG1faHJ0ZkRhdGFiYXNlOwogCiAgICAgLy8gSG9sZGluZyBhIG1f
dGhyZWFkTG9jayBpcyByZXF1aXJlZCB3aGVuIGFjY2Vzc2luZyBtX2RhdGFiYXNlTG9hZGVyVGhy
ZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29u
dm9sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZl
ci5jcHAKaW5kZXggMjFiZTk5NmVmMzdlNTNkYjcwMzEwMDE5NjI3YzBjNDBkMmIyMTBkZi4uMGU3
NDY2MTg1ODhjZTg4NDlhN2QzZGExYjFhMDBkMzQzYzUyMzc5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCkBAIC01NCwxMiArNTQs
NiBAQCBjb25zdCBzaXplX3QgUmVhbHRpbWVGcmFtZUxpbWl0ID0gODE5MiAgKyA0MDk2OyAvLyB+
Mjc4bXNlYyBAIDQ0LjFLSHoKIGNvbnN0IHNpemVfdCBNaW5GRlRTaXplID0gMTI4OwogY29uc3Qg
c2l6ZV90IE1heFJlYWx0aW1lRkZUU2l6ZSA9IDIwNDg7CiAKLXN0YXRpYyB2b2lkIGJhY2tncm91
bmRUaHJlYWRFbnRyeSh2b2lkKiB0aHJlYWREYXRhKQotewotICAgIFJldmVyYkNvbnZvbHZlciog
cmV2ZXJiQ29udm9sdmVyID0gc3RhdGljX2Nhc3Q8UmV2ZXJiQ29udm9sdmVyKj4odGhyZWFkRGF0
YSk7Ci0gICAgcmV2ZXJiQ29udm9sdmVyLT5iYWNrZ3JvdW5kVGhyZWFkRW50cnkoKTsKLX0KLQog
UmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252b2x2ZXIoQXVkaW9DaGFubmVsKiBpbXB1bHNlUmVz
cG9uc2UsIHNpemVfdCByZW5kZXJTbGljZVNpemUsIHNpemVfdCBtYXhGRlRTaXplLCBzaXplX3Qg
Y29udm9sdmVyUmVuZGVyUGhhc2UsIGJvb2wgdXNlQmFja2dyb3VuZFRocmVhZHMpCiAgICAgOiBt
X2ltcHVsc2VSZXNwb25zZUxlbmd0aChpbXB1bHNlUmVzcG9uc2UtPmxlbmd0aCgpKQogICAgICwg
bV9hY2N1bXVsYXRpb25CdWZmZXIoaW1wdWxzZVJlc3BvbnNlLT5sZW5ndGgoKSArIHJlbmRlclNs
aWNlU2l6ZSkKQEAgLTEyOSw4ICsxMjMsMTEgQEAgUmV2ZXJiQ29udm9sdmVyOjpSZXZlcmJDb252
b2x2ZXIoQXVkaW9DaGFubmVsKiBpbXB1bHNlUmVzcG9uc2UsIHNpemVfdCByZW5kZXJTbGkKIAog
ICAgIC8vIFN0YXJ0IHVwIGJhY2tncm91bmQgdGhyZWFkCiAgICAgLy8gRklYTUU6IHdvdWxkIGJl
IGJldHRlciB0byB1cCB0aGUgdGhyZWFkIHByaW9yaXR5IGhlcmUuICBJdCBkb2Vzbid0IG5lZWQg
dG8gYmUgcmVhbC10aW1lLCBidXQgaGlnaGVyIHRoYW4gdGhlIGRlZmF1bHQuLi4KLSAgICBpZiAo
dGhpcy0+dXNlQmFja2dyb3VuZFRocmVhZHMoKSAmJiBtX2JhY2tncm91bmRTdGFnZXMuc2l6ZSgp
ID4gMCkKLSAgICAgICAgbV9iYWNrZ3JvdW5kVGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoV2ViQ29y
ZTo6YmFja2dyb3VuZFRocmVhZEVudHJ5LCB0aGlzLCAiY29udm9sdXRpb24gYmFja2dyb3VuZCB0
aHJlYWQiKTsKKyAgICBpZiAodGhpcy0+dXNlQmFja2dyb3VuZFRocmVhZHMoKSAmJiBtX2JhY2tn
cm91bmRTdGFnZXMuc2l6ZSgpID4gMCkgeworICAgICAgICBtX2JhY2tncm91bmRUaHJlYWQgPSBU
aHJlYWQ6OmNyZWF0ZSgiY29udm9sdXRpb24gYmFja2dyb3VuZCB0aHJlYWQiLCBbdGhpc10gewor
ICAgICAgICAgICAgYmFja2dyb3VuZFRocmVhZEVudHJ5KCk7CisgICAgICAgIH0pOworICAgIH0K
IH0KIAogUmV2ZXJiQ29udm9sdmVyOjp+UmV2ZXJiQ29udm9sdmVyKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmgKaW5kZXggMWZjY2Y5NmM5Mjcx
ODY4NTFjYTg3N2Y3ZGFmNTM2N2EzMjdhNzJlYi4uOGFjNmVlYzViYTI1Njc1NzYwMmU1Y2M1Y2Fj
MDNkODI5MGYzOWQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8v
UmV2ZXJiQ29udm9sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmgKQEAgLTYwLDEwICs2MCwxMSBAQCBjbGFzcyBSZXZlcmJDb252b2x2ZXIg
ewogICAgIFJldmVyYklucHV0QnVmZmVyKiBpbnB1dEJ1ZmZlcigpIHsgcmV0dXJuICZtX2lucHV0
QnVmZmVyOyB9CiAKICAgICBib29sIHVzZUJhY2tncm91bmRUaHJlYWRzKCkgY29uc3QgeyByZXR1
cm4gbV91c2VCYWNrZ3JvdW5kVGhyZWFkczsgfQotICAgIHZvaWQgYmFja2dyb3VuZFRocmVhZEVu
dHJ5KCk7CiAKICAgICBzaXplX3QgbGF0ZW5jeUZyYW1lcygpIGNvbnN0OwogcHJpdmF0ZToKKyAg
ICB2b2lkIGJhY2tncm91bmRUaHJlYWRFbnRyeSgpOworCiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxSZXZlcmJDb252b2x2ZXJTdGFnZT4+IG1fc3RhZ2VzOwogICAgIFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8UmV2ZXJiQ29udm9sdmVyU3RhZ2U+PiBtX2JhY2tncm91bmRTdGFnZXM7CiAgICAg
c2l6ZV90IG1faW1wdWxzZVJlc3BvbnNlTGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCmluZGV4IGZmYmZkYTli
ODkzNDgzNTQ5MGM5YTQwYmExZjQ4MzM2ZTQ3NjBjOGIuLmYwODMyN2ZlZDcyMDQwZThhNDgxM2Ey
YzM1YTNmYzVhNDMyNGEzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKQEAgLTQ4LDI4ICs0OCw2IEBAIHN0YXRp
YyB2b2lkIGVtcHR5UGVyZm9ybSh2b2lkKikKIHsKIH0KIAotc3RhdGljIHZvaWQgcnVuTG9hZGVy
VGhyZWFkKHZvaWQqKQotewotICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY0xv
Y2s+IGxvY2sobG9hZGVyUnVuTG9vcE11dGV4KTsKLQotICAgICAgICBsb2FkZXJSdW5Mb29wT2Jq
ZWN0ID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwotCi0gICAgICAgIC8vIE11c3QgYWRkIGEgc291
cmNlIHRvIHRoZSBydW4gbG9vcCB0byBwcmV2ZW50IENGUnVuTG9vcFJ1bigpIGZyb20gZXhpdGlu
Zy4KLSAgICAgICAgQ0ZSdW5Mb29wU291cmNlQ29udGV4dCBjdHh0ID0gezAsICh2b2lkKikxIC8q
bXVzdCBiZSBub24tbnVsbCovLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBlbXB0eVBlcmZvcm19Owot
ICAgICAgICBDRlJ1bkxvb3BTb3VyY2VSZWYgYm9ndXNTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VD
cmVhdGUoMCwgMCwgJmN0eHQpOwotICAgICAgICBDRlJ1bkxvb3BBZGRTb3VyY2UobG9hZGVyUnVu
TG9vcE9iamVjdCwgYm9ndXNTb3VyY2UsIGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSk7Ci0KLSAgICAg
ICAgbG9hZGVyUnVuTG9vcENvbmRpdGlvblZhcmlhYmxlLm5vdGlmeU9uZSgpOwotICAgIH0KLQot
ICAgIFNJbnQzMiByZXN1bHQ7Ci0gICAgZG8gewotICAgICAgICBBdXRvZHJhaW5lZFBvb2wgcG9v
bDsKLSAgICAgICAgcmVzdWx0ID0gQ0ZSdW5Mb29wUnVuSW5Nb2RlKGtDRlJ1bkxvb3BEZWZhdWx0
TW9kZSwgc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSwgdHJ1ZSk7Ci0gICAgfSB3
aGlsZSAocmVzdWx0ICE9IGtDRlJ1bkxvb3BSdW5TdG9wcGVkICYmIHJlc3VsdCAhPSBrQ0ZSdW5M
b29wUnVuRmluaXNoZWQpOwotfQotCiBDRlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9vcCgpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKQEAgLTc3LDcgKzU1LDI2IEBAIENGUnVuTG9vcFJl
ZiBsb2FkZXJSdW5Mb29wKCkKICAgICBzdGQ6OnVuaXF1ZV9sb2NrPFN0YXRpY0xvY2s+IGxvY2so
bG9hZGVyUnVuTG9vcE11dGV4KTsKIAogICAgIGlmICghbG9hZGVyUnVuTG9vcE9iamVjdCkgewot
ICAgICAgICBUaHJlYWQ6OmNyZWF0ZShydW5Mb2FkZXJUaHJlYWQsIDAsICJXZWJDb3JlOiBDRk5l
dHdvcmsgTG9hZGVyIik7CisgICAgICAgIFRocmVhZDo6Y3JlYXRlKCJXZWJDb3JlOiBDRk5ldHdv
cmsgTG9hZGVyIiwgW10geworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHN0ZDo6bG9j
a19ndWFyZDxTdGF0aWNMb2NrPiBsb2NrKGxvYWRlclJ1bkxvb3BNdXRleCk7CisKKyAgICAgICAg
ICAgICAgICBsb2FkZXJSdW5Mb29wT2JqZWN0ID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOworCisg
ICAgICAgICAgICAgICAgLy8gTXVzdCBhZGQgYSBzb3VyY2UgdG8gdGhlIHJ1biBsb29wIHRvIHBy
ZXZlbnQgQ0ZSdW5Mb29wUnVuKCkgZnJvbSBleGl0aW5nLgorICAgICAgICAgICAgICAgIENGUnVu
TG9vcFNvdXJjZUNvbnRleHQgY3R4dCA9IHswLCAodm9pZCopMSAvKm11c3QgYmUgbm9uLW51bGwq
LywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgZW1wdHlQZXJmb3JtfTsKKyAgICAgICAgICAgICAgICBD
RlJ1bkxvb3BTb3VyY2VSZWYgYm9ndXNTb3VyY2UgPSBDRlJ1bkxvb3BTb3VyY2VDcmVhdGUoMCwg
MCwgJmN0eHQpOworICAgICAgICAgICAgICAgIENGUnVuTG9vcEFkZFNvdXJjZShsb2FkZXJSdW5M
b29wT2JqZWN0LCBib2d1c1NvdXJjZSwga0NGUnVuTG9vcERlZmF1bHRNb2RlKTsKKworICAgICAg
ICAgICAgICAgIGxvYWRlclJ1bkxvb3BDb25kaXRpb25WYXJpYWJsZS5ub3RpZnlPbmUoKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgU0ludDMyIHJlc3VsdDsKKyAgICAgICAgICAgIGRv
IHsKKyAgICAgICAgICAgICAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKKyAgICAgICAgICAgICAg
ICByZXN1bHQgPSBDRlJ1bkxvb3BSdW5Jbk1vZGUoa0NGUnVuTG9vcERlZmF1bHRNb2RlLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCgpLCB0cnVlKTsKKyAgICAgICAgICAgIH0gd2hp
bGUgKHJlc3VsdCAhPSBrQ0ZSdW5Mb29wUnVuU3RvcHBlZCAmJiByZXN1bHQgIT0ga0NGUnVuTG9v
cFJ1bkZpbmlzaGVkKTsKKyAgICAgICAgfSk7CiAKICAgICAgICAgbG9hZGVyUnVuTG9vcENvbmRp
dGlvblZhcmlhYmxlLndhaXQobG9jaywgW10geyByZXR1cm4gbG9hZGVyUnVuTG9vcE9iamVjdDsg
fSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsTWFuYWdlci5jcHAKaW5kZXggOGYyZWVmNjUyY2ZmOWE5YWM1MTVmMTUyODA2MWU0MTgz
YjM1MjZhMC4uMDU5ZmZlMjY4NzdjYjk2YzhiY2I0ODIxOGM1MmQ1ZWNkMTI4OTgxNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybE1hbmFnZXIu
Y3BwCkBAIC0xMDksNyArMTA5LDkgQEAgdm9pZCBDdXJsTWFuYWdlcjo6c3RhcnRUaHJlYWRJZk5l
ZWRlZCgpCiAgICAgICAgIGlmIChtX3RocmVhZCkKICAgICAgICAgICAgIG1fdGhyZWFkLT53YWl0
Rm9yQ29tcGxldGlvbigpOwogICAgICAgICBzZXRSdW5UaHJlYWQodHJ1ZSk7Ci0gICAgICAgIG1f
dGhyZWFkID0gVGhyZWFkOjpjcmVhdGUod29ya2VyVGhyZWFkLCB0aGlzLCAiY3VybFRocmVhZCIp
OworICAgICAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJjdXJsVGhyZWFkIiwgW3RoaXNd
IHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZCgpOworICAgICAgICB9KTsKICAgICB9CiB9CiAK
QEAgLTE3NiwxNSArMTc4LDEzIEBAIGJvb2wgQ3VybE1hbmFnZXI6OnJlbW92ZUZyb21DdXJsKENV
UkwqIGN1cmxIYW5kbGUpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIEN1cmxNYW5hZ2Vy
Ojp3b3JrZXJUaHJlYWQodm9pZCogZGF0YSkKK3ZvaWQgQ3VybE1hbmFnZXI6OndvcmtlclRocmVh
ZCgpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBDdXJsTWFuYWdlciog
bWFuYWdlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Q3VybE1hbmFnZXIqPihkYXRhKTsKKyAgICB3aGls
ZSAocnVuVGhyZWFkKCkpIHsKIAotICAgIHdoaWxlIChtYW5hZ2VyLT5ydW5UaHJlYWQoKSkgewot
Ci0gICAgICAgIG1hbmFnZXItPnVwZGF0ZUhhbmRsZUxpc3QoKTsKKyAgICAgICAgdXBkYXRlSGFu
ZGxlTGlzdCgpOwogCiAgICAgICAgIC8vIFJldHJ5ICdzZWxlY3QnIGlmIGl0IHdhcyBpbnRlcnJ1
cHRlZCBieSBhIHByb2Nlc3Mgc2lnbmFsLgogICAgICAgICBpbnQgcmMgPSAwOwpAQCAtMjA0LDcg
KzIwNCw3IEBAIHZvaWQgQ3VybE1hbmFnZXI6OndvcmtlclRocmVhZCh2b2lkKiBkYXRhKQogICAg
ICAgICAgICAgRkRfWkVSTygmZmRyZWFkKTsKICAgICAgICAgICAgIEZEX1pFUk8oJmZkd3JpdGUp
OwogICAgICAgICAgICAgRkRfWkVSTygmZmRleGNlcCk7Ci0gICAgICAgICAgICBjdXJsX211bHRp
X2Zkc2V0KG1hbmFnZXItPmdldE11bHRpSGFuZGxlKCksICZmZHJlYWQsICZmZHdyaXRlLCAmZmRl
eGNlcCwgJm1heGZkKTsKKyAgICAgICAgICAgIGN1cmxfbXVsdGlfZmRzZXQoZ2V0TXVsdGlIYW5k
bGUoKSwgJmZkcmVhZCwgJmZkd3JpdGUsICZmZGV4Y2VwLCAmbWF4ZmQpOwogICAgICAgICAgICAg
Ly8gV2hlbiB0aGUgMyBmaWxlIGRlc2NyaXB0b3JzIGFyZSBlbXB0eSwgd2luc29jayB3aWxsIHJl
dHVybiAtMQogICAgICAgICAgICAgLy8gYW5kIGJhaWwgb3V0LCBzdG9wcGluZyB0aGUgZmlsZSBk
b3dubG9hZC4gU28gbWFrZSBzdXJlIHdlCiAgICAgICAgICAgICAvLyBoYXZlIHZhbGlkIGZpbGUg
ZGVzY3JpcHRvcnMgYmVmb3JlIGNhbGxpbmcgc2VsZWN0LgpAQCAtMjEzLDEwICsyMTMsMTAgQEAg
dm9pZCBDdXJsTWFuYWdlcjo6d29ya2VyVGhyZWFkKHZvaWQqIGRhdGEpCiAgICAgICAgIH0gd2hp
bGUgKHJjID09IC0xICYmIGVycm5vID09IEVJTlRSKTsKIAogICAgICAgICBpbnQgYWN0aXZlQ291
bnQgPSAwOwotICAgICAgICB3aGlsZSAoY3VybF9tdWx0aV9wZXJmb3JtKG1hbmFnZXItPmdldE11
bHRpSGFuZGxlKCksICZhY3RpdmVDb3VudCkgPT0gQ1VSTE1fQ0FMTF9NVUxUSV9QRVJGT1JNKSB7
IH0KKyAgICAgICAgd2hpbGUgKGN1cmxfbXVsdGlfcGVyZm9ybShnZXRNdWx0aUhhbmRsZSgpLCAm
YWN0aXZlQ291bnQpID09IENVUkxNX0NBTExfTVVMVElfUEVSRk9STSkgeyB9CiAKICAgICAgICAg
aW50IG1lc3NhZ2VzSW5RdWV1ZSA9IDA7Ci0gICAgICAgIENVUkxNc2cqIG1zZyA9IGN1cmxfbXVs
dGlfaW5mb19yZWFkKG1hbmFnZXItPmdldE11bHRpSGFuZGxlKCksICZtZXNzYWdlc0luUXVldWUp
OworICAgICAgICBDVVJMTXNnKiBtc2cgPSBjdXJsX211bHRpX2luZm9fcmVhZChnZXRNdWx0aUhh
bmRsZSgpLCAmbWVzc2FnZXNJblF1ZXVlKTsKIAogICAgICAgICBpZiAoIW1zZykKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtMjMwLDkgKzIzMCw5IEBAIHZvaWQgQ3VybE1hbmFnZXI6Ondvcmtl
clRocmVhZCh2b2lkKiBkYXRhKQogICAgICAgICBDdXJsSm9iQWN0aW9uIGFjdGlvbiA9IGpvYi0+
aGFuZGxlQ3VybE1zZyhtc2cpOwogCiAgICAgICAgIGlmIChhY3Rpb24gPT0gQ3VybEpvYkFjdGlv
bjo6RmluaXNoZWQpCi0gICAgICAgICAgICBtYW5hZ2VyLT5yZW1vdmVGcm9tQ3VybChtc2ctPmVh
c3lfaGFuZGxlKTsKKyAgICAgICAgICAgIHJlbW92ZUZyb21DdXJsKG1zZy0+ZWFzeV9oYW5kbGUp
OwogCi0gICAgICAgIG1hbmFnZXItPnN0b3BUaHJlYWRJZklkbGUoKTsKKyAgICAgICAgc3RvcFRo
cmVhZElmSWRsZSgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9jdXJsL0N1cmxNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybE1hbmFnZXIuaAppbmRleCA5NTIzZDRjZDQzYmI5MThiZjczMmYz
YTE1MTVjYjY4MTZhNTcxZmJhLi41NDgyZWMxNmVmZmQ2MjU0ZDI4MmQ5YWYwZmY4MTM4N2E4OWUx
MjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bE1hbmFnZXIuaApAQCAtODQsNyArODQsNyBAQCBjbGFzcyBDdXJsTWFuYWdlciB7CiAgICAgYm9v
bCBhZGRUb0N1cmwoQ1VSTCogY3VybEhhbmRsZSk7CiAgICAgYm9vbCByZW1vdmVGcm9tQ3VybChD
VVJMKiBjdXJsSGFuZGxlKTsKIAotICAgIHN0YXRpYyB2b2lkIHdvcmtlclRocmVhZCh2b2lkKiBk
YXRhKTsKKyAgICB2b2lkIHdvcmtlclRocmVhZCgpOwogCiAgICAgUmVmUHRyPFRocmVhZD4gbV90
aHJlYWQ7CiAgICAgQ1VSTE0qIG1fY3VybE11bHRpSGFuZGxlIHsgbnVsbHB0ciB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJUaHJlYWQuY3BwCmluZGV4IDM1YTIzODJjZDVkOTdiMDRjNjAx
ZGQ3MWIzNjk5Mjk0NzFjMGY3NWYuLjQyNWM5MjQ4ZDg3MDQ4MjdiYjBlMDM4MjFhMmFlOGRjOGFh
YzBkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5jcHAKQEAgLTEzOCwx
NiArMTM4LDEzIEBAIGJvb2wgV29ya2VyVGhyZWFkOjpzdGFydCgpCiAgICAgaWYgKG1fdGhyZWFk
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUo
V29ya2VyVGhyZWFkOjp3b3JrZXJUaHJlYWRTdGFydCwgdGhpcywgIldlYkNvcmU6IFdvcmtlciIp
OworICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIldlYkNvcmU6IFdvcmtlciIsIFt0aGlz
XSB7CisgICAgICAgIHdvcmtlclRocmVhZCgpOworICAgIH0pOwogCiAgICAgcmV0dXJuIG1fdGhy
ZWFkOwogfQogCi12b2lkIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkU3RhcnQodm9pZCogdGhy
ZWFkKQotewotICAgIHN0YXRpY19jYXN0PFdvcmtlclRocmVhZCo+KHRocmVhZCktPndvcmtlclRo
cmVhZCgpOwotfQotCiB2b2lkIFdvcmtlclRocmVhZDo6d29ya2VyVGhyZWFkKCkKIHsKICAgICAv
LyBQcm9wYWdhdGUgdGhlIG1haW5UaHJlYWQncyBmZW52IHRvIHdvcmtlcnMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9Xb3JrZXJUaHJlYWQuaAppbmRleCAyOWY0ZDk4NzI2YmVmNzFkNTA0ZmMxZWUyOWI2
YjAxNjNkZTE4ZWQzLi4yMjkwOGE4NWZjNzQ2NmU1MGNmMjI5OWNjMjRiMWE2YWI2NjBiOTUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyVGhyZWFkLmgKQEAgLTk0LDggKzk0LDYgQEAgY2xh
c3MgV29ya2VyVGhyZWFkIDogcHVibGljIFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkPiB7CiAgICAg
U29ja2V0UHJvdmlkZXIqIHNvY2tldFByb3ZpZGVyKCk7CiAKIHByaXZhdGU6Ci0gICAgLy8gU3Rh
dGljIGZ1bmN0aW9uIGV4ZWN1dGVkIGFzIHRoZSBjb3JlIHJvdXRpbmUgb24gdGhlIG5ldyB0aHJl
YWQuIFBhc3NlZCBhIHBvaW50ZXIgdG8gYSBXb3JrZXJUaHJlYWQgb2JqZWN0LgotICAgIHN0YXRp
YyB2b2lkIHdvcmtlclRocmVhZFN0YXJ0KHZvaWQqKTsKICAgICB2b2lkIHdvcmtlclRocmVhZCgp
OwogCiAgICAgUmVmUHRyPFRocmVhZD4gbV90aHJlYWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3Rv
cmFnZVRocmVhZC5jcHAKaW5kZXggZjNjYmVkMzEwOGI0ZDFmZmFlYzJiNDBiYmVjZjViYzg3NjEz
ZDZiMi4uOWI1MDkwN2M0ZTYyNGJjYzZkMmQyMzBhMTZkZmU3YzVjNzEwYmY4ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmNwcApAQCAtNTMsMTcgKzUzLDE1IEBAIFN0b3Jh
Z2VUaHJlYWQ6On5TdG9yYWdlVGhyZWFkKCkKIGJvb2wgU3RvcmFnZVRocmVhZDo6c3RhcnQoKQog
ewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCFtX3RocmVhZCkKLSAgICAg
ICAgbV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZShTdG9yYWdlVGhyZWFkOjp0aHJlYWRFbnRyeVBv
aW50Q2FsbGJhY2ssIHRoaXMsICJXZWJDb3JlOiBMb2NhbFN0b3JhZ2UiKTsKKyAgICBpZiAoIW1f
dGhyZWFkKSB7CisgICAgICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoIldlYkNvcmU6IExv
Y2FsU3RvcmFnZSIsIFt0aGlzXSB7CisgICAgICAgICAgICB0aHJlYWRFbnRyeVBvaW50KCk7Cisg
ICAgICAgIH0pOworICAgIH0KICAgICBhY3RpdmVTdG9yYWdlVGhyZWFkcygpLmFkZCh0aGlzKTsK
ICAgICByZXR1cm4gbV90aHJlYWQ7CiB9CiAKLXZvaWQgU3RvcmFnZVRocmVhZDo6dGhyZWFkRW50
cnlQb2ludENhbGxiYWNrKHZvaWQqIHRocmVhZCkKLXsKLSAgICBzdGF0aWNfY2FzdDxTdG9yYWdl
VGhyZWFkKj4odGhyZWFkKS0+dGhyZWFkRW50cnlQb2ludCgpOwotfQotCiB2b2lkIFN0b3JhZ2VU
aHJlYWQ6OnRocmVhZEVudHJ5UG9pbnQoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJlYWQuaCBiL1Nv
dXJjZS9XZWJLaXQvU3RvcmFnZS9TdG9yYWdlVGhyZWFkLmgKaW5kZXggOGNmMWIzZDRhZGM1YTMw
NmE3N2VjNzdjOWMzMjY2NjE2ODdiZWM1MC4uYWRlZDIzMDE3MGRhMDM1M2UzOGI2YjZkOWY5YTcy
YzU0NGE2NzM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TdG9yYWdlL1N0b3JhZ2VUaHJl
YWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1N0b3JhZ2UvU3RvcmFnZVRocmVhZC5oCkBAIC00OSw4
ICs0OSw2IEBAIGNsYXNzIFN0b3JhZ2VUaHJlYWQgewogICAgIHN0YXRpYyB2b2lkIHJlbGVhc2VG
YXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcygpOwogCiBwcml2YXRlOgotICAgIC8vIENh
bGxlZCBvbiBiYWNrZ3JvdW5kIHRocmVhZC4KLSAgICBzdGF0aWMgdm9pZCB0aHJlYWRFbnRyeVBv
aW50Q2FsbGJhY2sodm9pZCopOwogICAgIHZvaWQgdGhyZWFkRW50cnlQb2ludCgpOwogCiAgICAg
Ly8gQmFja2dyb3VuZCB0aHJlYWQgcGFydCBvZiB0aGUgdGVybWluYXRlIHByb2NlZHVyZS4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZTUyMjk3
ZGU1MWMzMDgxNTlkNWIwMjY0YzIwMTUyZTBmNDhmMzJhLi4wZmM1NDI4MTYzMDE4ZDNiM2YyOTlm
YTAyYTY4MjZkZmIwNDljODEwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDYtMjUgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dURl0gRHJvcCBUaHJlYWQ6OmNy
ZWF0ZShvYnNvbGV0ZSB0aGluZ3MpIEFQSSBzaW5jZSB3ZSBjYW4gdXNlIGxhbWJkYQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczODI1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcDoKKyAgICAgICAgKHJ1bkphdmFTY3JpcHRUaHJlYWQp
OgorICAgICAgICAoc3RhcnRKYXZhU2NyaXB0VGhyZWFkcyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tOgorICAgICAgICAocnVuVGhyZWFkKToKKyAgICAg
ICAgKHJ1blB0aHJlYWQpOgorICAgICAgICAodGVzdFRocmVhZElkZW50aWZpZXJNYXApOgorCiAy
MDE3LTA2LTI1ICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjE1MTkwLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvSmF2YVNjcmlwdFRocmVhZGluZy5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNwcAppbmRleCA3MTBkMmE1OWRhOTI5MDE2ZTYw
OGE0Y2Y3ZDk0NmZhODdmYWQ5MzJjLi4yZWFmYmJlYmZiNWJiOTlkYjE2YmU0YTY0MGZmNTRkMzA2
ZjE4NWY5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFk
aW5nLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9KYXZhU2NyaXB0VGhyZWFkaW5nLmNw
cApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgVGhyZWFkU2V0JiBqYXZhU2NyaXB0VGhyZWFkcygp
CiAKIC8vIFRoaXMgZnVuY3Rpb24gZXhlcmNpc2VzIEpTQyBpbiBhIGxvb3AgdW50aWwgamF2YVNj
cmlwdFRocmVhZHNTaG91bGRUZXJtaW5hdGUKIC8vIGJlY29tZXMgdHJ1ZSBvciBpdCBwcm9iYWJp
bGlzdGljYWxseSBkZWNpZGVzIHRvIHNwYXduIGEgcmVwbGFjZW1lbnQgdGhyZWFkIGFuZCBleGl0
Lgotdm9pZCBydW5KYXZhU2NyaXB0VGhyZWFkKHZvaWQqKQordm9pZCBydW5KYXZhU2NyaXB0VGhy
ZWFkKCkKIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qgc2NyaXB0ID0KICAgICAgICAg
InZhciBhcnJheSA9IFtdOyIKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIHJ1bkphdmFTY3JpcHRU
aHJlYWQodm9pZCopCiAgICAgICAgIFRocmVhZCYgdGhyZWFkID0gVGhyZWFkOjpjdXJyZW50KCk7
CiAgICAgICAgIHRocmVhZC5kZXRhY2goKTsKICAgICAgICAgamF2YVNjcmlwdFRocmVhZHMoKS5y
ZW1vdmUoJnRocmVhZCk7Ci0gICAgICAgIGphdmFTY3JpcHRUaHJlYWRzKCkuYWRkKFRocmVhZDo6
Y3JlYXRlKCZydW5KYXZhU2NyaXB0VGhyZWFkLCAwLCAwKSk7CisgICAgICAgIGphdmFTY3JpcHRU
aHJlYWRzKCkuYWRkKFRocmVhZDo6Y3JlYXRlKCJKYXZhU2NyaXB0IFRocmVhZCIsICZydW5KYXZh
U2NyaXB0VGhyZWFkKSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTI4LDcgKzEyOCw3
IEBAIHZvaWQgc3RhcnRKYXZhU2NyaXB0VGhyZWFkcygpCiAgICAgTG9ja0hvbGRlciBsb2NrZXIo
amF2YVNjcmlwdFRocmVhZHNNdXRleCgpKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
amF2YVNjcmlwdFRocmVhZHNDb3VudDsgKytpKQotICAgICAgICBqYXZhU2NyaXB0VGhyZWFkcygp
LmFkZChUaHJlYWQ6OmNyZWF0ZSgmcnVuSmF2YVNjcmlwdFRocmVhZCwgMCwgMCkpOworICAgICAg
ICBqYXZhU2NyaXB0VGhyZWFkcygpLmFkZChUaHJlYWQ6OmNyZWF0ZSgiSmF2YVNjcmlwdCBUaHJl
YWQiLCAmcnVuSmF2YVNjcmlwdFRocmVhZCkpOwogfQogCiB2b2lkIHN0b3BKYXZhU2NyaXB0VGhy
ZWFkcygpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRy
ZWUubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXgg
NTIzZjNmM2YxNTAwNGJjZDdlNjZhYzE1ZWFhNDEyYTY2YTY5NWI4Ni4uMjgwZWI3ZWY4ZWY1N2Zk
ZmY0NmY3NTdjZmIwYWZkNzIyZGRkYTk0ZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9E
dW1wUmVuZGVyVHJlZS5tbQpAQCAtMTA1Miw3ICsxMDUyLDcgQEAgc3RhdGljIHZvaWQgc2V0RGVm
YXVsdHNUb0NvbnNpc3RlbnRWYWx1ZXNGb3JUZXN0aW5nKCkKICAgICBbW05TVXNlckRlZmF1bHRz
IHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRWb2xhdGlsZURvbWFpbjpwcm9jZXNzSW5zdGFuY2VE
ZWZhdWx0cyBmb3JOYW1lOk5TQXJndW1lbnREb21haW5dOwogfQogCi1zdGF0aWMgdm9pZCBydW5U
aHJlYWQodm9pZCogYXJnKQorc3RhdGljIHZvaWQgcnVuVGhyZWFkKCkKIHsKICAgICBzdGF0aWMg
VGhyZWFkSWRlbnRpZmllciBwcmV2aW91c0lkID0gMDsKICAgICBUaHJlYWRJZGVudGlmaWVyIGN1
cnJlbnRJZCA9IGN1cnJlbnRUaHJlYWQoKTsKQEAgLTEwNjEsMTAgKzEwNjEsMTAgQEAgc3RhdGlj
IHZvaWQgcnVuVGhyZWFkKHZvaWQqIGFyZykKICAgICBwcmV2aW91c0lkID0gY3VycmVudElkOwog
fQogCi1zdGF0aWMgdm9pZCogcnVuUHRocmVhZCh2b2lkKiBhcmcpCitzdGF0aWMgdm9pZCogcnVu
UHRocmVhZCh2b2lkKikKIHsKLSAgICBydW5UaHJlYWQoYXJnKTsKLSAgICByZXR1cm4gMDsKKyAg
ICBydW5UaHJlYWQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogc3RhdGljIHZvaWQgdGVz
dFRocmVhZElkZW50aWZpZXJNYXAoKQpAQCAtMTA3OSw3ICsxMDc5LDcgQEAgc3RhdGljIHZvaWQg
dGVzdFRocmVhZElkZW50aWZpZXJNYXAoKQogCiAgICAgLy8gTm93IGNyZWF0ZSBhbm90aGVyIHRo
cmVhZCB1c2luZyBXVEYuIE9uIE9TWCwgaXQgd2lsbCBoYXZlIHRoZSBzYW1lIHB0aHJlYWQgaGFu
ZGxlCiAgICAgLy8gYnV0IHNob3VsZCBnZXQgYSBkaWZmZXJlbnQgUmVmUHRyPFRocmVhZD4uCi0g
ICAgVGhyZWFkOjpjcmVhdGUocnVuVGhyZWFkLCAwLCAiRHVtcFJlbmRlclRyZWU6IHRlc3QiKTsK
KyAgICBUaHJlYWQ6OmNyZWF0ZSgiRHVtcFJlbmRlclRyZWU6IHRlc3QiLCBydW5UaHJlYWQpOwog
fQogCiBzdGF0aWMgdm9pZCBhbGxvY2F0ZUdsb2JhbENvbnRyb2xsZXJzKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>