<?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>57764</bug_id>
          
          <creation_ts>2011-04-04 10:29:46 -0700</creation_ts>
          <short_desc>Split run storage out from BidiResolver into a new BidiRunList class</short_desc>
          <delta_ts>2011-04-07 19:12:55 -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>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>50912</blocked>
    
    <blocked>57727</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>leviw</cc>
    
    <cc>mitz</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>378864</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-04 10:29:46 -0700</bug_when>
    <thetext>Split run storage out from BidiResolver into a new BidiRunList class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378881</commentid>
    <comment_count>1</comment_count>
      <attachid>88079</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-04 10:52:27 -0700</bug_when>
    <thetext>Created attachment 88079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378887</commentid>
    <comment_count>2</comment_count>
      <attachid>88081</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-04 10:58:23 -0700</bug_when>
    <thetext>Created attachment 88081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378891</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-04 11:06:35 -0700</bug_when>
    <thetext>This patch was based on top of the patch for bug 57727, but is not technically dependent on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378897</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-04 11:15:03 -0700</bug_when>
    <thetext>In my first draft of this patch, I went all the way and tried to fix the tangled relationship between BidiResolver and InlineIterator.  But I backed off in hopes of making this patch easier to review.

The portion of this patch dealing with the creation of BidiRunList is *entirely* just moving code.  I highlighted the one line change in removing the m_emptyRun = true from deleteRuns() in the ChangeLog.

The other portion of this patch is fixing up the callers to deal with these methods being removed from BidiResolver, and is again no functional change.  I did clean up the argument passing a little now that the storage isn&apos;t strictly part of BidiResolver.

Hopefully you will all find this a no-brainer to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378929</commentid>
    <comment_count>5</comment_count>
      <attachid>88081</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-04 11:53:13 -0700</bug_when>
    <thetext>Comment on attachment 88081
Patch

It seems like you&apos;ve forgot to include BidiRunList.h here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378943</commentid>
    <comment_count>6</comment_count>
      <attachid>88092</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-04 12:06:59 -0700</bug_when>
    <thetext>Created attachment 88092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379451</commentid>
    <comment_count>7</comment_count>
      <attachid>88092</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-05 05:00:15 -0700</bug_when>
    <thetext>Comment on attachment 88092
Patch

looks sane to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381494</commentid>
    <comment_count>8</comment_count>
      <attachid>88664</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-07 11:05:46 -0700</bug_when>
    <thetext>Created attachment 88664
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381919</commentid>
    <comment_count>9</comment_count>
      <attachid>88664</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-07 18:26:57 -0700</bug_when>
    <thetext>Comment on attachment 88664
Patch for landing

Rejecting attachment 88664 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-4&apos;, &apos;apply-...&quot; exit_code: 2

Last 500 characters of output:
e/WebCore/WebCore.xcodeproj/project.pbxproj
patching file Source/WebCore/platform/graphics/GraphicsContext.cpp
patching file Source/WebCore/platform/text/BidiResolver.h
patching file Source/WebCore/platform/text/BidiRunList.h
patching file Source/WebCore/rendering/InlineIterator.h
patching file Source/WebCore/rendering/RenderBlock.h
patching file Source/WebCore/rendering/RenderBlockLineLayout.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/8344794</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>381932</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-07 19:12:55 -0700</bug_when>
    <thetext>Committed r83240: &lt;http://trac.webkit.org/changeset/83240&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88079</attachid>
            <date>2011-04-04 10:52:27 -0700</date>
            <delta_ts>2011-04-04 10:58:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57764-20110404205224.patch</filename>
            <type>text/plain</type>
            <size>35840</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4MjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZmJkMTI5YjJmYTZlNGVm
ZDBjOWU2NmM0MWRmMWE2MDMzMGNjNTNkLi5iY2ExMmQ2YTdlNGQ0MWY2NDQ5NWQ0YmUzYjc2YjBi
MjI4NTM1ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMDQtMDQgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNwbGl0IHJ1biBzdG9yYWdlIG91dCBmcm9tIEJpZGlSZXNvbHZl
ciBpbnRvIGEgbmV3IEJpZGlSdW5MaXN0IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Nzc2NAorCisgICAgICAgIFBhcnQgb2Ygd2hhdCBtYWtl
cyBCaWRpUmVzb2x2ZXIgYW5kIElubGluZUl0ZXJhdG9yIHNvIGRpZmZpY3VsdCB0byB1bmRlcnN0
YW5kCisgICAgICAgIChhbmQgYnVnIDUwOTEyIHNvIGRpZmZpY3VsdCB0byBmaXgpIGlzIHRoYXQg
QmlkaVJlc29sdmVyIGlzIGJvdGggYSBzdGF0ZSBtYWNoaW5lCisgICAgICAgIGZvciB0aGUgVW5p
Y29kZSBCaWRpIEFsZ29yaXRobSAoVUJBKSBhcyB3ZWxsIGFzIHN0b3JhZ2UgZm9yIHRoZSByZXN1
bHRpbmcKKyAgICAgICAgQmlkaVJ1bnMgZnJvbSB0aGUgYWxnb3JpdGhtLiAgVGhpcyBwYXRjaCBi
cmVha3MgdGhlIHN0b3JhZ2UgYXNwZWN0IG9mZgorICAgICAgICBpbnRvIGl0cyBvd24gY2xhc3Mg
QmlkaVJ1bkxpc3QuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBvbmx5IGEgc3RhcnQuICBJdCBk
b2VzIG5vdCBhY3R1YWxseSBmaXggdGhlIHByb2JsZW1hdGljIG93bmVyc2hpcAorICAgICAgICBy
ZWxhdGlvbnNoaXAsIGJ1dCBpdCBkb2VzIG1ha2UgaXQgcG9zc2libGUgdG8gZml4IHN1Y2ggaW4g
YSBzZWNvbmQgcGF0Y2guCisKKyAgICAgICAgVGhlIHJ1biBwb2ludGVycyBhbmQgYWRkUnVuL3By
ZXBlbmRSdW4sIGV0Yy4gd2VyZSBhbHJlYWR5IGEgdGlnaHRseSBjb3VwbGVkCisgICAgICAgIGxv
Z2ljYWwgc3Vic2V0IG9mIHRoZSBCaWRpUmVzb2x2ZXIgY2xhc3MsIHNvIG1vdmluZyB0aGVtIGlu
dG8gdGhlaXIgb3duIGNsYXNzCisgICAgICAgIHdhcyBib3RoIG9idmlvdXMgYW5kIGVhc3kuICBU
aGUgb25seSBwaWVjZSBvZiBsb2dpYyBJIGhhZCB0byBtb3ZlIHdhcyB0aGF0CisgICAgICAgIGRl
bGV0ZVJ1bnMoKSBoYWQgYSBzaWRlLWVmZmVjdCBvZiBzZXR0aW5nIHRoZSBtX2VtcHR5UnVuIGJp
dCBvbiB0aGUgcmVzb2x2ZXIuCisKKyAgICAgICAgSSBhbSBjZXJ0YWluIHRoYXQgdGhpcyBkZWxl
dGVSdW5zIHNpZGUtZWZmZWN0IHdhcyBvbmx5IGV2ZXIgbmVlZGVkIGluIG9uZSBwbGFjZQorICAg
ICAgICAocmlnaHQgYWZ0ZXIgZmluZE5leHRMaW5lQnJlYWspIGFuZCBJIGJlbGlldmUgdGhhdCBp
dCdzIG9ubHkgbmVlZGVkIGJlY2F1c2UKKyAgICAgICAgZmluZE5leHRMaW5lQnJlYWsgY2FuIHNv
bWV0aW1lcyBjcmVhdGUgYmlkaSBydW5zLiAgUnVuIGNyZWF0aW9uIGFwcGVhcnMgdG8gYmUKKyAg
ICAgICAgYW4gdW5pbnRlbnRpb25hbCBzaWRlLWVmZmVjdCBvZiBob3cgSW5saW5lSXRlcmF0b3Ig
Y2FsbHMgdGhyb3VnaCB0byBCaWRpUmVzb2x2ZXIKKyAgICAgICAgYXMgcGFydCBvZiBiaWRpTmV4
dCBhbmQgbm90IGEgZGVzaXJlZCBlZmZlY3Qgb2YgdGhlIGNvZGUuCisKKyAgICAgICAgSSBzdXNw
ZWN0IHRoZXJlIG1heSBiZSBhIHNtYWxsIHBlcmZvcm1hbmNlIHdpbiBmcm9tIGZ1cnRoZXIgcmVm
YWN0b3Jpbmcgc28gdGhhdAorICAgICAgICBmaW5kTmV4dExpbmVCcmVhayBkb2VzIG5vdCBuZWVk
IHRvIGNyZWF0ZSBCaWRpUnVucy4KKworICAgICAgICBBcyBJIGNvbW1lbnRlZCBpbiB0aGUgY29k
ZSwgY2FsbGVycyBzaG91bGQgb3duIHRoZWlyIG93biBCaWRpUnVuTGlzdCB3aGljaCB0aGV5Cisg
ICAgICAgIHBhc3MgdG8gQmlkaVJlc29sdmVyOjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUuICBJIGF0
dGVtcHRlZCB0byBpbXBsZW1lbnQgdGhhdCBpbgorICAgICAgICBhbiBlYXJsaWVyIHZlcnNpb24g
b2YgdGhpcyBwYXRjaCwgYnV0IGl0IHdhcyB0b28gY29tcGxpY2F0ZWQgd2l0aCB0aGUgY3VycmVu
dAorICAgICAgICB0d2lzdGVkIGRlcGVuZGVuY2llcyBiZXR3ZWVuIElubGluZUl0ZXJhdG9yL2Jp
ZGlOZXh0IGFuZCBJbmxpbmVCaWRpUmVzb2x2ZXIuCisgICAgICAgIHJhaXNlL2xvd2VyRXhwbGlj
aXRFbWJlZGRpbmdMZXZlbCBhcmUgY2FsbGVkIHVuY29uZGl0aW9uYWxseQorICAgICAgICBmcm9t
IGNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nICh3aGljaCBpcyBjYWxsZWQgYnkgYmlkaU5leHQpIGFu
ZCBleHBlY3QgdG8gaGF2ZQorICAgICAgICBhY2Nlc3MgdG8gYSBydW5zIGxpc3QgZXZlbiBpbiBj
YXNlcyB3aGVyZSB3ZSBkb24ndCB3YW50IGFueSBydW5zIChmaW5kTmV4dExpbmVCcmVhaykuCisK
KyAgICAgICAgSSBhbHNvIGNsZWFuZWQgdXAgc29tZSBvZiB0aGUgY2FsbGVycyB0byBwYXNzIGFy
b3VuZCBCaWRpUnVuTGlzdCBvYmplY3RzIGluc3RlYWQKKyAgICAgICAgb2YgSW5saW5lQmlkaVJl
c29sdmVycyBub3cgdGhhdCB0aGV5J3JlIHNlcGFyYXRlIG9iamVjdHMuCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogV2ViQ29y
ZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ6OmRyYXdCaWRpVGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9CaWRpUmVz
b2x2ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6QmlkaVJlc29sdmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6cnVucyk6CisgICAgICAgIChXZWJDb3Jl
OjpCaWRpUmVzb2x2ZXI6Om1hcmtDdXJyZW50UnVuRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6
OjphcHBlbmRSdW4pOgorICAgICAgICAoV2ViQ29yZTo6Ojpsb3dlckV4cGxpY2l0RW1iZWRkaW5n
TGV2ZWwpOgorICAgICAgICAoV2ViQ29yZTo6OjpyYWlzZUV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwp
OgorICAgICAgICAoV2ViQ29yZTo6OjpyZW9yZGVyUnVuc0Zyb21MZXZlbHMpOgorICAgICAgICAo
V2ViQ29yZTo6OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUpOgorICAgICAgICAqIHJlbmRlcmluZy9J
bmxpbmVJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQmlkaVJlc29sdmVyOjph
cHBlbmRSdW4pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y3JlYXRlUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjphcHBlbmRSdW5zRm9y
T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnJlYWNoZWRFbmRPZlRleHRSZW5kZXJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6aGFuZGxlVHJhaWxpbmdTcGFjZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKToKKwogMjAx
MS0wNC0wMyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDk2MGJlOWU1ODU5
MTlmM2ZjZDQ2MjlkYzU0OWI0ZjllZWEwNjQ0NDYuLmFiZjMwMzAxOGRhZThlYmMwMWQzNGRhY2Vi
OGZmNzM2YjExZTg3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0yNjc3LDYgKzI2NzcsNyBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlk
aUNvbnRleHQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmggXAorCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJ1bkxpc3QuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvSHlwaGVuYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9M
aW5lRW5kaW5nLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggZmQ0M2U3OWQ0ZmY1Y2ZjN2NjMmEw
YzAwODM0NDZlNmY5N2RmNjc0MS4uNGI5MjJhMDg5OTgzNGM4MTM4YjA3NzE0N2I3MmU3NDhlNmZl
YTQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtOTAwLDYgKzkwMCw3IEBACiAgICAgICAgICAgICAn
cGxhdGZvcm0vc3FsL1NRTGl0ZURhdGFiYXNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3Nx
bC9TUUxpdGVUcmFuc2FjdGlvbi5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0Jhc2U2
NC5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0JpZGlSdW5MaXN0LmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaCcsCiAgICAgICAgICAgICAncGxhdGZv
cm0vdGV4dC9CaWRpUmVzb2x2ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9MaW5l
RW5kaW5nLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA0YzJlMTlmMDBmM2M3MjM3Nzk3ZTE3MGJlMTk0
M2Q3N2QyOGZlZTRlLi41OWZiOGIwYjFlMGQzYzU3NmU3NmNkMGQzZmIzNDBjNWExMmQyYTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwpAQCAtMTk2MSw2ICsxOTYxLDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxh
dGZvcm0vS2lsbFJpbmcuaCBcCiAgICAgcGxhdGZvcm0vS1VSTC5oIFwKICAgICBwbGF0Zm9ybS9M
ZW5ndGguaCBcCisgICAgcGxhdGZvcm0vdGV4dC9CaWRpUnVuTGlzdC5oIFwKICAgICBwbGF0Zm9y
bS90ZXh0L0xpbmVFbmRpbmcuaCBcCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVu
dC5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNTcwZDFmYTYxNTY2MWFlY2Y1
OTdlYjIyMTMwNDM2YzEwOTY2ZTE4NC4uMWM3MGE5MmM1MDc1MzIzZmYzZWRiYTAyMTM4NTE2ZGQx
OWNlNDRhZSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2oKQEAgLTMwNDgxLDYgKzMwNDgxLDEwIEBACiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZp
bGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0XEJpZGlSdW5MaXN0LmgiCisJ
CQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVx0ZXh0XEh5cGhlbmF0aW9uLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMzc5N2Mz
MWQ2NzUzZGQ2NzVjNzU3M2YxYzRjN2ZlOWQyOGY4ODE1MC4uNTM1ZTgyZjU0YWNhOGRjODljNDk3
ODlmOWI1NjllNjZkNDMxODMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMzYzNCw2ICszNjM0LDcgQEAKIAkJQThDMjI4MEUx
MUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzIyODBEMTFENEE1OTcwMEQ1QTdEMyAvKiBE
b2N1bWVudFBhcnNlci5jcHAgKi87IH07CiAJCUE4QzIyOEExMTFENTcyMkUwMEQ1QTdEMyAvKiBE
ZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEMyMjg5RjExRDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFE
b2N1bWVudFBhcnNlci5oICovOyB9OwogCQlBOEMyMjhBMjExRDU3MjJFMDBENUE3RDMgLyogRGVj
b2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBOEMyMjhBMDExRDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFE
b2N1bWVudFBhcnNlci5jcHAgKi87IH07CisJCUE4QzQwMjkzMTM0OEIyMjIwMDYzRjFFNSAvKiBC
aWRpUnVuTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThDNDAyOTIxMzQ4QjIyMjAwNjNGMUU1IC8qIEJpZGlSdW5MaXN0LmggKi87IH07CiAJCUE4
QzRBN0ZEMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEM0QTdFQjA5RDU2MzI3MDAwM0FDOEQg
LyogU3R5bGVkRWxlbWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUE4QzRBN0ZFMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzRBN0VD
MDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmNwcCAqLzsgfTsKIAkJQThDNEE4MDAw
OUQ1NjMyNzAwMDNBQzhEIC8qIE5vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQThDNEE3RUUwOUQ1NjMyNzAwMDNBQzhEIC8qIE5vZGUuY3BwICov
OyB9OwpAQCAtMTAwMTMsNiArMTAwMTQsNyBAQAogCQlBOEMyMjgwRDExRDRBNTk3MDBENUE3RDMg
LyogRG9jdW1lbnRQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gRG9jdW1lbnRQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBOEMy
Mjg5RjExRDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzIyOEEwMTFENTcyMkUwMEQ1QTdEMyAv
KiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBOEM0MDI5MjEzNDhCMjIyMDA2M0YxRTUgLyogQmlkaVJ1bkxpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmlkaVJ1bkxpc3QuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDNEE3RUIwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxl
ZEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlZEVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDNEE3RUMwOUQ1NjMyNzAwMDNB
QzhEIC8qIFN0eWxlZEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN0eWxlZEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
OEM0QTdFRTA5RDU2MzI3MDAwM0FDOEQgLyogTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNzc5NSw2ICsxNzc5Nyw3IEBACiAJCQkJQjJDM0Q5RjIwRDAwNkMxRDAwRUY2RjI2IC8qIEJp
ZGlDb250ZXh0LmNwcCAqLywKIAkJCQlCMkMzRDlGMzBEMDA2QzFEMDBFRjZGMjYgLyogQmlkaUNv
bnRleHQuaCAqLywKIAkJCQlCMkMzRDlGNDBEMDA2QzFEMDBFRjZGMjYgLyogQmlkaVJlc29sdmVy
LmggKi8sCisJCQkJQThDNDAyOTIxMzQ4QjIyMjAwNjNGMUU1IC8qIEJpZGlSdW5MaXN0LmggKi8s
CiAJCQkJMzc1Q0QyMzExMTlENDNDODAwQTJBODU5IC8qIEh5cGhlbmF0aW9uLmggKi8sCiAJCQkJ
ODlCNUVBOUYxMUU4MDAzRDAwRjIzNjdFIC8qIExpbmVFbmRpbmcuY3BwICovLAogCQkJCTg5QjVF
QUEwMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggKi8sCkBAIC0xOTgxNiw2ICsxOTgx
OSw3IEBACiAJCQkJQjJDM0RBMjQwRDAwNkMxRDAwRUY2RjI2IC8qIEJpZGlDb250ZXh0LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkMzREEyNTBEMDA2QzFEMDBFRjZGMjYgLyogQmlkaVJlc29sdmVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0U3ODk4NjExMjBFN0E2MDA2MEVDRTUgLyogQmlkaVJ1
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJQThDNDAyOTMxMzQ4QjIyMjAwNjNGMUU1IC8qIEJpZGlS
dW5MaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzgxOTIwNTBGODdFMUVDMDBENTM1MkEgLyog
QmluYXJ5UHJvcGVydHlMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNjIyQThGQjEyMkM0NEE2
MDBBNzg1QjMgLyogQmluZGluZ1NlY3VyaXR5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNjIyQThG
RDEyMkM0NEE2MDBBNzg1QjMgLyogQmluZGluZ1NlY3VyaXR5QmFzZS5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yMTIwMiw3ICsyMTIwNiw2IEBACiAJCQkJQjg4NUU4RDUxMUUwNkREMjAwOUZGQkY0IC8q
IEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEY3
MDdBOUExMUVGNjc5NDAwQUNEQTY5IC8qIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGM0Q0QzQ3OTEyRTA3NjYzMDAzREExNTAgLyogSW5zcGVjdG9yQnJv
d3NlckRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCTIyNzc3NzYwMTM0NURFQTkw
MDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFDODFCOTVDMEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUYzMzM1QkY5MTJFMDdEQzMwMEQzMzAxMSAvKiBJbnNwZWN0b3JDb25zb2xlQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzRjVDRjExMTJFRDgxQTgwMDg0QzU2OSAvKiBJbnNw
ZWN0b3JDb25zb2xlSW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAgLTIxMjE1LDYg
KzIxMjE4LDcgQEAKIAkJCQk3QTI0NTg3QzEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9N
QWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBNzRFQ0JCMTAxODM5QTYwMEJGOTM5RSAvKiBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjA2MTc0MEY1
RjAwQUMwMEEwN0VBQyAvKiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTIyNzc3NzYwMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENo
YW5uZWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNDRDNzE0MTEyNUI4MkMwMEYyNkVFRSAvKiBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjM0NEM3NTMxMTI5
NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTdBMEU3NzBGMTBDMDBBODgwMEEwMjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhv
c3QuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKaW5kZXggZDc1MzgyODc1Y2NlNTcxZGZhZWNiMmI1
ZTc0YjU3NWYzNmM2ZmM1OS4uMjVhNDY1NDM0M2RkMTAxYTViYmU2NDRlYTFmYzFkOGFjMDJjOTBm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuY3BwCkBAIC0zOTcsNyArMzk3LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpk
cmF3QmlkaVRleHQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBG
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8g
RklYTUU6IFRoaXMgb3duZXJzaGlwIHNob3VsZCBiZSByZXZlcnNlZC4gV2Ugc2hvdWxkIHBhc3Mg
QmlkaVJ1bkxpc3QKKyAgICAvLyB0byBCaWRpUmVzb2x2ZXIgaW4gY3JlYXRlQmlkaVJ1bnNGb3JM
aW5lLgogICAgIEJpZGlSZXNvbHZlcjxUZXh0UnVuSXRlcmF0b3IsIEJpZGlDaGFyYWN0ZXJSdW4+
IGJpZGlSZXNvbHZlcjsKKyAgICBCaWRpUnVuTGlzdDxCaWRpQ2hhcmFjdGVyUnVuPiYgYmlkaVJ1
bnMgPSBiaWRpUmVzb2x2ZXIucnVucygpOworCiAgICAgV1RGOjpVbmljb2RlOjpEaXJlY3Rpb24g
cGFyYWdyYXBoRGlyZWN0aW9uID0gcnVuLmx0cigpID8gV1RGOjpVbmljb2RlOjpMZWZ0VG9SaWdo
dCA6IFdURjo6VW5pY29kZTo6UmlnaHRUb0xlZnQ7CiAKICAgICBiaWRpUmVzb2x2ZXIuc2V0U3Rh
dHVzKEJpZGlTdGF0dXMocGFyYWdyYXBoRGlyZWN0aW9uLCBwYXJhZ3JhcGhEaXJlY3Rpb24sIHBh
cmFncmFwaERpcmVjdGlvbiwgQmlkaUNvbnRleHQ6OmNyZWF0ZShydW4ubHRyKCkgPyAwIDogMSwg
cGFyYWdyYXBoRGlyZWN0aW9uLCBydW4uZGlyZWN0aW9uYWxPdmVycmlkZSgpKSkpOwpAQCAtNDA1
LDExICs0MDksMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdCaWRpVGV4dChjb25zdCBG
b250JiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEYKICAgICBiaWRpUmVzb2x2ZXIu
c2V0UG9zaXRpb24oVGV4dFJ1bkl0ZXJhdG9yKCZydW4sIDApKTsKICAgICBiaWRpUmVzb2x2ZXIu
Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lKFRleHRSdW5JdGVyYXRvcigmcnVuLCBydW4ubGVuZ3RoKCkp
KTsKIAotICAgIGlmICghYmlkaVJlc29sdmVyLnJ1bkNvdW50KCkpCisgICAgaWYgKCFiaWRpUnVu
cy5ydW5Db3VudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBGbG9hdFBvaW50IGN1cnJQb2lu
dCA9IHBvaW50OwotICAgIEJpZGlDaGFyYWN0ZXJSdW4qIGJpZGlSdW4gPSBiaWRpUmVzb2x2ZXIu
Zmlyc3RSdW4oKTsKKyAgICBCaWRpQ2hhcmFjdGVyUnVuKiBiaWRpUnVuID0gYmlkaVJ1bnMuZmly
c3RSdW4oKTsKICAgICB3aGlsZSAoYmlkaVJ1bikgewogCiAgICAgICAgIFRleHRSdW4gc3VicnVu
ID0gcnVuOwpAQCAtNDI1LDcgKzQyOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Qmlk
aVRleHQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGCiAgICAg
ICAgICAgICBjdXJyUG9pbnQubW92ZShmb250LndpZHRoKHN1YnJ1biksIDApOwogICAgIH0KIAot
ICAgIGJpZGlSZXNvbHZlci5kZWxldGVSdW5zKCk7CisgICAgYmlkaVJ1bnMuZGVsZXRlUnVucygp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0hpZ2hsaWdodEZvclRleHQoY29uc3Qg
Rm9udCYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwg
aW50IGgsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFj
ZSwgaW50IGZyb20sIGludCB0bykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvQmlkaVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlS
ZXNvbHZlci5oCmluZGV4IDYxYmE3ZWFjM2I1MTdmMGFiNjZkY2NjNmI0NTEzZjRmNmUwY2FhZTUu
LjZiODlhNjA3Mzg1Y2UwMTcwMzc3ODMwOTYxYWU0ZjAwNDAzYTU4MzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaApAQCAtMjMsNiArMjMsNyBAQAogI2Rl
ZmluZSBCaWRpUmVzb2x2ZXJfaAogCiAjaW5jbHVkZSAiQmlkaUNvbnRleHQuaCIKKyNpbmNsdWRl
ICJCaWRpUnVuTGlzdC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMTQ3LDYgKzE0
OCw4IEBAIGVudW0gVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgewogICAgIFZpc3VhbFJpZ2h0VG9M
ZWZ0T3ZlcnJpZGUKIH07CiAKKy8vIEJpZGlSZXNvbHZlciBpcyBXZWJLaXQncyBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUgVW5pY29kZSBCaWRpIEFsZ29yaXRobQorLy8gaHR0cDovL3VuaWNvZGUub3Jn
L3JlcG9ydHMvdHI5CiB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4gY2xhc3Mg
QmlkaVJlc29sdmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCaWRpUmVzb2x2ZXIpOwog
cHVibGljOgpAQCAtMTU0LDEwICsxNTcsNiBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9kaXJlY3Rp
b24oV1RGOjpVbmljb2RlOjpPdGhlck5ldXRyYWwpCiAgICAgICAgICwgbV9yZWFjaGVkRW5kT2ZM
aW5lKGZhbHNlKQogICAgICAgICAsIG1fZW1wdHlSdW4odHJ1ZSkKLSAgICAgICAgLCBtX2ZpcnN0
UnVuKDApCi0gICAgICAgICwgbV9sYXN0UnVuKDApCi0gICAgICAgICwgbV9sb2dpY2FsbHlMYXN0
UnVuKDApCi0gICAgICAgICwgbV9ydW5Db3VudCgwKQogICAgICAgICAsIG1faW5Jc29sYXRlKGZh
bHNlKQogICAgIHsKICAgICB9CkBAIC0xOTMsMjIgKzE5MiwxNiBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNyZWF0ZUJpZGlSdW5zRm9yTGluZShjb25zdCBJdGVyYXRvciYgZW5kLCBWaXN1YWxEaXJl
Y3Rpb25PdmVycmlkZSA9IE5vVmlzdWFsT3ZlcnJpZGUsIGJvb2wgaGFyZExpbmVCcmVhayA9IGZh
bHNlKTsKIAotICAgIFJ1biogZmlyc3RSdW4oKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UnVuOyB9
Ci0gICAgUnVuKiBsYXN0UnVuKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UnVuOyB9Ci0gICAgUnVu
KiBsb2dpY2FsbHlMYXN0UnVuKCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsbHlMYXN0UnVuOyB9
Ci0gICAgdW5zaWduZWQgcnVuQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3J1bkNvdW50OyB9Cisg
ICAgQmlkaVJ1bkxpc3Q8UnVuPiYgcnVucygpIHsgcmV0dXJuIG1fcnVuczsgfQogCi0gICAgdm9p
ZCBhZGRSdW4oUnVuKik7Ci0gICAgdm9pZCBwcmVwZW5kUnVuKFJ1biopOwotCi0gICAgdm9pZCBt
b3ZlUnVuVG9FbmQoUnVuKik7Ci0gICAgdm9pZCBtb3ZlUnVuVG9CZWdpbm5pbmcoUnVuKik7Ci0K
LSAgICB2b2lkIGRlbGV0ZVJ1bnMoKTsKKyAgICAvLyBGSVhNRTogVGhpcyB1c2VkIHRvIGJlIHBh
cnQgb2YgZGVsZXRlUnVucygpIGJ1dCB3YXMgYSBsYXllcmluZyB2aW9sYXRpb24uCisgICAgLy8g
SXQncyB1bmNsZWFyIGlmIHRoaXMgaXMgc3RpbGwgbmVlZGVkLgorICAgIHZvaWQgbWFya0N1cnJl
bnRSdW5FbXB0eSgpIHsgbV9lbXB0eVJ1biA9IHRydWU7IH0KIAogcHJvdGVjdGVkOgorICAgIC8v
IEZJWE1FOiBJbnN0ZWFkIG9mIElubGluZUJpZGlSZXNvbHZlcnMgc3ViY2xhc3NpbmcgdGhpcyBt
ZXRob2QsIHdlIHNob3VsZAorICAgIC8vIHBhc3MgaW4gc29tZSBzb3J0IG9mIFRyYWl0cyBvYmpl
Y3Qgd2hpY2gga25vd3MgaG93IHRvIGNyZWF0ZSBydW5zIGZvciBhcHBlbmRpbmcuCiAgICAgdm9p
ZCBhcHBlbmRSdW4oKTsKLSAgICB2b2lkIHJldmVyc2VSdW5zKHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBlbmQpOwogCiAgICAgSXRlcmF0b3IgbV9jdXJyZW50OwogICAgIC8vIHNvciBhbmQgZW9y
IGFyZSAic3RhcnQgb2YgcnVuIiBhbmQgImVuZCBvZiBydW4iIHJlc3BlY3RpdmVseSBhbmQgY29y
cmVwb25kCkBAIC0yMjMsMTAgKzIxNiwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgSXRlcmF0b3IgbV9s
YXN0QmVmb3JlRVQ7IC8vIEJlZm9yZSBhIEV1cm9wZWFuTnVtYmVyVGVybWluYXRvcgogICAgIGJv
b2wgbV9lbXB0eVJ1bjsKIAotICAgIFJ1biogbV9maXJzdFJ1bjsKLSAgICBSdW4qIG1fbGFzdFJ1
bjsKLSAgICBSdW4qIG1fbG9naWNhbGx5TGFzdFJ1bjsKLSAgICB1bnNpZ25lZCBtX3J1bkNvdW50
OworICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmVsb25nIHRvIHRoZSByZXNvbHZlciwg
YnV0IHJhdGhlciBiZSBwYXNzZWQKKyAgICAvLyBpbnRvIGNyZWF0ZUJpZGlSdW5zRm9yTGluZSBi
eSB0aGUgY2FsbGVyLgorICAgIEJpZGlSdW5MaXN0PFJ1bj4gbV9ydW5zOworCiAgICAgTWlkcG9p
bnRTdGF0ZTxJdGVyYXRvcj4gbV9taWRwb2ludFN0YXRlOwogCiAgICAgYm9vbCBtX2luSXNvbGF0
ZTsKQEAgLTI0Myw3NiArMjM2LDYgQEAgcHJpdmF0ZToKIH07CiAKIHRlbXBsYXRlIDxjbGFzcyBJ
dGVyYXRvciwgY2xhc3MgUnVuPgotaW5saW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBS
dW4+OjphZGRSdW4oUnVuKiBydW4pCi17Ci0gICAgaWYgKCFtX2ZpcnN0UnVuKQotICAgICAgICBt
X2ZpcnN0UnVuID0gcnVuOwotICAgIGVsc2UKLSAgICAgICAgbV9sYXN0UnVuLT5tX25leHQgPSBy
dW47Ci0gICAgbV9sYXN0UnVuID0gcnVuOwotICAgIG1fcnVuQ291bnQrKzsKLX0KLQotdGVtcGxh
dGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+Ci1pbmxpbmUgdm9pZCBCaWRpUmVzb2x2ZXI8
SXRlcmF0b3IsIFJ1bj46OnByZXBlbmRSdW4oUnVuKiBydW4pCi17Ci0gICAgQVNTRVJUKCFydW4t
Pm1fbmV4dCk7Ci0KLSAgICBpZiAoIW1fbGFzdFJ1bikKLSAgICAgICAgbV9sYXN0UnVuID0gcnVu
OwotICAgIGVsc2UKLSAgICAgICAgcnVuLT5tX25leHQgPSBtX2ZpcnN0UnVuOwotICAgIG1fZmly
c3RSdW4gPSBydW47Ci0gICAgbV9ydW5Db3VudCsrOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRl
cmF0b3IsIGNsYXNzIFJ1bj4KLWlubGluZSB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVu
Pjo6bW92ZVJ1blRvRW5kKFJ1biogcnVuKQotewotICAgIEFTU0VSVChtX2ZpcnN0UnVuKTsKLSAg
ICBBU1NFUlQobV9sYXN0UnVuKTsKLSAgICBBU1NFUlQocnVuLT5tX25leHQpOwotCi0gICAgUnVu
KiBjdXJyZW50ID0gMDsKLSAgICBSdW4qIG5leHQgPSBtX2ZpcnN0UnVuOwotICAgIHdoaWxlIChu
ZXh0ICE9IHJ1bikgewotICAgICAgICBjdXJyZW50ID0gbmV4dDsKLSAgICAgICAgbmV4dCA9IGN1
cnJlbnQtPm5leHQoKTsKLSAgICB9Ci0KLSAgICBpZiAoIWN1cnJlbnQpCi0gICAgICAgIG1fZmly
c3RSdW4gPSBydW4tPm5leHQoKTsKLSAgICBlbHNlCi0gICAgICAgIGN1cnJlbnQtPm1fbmV4dCA9
IHJ1bi0+bV9uZXh0OwotCi0gICAgcnVuLT5tX25leHQgPSAwOwotICAgIG1fbGFzdFJ1bi0+bV9u
ZXh0ID0gcnVuOwotICAgIG1fbGFzdFJ1biA9IHJ1bjsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEl0
ZXJhdG9yLCBjbGFzcyBSdW4+Ci1pbmxpbmUgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1
bj46Om1vdmVSdW5Ub0JlZ2lubmluZyhSdW4qIHJ1bikKLXsKLSAgICBBU1NFUlQobV9maXJzdFJ1
bik7Ci0gICAgQVNTRVJUKG1fbGFzdFJ1bik7Ci0gICAgQVNTRVJUKHJ1biAhPSBtX2ZpcnN0UnVu
KTsKLQotICAgIFJ1biogY3VycmVudCA9IG1fZmlyc3RSdW47Ci0gICAgUnVuKiBuZXh0ID0gY3Vy
cmVudC0+bmV4dCgpOwotICAgIHdoaWxlIChuZXh0ICE9IHJ1bikgewotICAgICAgICBjdXJyZW50
ID0gbmV4dDsKLSAgICAgICAgbmV4dCA9IGN1cnJlbnQtPm5leHQoKTsKLSAgICB9Ci0KLSAgICBj
dXJyZW50LT5tX25leHQgPSBydW4tPm1fbmV4dDsKLSAgICBpZiAocnVuID09IG1fbGFzdFJ1bikK
LSAgICAgICAgbV9sYXN0UnVuID0gY3VycmVudDsKLQotICAgIHJ1bi0+bV9uZXh0ID0gbV9maXJz
dFJ1bjsKLSAgICBtX2ZpcnN0UnVuID0gcnVuOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0
b3IsIGNsYXNzIFJ1bj4KIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjphcHBlbmRS
dW4oKQogewogICAgIGlmICghbV9lbXB0eVJ1biAmJiAhbV9lb3IuYXRFbmQoKSkgewpAQCAtMzI1
LDcgKzI0OCw3IEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjphcHBlbmRSdW4o
KQogICAgICAgICB9CiAKICAgICAgICAgaWYgKGVuZE9mZnNldCA+PSBzdGFydE9mZnNldCkKLSAg
ICAgICAgICAgIGFkZFJ1bihuZXcgUnVuKHN0YXJ0T2Zmc2V0LCBlbmRPZmZzZXQgKyAxLCBjb250
ZXh0KCksIG1fZGlyZWN0aW9uKSk7CisgICAgICAgICAgICBtX3J1bnMuYWRkUnVuKG5ldyBSdW4o
c3RhcnRPZmZzZXQsIGVuZE9mZnNldCArIDEsIGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsKIAog
ICAgICAgICBtX2Vvci5pbmNyZW1lbnQoKTsKICAgICAgICAgbV9zb3IgPSBtX2VvcjsKQEAgLTM5
MCw4ICszMTMsMTAgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46Omxvd2VyRXhw
bGljaXRFbWJlZGRpbmdMZXZlbChXVEY6OlVuaWNvZGU6OkRpcmUKICAgICAgICAgfQogICAgICAg
ICBtX2VvciA9IG1fbGFzdDsKICAgICB9CisKICAgICBhcHBlbmRSdW4oKTsKICAgICBtX2VtcHR5
UnVuID0gdHJ1ZTsKKwogICAgIC8vIHNvciBmb3IgdGhlIG5ldyBydW4gaXMgZGV0ZXJtaW5lZCBi
eSB0aGUgaGlnaGVyIGxldmVsIChydWxlIFgxMCkKICAgICBzZXRMYXN0RGlyKGZyb20pOwogICAg
IHNldExhc3RTdHJvbmdEaXIoZnJvbSk7CkBAIC00MjgsOCArMzUzLDEwIEBAIHZvaWQgQmlkaVJl
c29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpyYWlzZUV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwoV1RGOjpV
bmljb2RlOjpEaXJlCiAgICAgICAgIH0KICAgICAgICAgbV9lb3IgPSBtX2xhc3Q7CiAgICAgfQor
CiAgICAgYXBwZW5kUnVuKCk7CiAgICAgbV9lbXB0eVJ1biA9IHRydWU7CisKICAgICBzZXRMYXN0
RGlyKHRvKTsKICAgICBzZXRMYXN0U3Ryb25nRGlyKHRvKTsKICAgICBtX2VvciA9IEl0ZXJhdG9y
KCk7CkBAIC00NzgsNzUgKzQwNSw2IEBAIGJvb2wgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+
Ojpjb21taXRFeHBsaWNpdEVtYmVkZGluZygpCiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRv
ciwgY2xhc3MgUnVuPgotdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmRlbGV0ZVJ1
bnMoKQotewotICAgIG1fZW1wdHlSdW4gPSB0cnVlOwotICAgIGlmICghbV9maXJzdFJ1bikKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgUnVuKiBjdXJyID0gbV9maXJzdFJ1bjsKLSAgICB3aGlsZSAo
Y3VycikgewotICAgICAgICBSdW4qIHMgPSBjdXJyLT5uZXh0KCk7Ci0gICAgICAgIGN1cnItPmRl
c3Ryb3koKTsKLSAgICAgICAgY3VyciA9IHM7Ci0gICAgfQotCi0gICAgbV9maXJzdFJ1biA9IDA7
Ci0gICAgbV9sYXN0UnVuID0gMDsKLSAgICBtX3J1bkNvdW50ID0gMDsKLX0KLQotdGVtcGxhdGUg
PGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+Ci12b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwg
UnVuPjo6cmV2ZXJzZVJ1bnModW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCkKLXsKLSAgICBp
ZiAoc3RhcnQgPj0gZW5kKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoZW5kIDwgbV9y
dW5Db3VudCk7Ci0gICAgCi0gICAgLy8gR2V0IHRoZSBpdGVtIGJlZm9yZSB0aGUgc3RhcnQgb2Yg
dGhlIHJ1bnMgdG8gcmV2ZXJzZSBhbmQgcHV0IGl0IGluCi0gICAgLy8gfGJlZm9yZVN0YXJ0fC4g
IHxjdXJyfCBzaG91bGQgcG9pbnQgdG8gdGhlIGZpcnN0IHJ1biB0byByZXZlcnNlLgotICAgIFJ1
biogY3VyciA9IG1fZmlyc3RSdW47Ci0gICAgUnVuKiBiZWZvcmVTdGFydCA9IDA7Ci0gICAgdW5z
aWduZWQgaSA9IDA7Ci0gICAgd2hpbGUgKGkgPCBzdGFydCkgewotICAgICAgICBpKys7Ci0gICAg
ICAgIGJlZm9yZVN0YXJ0ID0gY3VycjsKLSAgICAgICAgY3VyciA9IGN1cnItPm5leHQoKTsKLSAg
ICB9Ci0KLSAgICBSdW4qIHN0YXJ0UnVuID0gY3VycjsKLSAgICB3aGlsZSAoaSA8IGVuZCkgewot
ICAgICAgICBpKys7Ci0gICAgICAgIGN1cnIgPSBjdXJyLT5uZXh0KCk7Ci0gICAgfQotICAgIFJ1
biogZW5kUnVuID0gY3VycjsKLSAgICBSdW4qIGFmdGVyRW5kID0gY3Vyci0+bmV4dCgpOwotCi0g
ICAgaSA9IHN0YXJ0OwotICAgIGN1cnIgPSBzdGFydFJ1bjsKLSAgICBSdW4qIG5ld05leHQgPSBh
ZnRlckVuZDsKLSAgICB3aGlsZSAoaSA8PSBlbmQpIHsKLSAgICAgICAgLy8gRG8gdGhlIHJldmVy
c2FsLgotICAgICAgICBSdW4qIG5leHQgPSBjdXJyLT5uZXh0KCk7Ci0gICAgICAgIGN1cnItPm1f
bmV4dCA9IG5ld05leHQ7Ci0gICAgICAgIG5ld05leHQgPSBjdXJyOwotICAgICAgICBjdXJyID0g
bmV4dDsKLSAgICAgICAgaSsrOwotICAgIH0KLQotICAgIC8vIE5vdyBob29rIHVwIGJlZm9yZVN0
YXJ0IGFuZCBhZnRlckVuZCB0byB0aGUgc3RhcnRSdW4gYW5kIGVuZFJ1bi4KLSAgICBpZiAoYmVm
b3JlU3RhcnQpCi0gICAgICAgIGJlZm9yZVN0YXJ0LT5tX25leHQgPSBlbmRSdW47Ci0gICAgZWxz
ZQotICAgICAgICBtX2ZpcnN0UnVuID0gZW5kUnVuOwotCi0gICAgc3RhcnRSdW4tPm1fbmV4dCA9
IGFmdGVyRW5kOwotICAgIGlmICghYWZ0ZXJFbmQpCi0gICAgICAgIG1fbGFzdFJ1biA9IHN0YXJ0
UnVuOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4KIGlubGluZSB2
b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6dXBkYXRlU3RhdHVzTGFzdEZyb21DdXJy
ZW50RGlyZWN0aW9uKFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIGRpckN1cnJlbnQpCiB7CiAgICAg
dXNpbmcgbmFtZXNwYWNlIFdURjo6VW5pY29kZTsKQEAgLTU5Myw3ICs0NTEsNyBAQCBpbmxpbmUg
dm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OnJlb3JkZXJSdW5zRnJvbUxldmVscygp
CiB7CiAgICAgdW5zaWduZWQgY2hhciBsZXZlbExvdyA9IDEyODsKICAgICB1bnNpZ25lZCBjaGFy
IGxldmVsSGlnaCA9IDA7Ci0gICAgZm9yIChSdW4qIHJ1biA9IGZpcnN0UnVuKCk7IHJ1bjsgcnVu
ID0gcnVuLT5uZXh0KCkpIHsKKyAgICBmb3IgKFJ1biogcnVuID0gbV9ydW5zLmZpcnN0UnVuKCk7
IHJ1bjsgcnVuID0gcnVuLT5uZXh0KCkpIHsKICAgICAgICAgbGV2ZWxIaWdoID0gc3RkOjptYXgo
cnVuLT5sZXZlbCgpLCBsZXZlbEhpZ2gpOwogICAgICAgICBsZXZlbExvdyA9IHN0ZDo6bWluKHJ1
bi0+bGV2ZWwoKSwgbGV2ZWxMb3cpOwogICAgIH0KQEAgLTYwNywxMSArNDY1LDExIEBAIGlubGlu
ZSB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6cmVvcmRlclJ1bnNGcm9tTGV2ZWxz
KCkKICAgICBpZiAoIShsZXZlbExvdyAlIDIpKQogICAgICAgICBsZXZlbExvdysrOwogCi0gICAg
dW5zaWduZWQgY291bnQgPSBydW5Db3VudCgpIC0gMTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IG1f
cnVucy5ydW5Db3VudCgpIC0gMTsKIAogICAgIHdoaWxlIChsZXZlbEhpZ2ggPj0gbGV2ZWxMb3cp
IHsKICAgICAgICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgICAgIFJ1biogcnVuID0gZmlyc3RSdW4o
KTsKKyAgICAgICAgUnVuKiBydW4gPSBtX3J1bnMuZmlyc3RSdW4oKTsKICAgICAgICAgd2hpbGUg
KGkgPCBjb3VudCkgewogICAgICAgICAgICAgZm9yICg7aSA8IGNvdW50ICYmIHJ1biAmJiBydW4t
PmxldmVsKCkgPCBsZXZlbEhpZ2g7IGkrKykKICAgICAgICAgICAgICAgICBydW4gPSBydW4tPm5l
eHQoKTsKQEAgLTYxOSw3ICs0NzcsNyBAQCBpbmxpbmUgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0
b3IsIFJ1bj46OnJlb3JkZXJSdW5zRnJvbUxldmVscygpCiAgICAgICAgICAgICBmb3IgKDtpIDw9
IGNvdW50ICYmIHJ1biAmJiBydW4tPmxldmVsKCkgPj0gbGV2ZWxIaWdoOyBpKyspCiAgICAgICAg
ICAgICAgICAgcnVuID0gcnVuLT5uZXh0KCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBlbmQgPSBp
IC0gMTsKLSAgICAgICAgICAgIHJldmVyc2VSdW5zKHN0YXJ0LCBlbmQpOworICAgICAgICAgICAg
bV9ydW5zLnJldmVyc2VSdW5zKHN0YXJ0LCBlbmQpOwogICAgICAgICB9CiAgICAgICAgIGxldmVs
SGlnaC0tOwogICAgIH0KQEAgLTY0Miw5ICs1MDAsOSBAQCB2b2lkIEJpZGlSZXNvbHZlcjxJdGVy
YXRvciwgUnVuPjo6Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGNvbnN0IEl0ZXJhdG9yJiBlbmQsIFZp
cwogICAgICAgICB9CiAgICAgICAgIG1fZGlyZWN0aW9uID0gb3ZlcnJpZGUgPT0gVmlzdWFsTGVm
dFRvUmlnaHRPdmVycmlkZSA/IExlZnRUb1JpZ2h0IDogUmlnaHRUb0xlZnQ7CiAgICAgICAgIGFw
cGVuZFJ1bigpOwotICAgICAgICBtX2xvZ2ljYWxseUxhc3RSdW4gPSBtX2xhc3RSdW47CisgICAg
ICAgIG1fcnVucy5zZXRMb2dpY2FsbHlMYXN0UnVuKG1fcnVucy5sYXN0UnVuKCkpOwogICAgICAg
ICBpZiAob3ZlcnJpZGUgPT0gVmlzdWFsUmlnaHRUb0xlZnRPdmVycmlkZSkKLSAgICAgICAgICAg
IHJldmVyc2VSdW5zKDAsIHJ1bkNvdW50KCkgLSAxKTsKKyAgICAgICAgICAgIG1fcnVucy5yZXZl
cnNlUnVucygwLCBtX3J1bnMucnVuQ291bnQoKSAtIDEpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMDE0LDcgKzg3Miw3IEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+
OjpjcmVhdGVCaWRpUnVuc0ZvckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBtX2xvZ2ljYWxseUxhc3RSdW4gPSBtX2xhc3RSdW47CisgICAgbV9y
dW5zLnNldExvZ2ljYWxseUxhc3RSdW4obV9ydW5zLmxhc3RSdW4oKSk7CiAgICAgcmVvcmRlclJ1
bnNGcm9tTGV2ZWxzKCk7CiAgICAgZW5kT2ZMaW5lID0gSXRlcmF0b3IoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKaW5kZXggOTdkM2U1YjI0NjRhMDIwOGNj
NGVjZDYyZWZjZTQ0ODA1ZjVkYWUxMi4uYzc4OGJmZmFhYjRlN2VlMGFlZTY4Mjk3ZDk3OGM4ODdh
ZDExMmNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJh
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmgKQEAg
LTI3NSw3ICsyNzUsNyBAQCBpbmxpbmUgdm9pZCBJbmxpbmVCaWRpUmVzb2x2ZXI6OmFwcGVuZFJ1
bigpCiAgICAgICAgIGludCBzdGFydCA9IG1fc29yLm1fcG9zOwogICAgICAgICBSZW5kZXJPYmpl
Y3QqIG9iaiA9IG1fc29yLm1fb2JqOwogICAgICAgICB3aGlsZSAob2JqICYmIG9iaiAhPSBtX2Vv
ci5tX29iaiAmJiBvYmogIT0gZW5kT2ZMaW5lLm1fb2JqKSB7Ci0gICAgICAgICAgICBSZW5kZXJC
bG9jazo6YXBwZW5kUnVuc0Zvck9iamVjdChzdGFydCwgb2JqLT5sZW5ndGgoKSwgb2JqLCAqdGhp
cyk7ICAgICAgICAKKyAgICAgICAgICAgIFJlbmRlckJsb2NrOjphcHBlbmRSdW5zRm9yT2JqZWN0
KG1fcnVucywgc3RhcnQsIG9iai0+bGVuZ3RoKCksIG9iaiwgKnRoaXMpOwogICAgICAgICAgICAg
c3RhcnQgPSAwOwogICAgICAgICAgICAgb2JqID0gYmlkaU5leHQobV9zb3Iucm9vdCgpLCBvYmop
OwogICAgICAgICB9CkBAIC0yODcsOSArMjg3LDkgQEAgaW5saW5lIHZvaWQgSW5saW5lQmlkaVJl
c29sdmVyOjphcHBlbmRSdW4oKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gSXQncyBP
SyB0byBhZGQgcnVucyBmb3IgemVyby1sZW5ndGggUmVuZGVyT2JqZWN0cywganVzdCBkb24ndCBt
YWtlIHRoZSBydW4gbGFyZ2VyIHRoYW4gaXQgc2hvdWxkIGJlCiAgICAgICAgICAgICBpbnQgZW5k
ID0gb2JqLT5sZW5ndGgoKSA/IHBvcyArIDEgOiAwOwotICAgICAgICAgICAgUmVuZGVyQmxvY2s6
OmFwcGVuZFJ1bnNGb3JPYmplY3Qoc3RhcnQsIGVuZCwgb2JqLCAqdGhpcyk7CisgICAgICAgICAg
ICBSZW5kZXJCbG9jazo6YXBwZW5kUnVuc0Zvck9iamVjdChtX3J1bnMsIHN0YXJ0LCBlbmQsIG9i
aiwgKnRoaXMpOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIG1fZW9yLmluY3JlbWVu
dCgpOwogICAgICAgICBtX3NvciA9IG1fZW9yOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmgKaW5kZXggNDY0NTQ5ZWFmOGJmNGYyMDY5YTJiMmQ5YWRkNzZkZGQyMmRj
YTE3My4uODRjOGRhMWU4ZTQ1MjZkZjg2ZGRhZWM5MThlMDVhYTQxOWQ5MDBlYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKQEAgLTMyLDYgKzMyLDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBCaWRpQ29udGV4dDsKIGNsYXNzIENvbHVtbkluZm87CiBj
bGFzcyBJbmxpbmVJdGVyYXRvcjsKIGNsYXNzIExheW91dFN0YXRlTWFpbnRhaW5lcjsKQEAgLTQy
LDYgKzQzLDcgQEAgc3RydWN0IEJpZGlSdW47CiBzdHJ1Y3QgUGFpbnRJbmZvOwogCiB0ZW1wbGF0
ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4gY2xhc3MgQmlkaVJlc29sdmVyOwordGVtcGxh
dGUgPGNsYXNzIFJ1bj4gY2xhc3MgQmlkaVJ1bkxpc3Q7CiB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0
b3I+IHN0cnVjdCBNaWRwb2ludFN0YXRlOwogdHlwZWRlZiBCaWRpUmVzb2x2ZXI8SW5saW5lSXRl
cmF0b3IsIEJpZGlSdW4+IElubGluZUJpZGlSZXNvbHZlcjsKIHR5cGVkZWYgTWlkcG9pbnRTdGF0
ZTxJbmxpbmVJdGVyYXRvcj4gTGluZU1pZHBvaW50U3RhdGU7CkBAIC0xNTEsNyArMTUzLDcgQEAg
cHVibGljOgogICAgIFJlbmRlckJsb2NrKiBjcmVhdGVBbm9ueW1vdXNDb2x1bW5TcGFuQmxvY2so
KSBjb25zdDsKICAgICBSZW5kZXJCbG9jayogY3JlYXRlQW5vbnltb3VzQmxvY2tXaXRoU2FtZVR5
cGVBcyhSZW5kZXJCbG9jayogb3RoZXJBbm9ueW1vdXNCbG9jaykgY29uc3Q7CiAgICAgCi0gICAg
c3RhdGljIHZvaWQgYXBwZW5kUnVuc0Zvck9iamVjdChpbnQgc3RhcnQsIGludCBlbmQsIFJlbmRl
ck9iamVjdCosIElubGluZUJpZGlSZXNvbHZlciYpOyAgICAKKyAgICBzdGF0aWMgdm9pZCBhcHBl
bmRSdW5zRm9yT2JqZWN0KEJpZGlSdW5MaXN0PEJpZGlSdW4+JiwgaW50IHN0YXJ0LCBpbnQgZW5k
LCBSZW5kZXJPYmplY3QqLCBJbmxpbmVCaWRpUmVzb2x2ZXImKTsKICAgICBzdGF0aWMgYm9vbCBy
ZXF1aXJlc0xpbmVCb3goY29uc3QgSW5saW5lSXRlcmF0b3ImLCBib29sIGlzTGluZUVtcHR5ID0g
dHJ1ZSwgYm9vbCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkgPSB0cnVlKTsKIAogICAgIENvbHVt
bkluZm8qIGNvbHVtbkluZm8oKSBjb25zdDsKQEAgLTM0OSw3ICszNTEsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBsYXlvdXRCbG9ja0NoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgaW50
JiBtYXhGbG9hdExvZ2ljYWxCb3R0b20pOwogICAgIHZvaWQgbGF5b3V0SW5saW5lQ2hpbGRyZW4o
Ym9vbCByZWxheW91dENoaWxkcmVuLCBpbnQmIHJlcGFpbnRMb2dpY2FsVG9wLCBpbnQmIHJlcGFp
bnRMb2dpY2FsQm90dG9tKTsKLSAgICBCaWRpUnVuKiBoYW5kbGVUcmFpbGluZ1NwYWNlcyhJbmxp
bmVCaWRpUmVzb2x2ZXImKTsKKyAgICBCaWRpUnVuKiBoYW5kbGVUcmFpbGluZ1NwYWNlcyhCaWRp
UnVuTGlzdDxCaWRpUnVuPiYsIEJpZGlDb250ZXh0Kik7CiAKICAgICB2aXJ0dWFsIHZvaWQgYm9y
ZGVyRml0QWRqdXN0KGludCYgeCwgaW50JiB3KSBjb25zdDsgLy8gU2hyaW5rIHRoZSBib3ggaW4g
d2hpY2ggdGhlIGJvcmRlciBwYWludHMgaWYgYm9yZGVyLWZpdCBpcyBzZXQuCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKaW5kZXgg
Yjg4NzBjOTQxNjAxYzA4ZGY0YmRhOWY0ZGE0Y2E2YjI4NTU4ZTRlZi4uNDQzMTRkODhmYjUyMDkx
NDYwYTM1OTFjOTgzODQwNWYzMmFhNjA3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAKQEAgLTExMiw3ICsxMTIsMTIgQEAgc3Rh
dGljIHZvaWQgYWRkTWlkcG9pbnQoTGluZU1pZHBvaW50U3RhdGUmIGxpbmVNaWRwb2ludFN0YXRl
LCBjb25zdCBJbmxpbmVJdGVyYXQKICAgICBtaWRwb2ludHNbbGluZU1pZHBvaW50U3RhdGUubnVt
TWlkcG9pbnRzKytdID0gbWlkcG9pbnQ7CiB9CiAKLXZvaWQgUmVuZGVyQmxvY2s6OmFwcGVuZFJ1
bnNGb3JPYmplY3QoaW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmplY3QqIG9iaiwgSW5saW5l
QmlkaVJlc29sdmVyJiByZXNvbHZlcikKK3N0YXRpYyBpbmxpbmUgQmlkaVJ1biogY3JlYXRlUnVu
KGludCBzdGFydCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0KiBvYmosIElubGluZUJpZGlSZXNvbHZl
ciYgcmVzb2x2ZXIpCit7CisgICAgcmV0dXJuIG5ldyAob2JqLT5yZW5kZXJBcmVuYSgpKSBCaWRp
UnVuKHN0YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZlci5kaXIoKSk7
Cit9CisKK3ZvaWQgUmVuZGVyQmxvY2s6OmFwcGVuZFJ1bnNGb3JPYmplY3QoQmlkaVJ1bkxpc3Q8
QmlkaVJ1bj4mIHJ1bnMsIGludCBzdGFydCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0KiBvYmosIElu
bGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCiB7CiAgICAgaWYgKHN0YXJ0ID4gZW5kIHx8IG9i
ai0+aXNGbG9hdGluZygpIHx8CiAgICAgICAgIChvYmotPmlzUG9zaXRpb25lZCgpICYmICFvYmot
PnN0eWxlKCktPmhhc0F1dG9MZWZ0QW5kUmlnaHQoKSAmJiAhb2JqLT5zdHlsZSgpLT5oYXNBdXRv
VG9wQW5kQm90dG9tKCkgJiYgIW9iai0+Y29udGFpbmVyKCktPmlzUmVuZGVySW5saW5lKCkpKQpA
QCAtMTMyLDEwICsxMzcsMTAgQEAgdm9pZCBSZW5kZXJCbG9jazo6YXBwZW5kUnVuc0Zvck9iamVj
dChpbnQgc3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCogb2JqLCBJbmwKICAgICAgICAgc3Rh
cnQgPSBuZXh0TWlkcG9pbnQubV9wb3M7CiAgICAgICAgIGxpbmVNaWRwb2ludFN0YXRlLmN1cnJl
bnRNaWRwb2ludCsrOwogICAgICAgICBpZiAoc3RhcnQgPCBlbmQpCi0gICAgICAgICAgICByZXR1
cm4gYXBwZW5kUnVuc0Zvck9iamVjdChzdGFydCwgZW5kLCBvYmosIHJlc29sdmVyKTsKKyAgICAg
ICAgICAgIHJldHVybiBhcHBlbmRSdW5zRm9yT2JqZWN0KHJ1bnMsIHN0YXJ0LCBlbmQsIG9iaiwg
cmVzb2x2ZXIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghaGF2ZU5leHRNaWRwb2ludCB8
fCAob2JqICE9IG5leHRNaWRwb2ludC5tX29iaikpIHsKLSAgICAgICAgICAgIHJlc29sdmVyLmFk
ZFJ1bihuZXcgKG9iai0+cmVuZGVyQXJlbmEoKSkgQmlkaVJ1bihzdGFydCwgZW5kLCBvYmosIHJl
c29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpKTsKKyAgICAgICAgICAgIHJ1bnMuYWRk
UnVuKGNyZWF0ZVJ1bihzdGFydCwgZW5kLCBvYmosIHJlc29sdmVyKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTQ2LDEyICsxNTEsMTEgQEAgdm9pZCBSZW5kZXJCbG9j
azo6YXBwZW5kUnVuc0Zvck9iamVjdChpbnQgc3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCog
b2JqLCBJbmwKICAgICAgICAgICAgIGxpbmVNaWRwb2ludFN0YXRlLmN1cnJlbnRNaWRwb2ludCsr
OwogICAgICAgICAgICAgaWYgKG5leHRNaWRwb2ludC5tX3BvcyAhPSBVSU5UX01BWCkgeyAvLyBV
SU5UX01BWCBtZWFucyBzdG9wIGF0IHRoZSBvYmplY3QgYW5kIGRvbid0IGluY2x1ZGUgYW55IG9m
IGl0LgogICAgICAgICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KG5leHRNaWRwb2ludC5t
X3BvcyArIDEpID4gc3RhcnQpCi0gICAgICAgICAgICAgICAgICAgIHJlc29sdmVyLmFkZFJ1bihu
ZXcgKG9iai0+cmVuZGVyQXJlbmEoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIEJpZGlSdW4o
c3RhcnQsIG5leHRNaWRwb2ludC5tX3BvcyArIDEsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCBy
ZXNvbHZlci5kaXIoKSkpOwotICAgICAgICAgICAgICAgIHJldHVybiBhcHBlbmRSdW5zRm9yT2Jq
ZWN0KG5leHRNaWRwb2ludC5tX3BvcyArIDEsIGVuZCwgb2JqLCByZXNvbHZlcik7CisgICAgICAg
ICAgICAgICAgICAgIHJ1bnMuYWRkUnVuKGNyZWF0ZVJ1bihzdGFydCwgbmV4dE1pZHBvaW50Lm1f
cG9zICsgMSwgb2JqLCByZXNvbHZlcikpOworICAgICAgICAgICAgICAgIHJldHVybiBhcHBlbmRS
dW5zRm9yT2JqZWN0KHJ1bnMsIG5leHRNaWRwb2ludC5tX3BvcyArIDEsIGVuZCwgb2JqLCByZXNv
bHZlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICByZXNvbHZl
ci5hZGRSdW4obmV3IChvYmotPnJlbmRlckFyZW5hKCkpIEJpZGlSdW4oc3RhcnQsIGVuZCwgb2Jq
LCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7CisgICAgICAgICAgIHJ1bnMu
YWRkUnVuKGNyZWF0ZVJ1bihzdGFydCwgZW5kLCBvYmosIHJlc29sdmVyKSk7CiAgICAgfQogfQog
CkBAIC02MDgsOSArNjEyLDkgQEAgc3RhdGljIHZvaWQgc2V0U3RhdGljUG9zaXRpb25zKFJlbmRl
ckJsb2NrKiBibG9jaywgUmVuZGVyQm94KiBjaGlsZCkKICAgICBjaGlsZC0+bGF5ZXIoKS0+c2V0
U3RhdGljQmxvY2tQb3NpdGlvbihibG9ja0hlaWdodCk7CiB9CiAKLXN0YXRpYyBib29sIHJlYWNo
ZWRFbmRPZlRleHRSZW5kZXJlcihJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQorc3RhdGlj
IGJvb2wgcmVhY2hlZEVuZE9mVGV4dFJlbmRlcmVyKGNvbnN0IEJpZGlSdW5MaXN0PEJpZGlSdW4+
JiBiaWRpUnVucykKIHsKLSAgICBCaWRpUnVuKiBydW4gPSByZXNvbHZlci5sb2dpY2FsbHlMYXN0
UnVuKCk7CisgICAgQmlkaVJ1biogcnVuID0gYmlkaVJ1bnMubG9naWNhbGx5TGFzdFJ1bigpOwog
ICAgIGlmICghcnVuKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB1bnNpZ25lZCBpbnQgcG9z
ID0gcnVuLT5zdG9wKCk7CkBAIC02MjksMTQgKzYzMywxNCBAQCBzdGF0aWMgYm9vbCByZWFjaGVk
RW5kT2ZUZXh0UmVuZGVyZXIoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAgICAgCi1pbmxpbmUgQmlkaVJ1biogUmVuZGVyQmxvY2s6OmhhbmRsZVRy
YWlsaW5nU3BhY2VzKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCitpbmxpbmUgQmlkaVJ1
biogUmVuZGVyQmxvY2s6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKEJpZGlSdW5MaXN0PEJpZGlSdW4+
JiBiaWRpUnVucywgQmlkaUNvbnRleHQqIGN1cnJlbnRDb250ZXh0KQogewotICAgIGlmICghcmVz
b2x2ZXIucnVuQ291bnQoKQotICAgICAgICB8fCAhcmVzb2x2ZXIubG9naWNhbGx5TGFzdFJ1bigp
LT5tX29iamVjdC0+c3R5bGUoKS0+YnJlYWtPbmx5QWZ0ZXJXaGl0ZVNwYWNlKCkKLSAgICAgICAg
fHwgIXJlc29sdmVyLmxvZ2ljYWxseUxhc3RSdW4oKS0+bV9vYmplY3QtPnN0eWxlKCktPmF1dG9X
cmFwKCkpCisgICAgaWYgKCFiaWRpUnVucy5ydW5Db3VudCgpCisgICAgICAgIHx8ICFiaWRpUnVu
cy5sb2dpY2FsbHlMYXN0UnVuKCktPm1fb2JqZWN0LT5zdHlsZSgpLT5icmVha09ubHlBZnRlcldo
aXRlU3BhY2UoKQorICAgICAgICB8fCAhYmlkaVJ1bnMubG9naWNhbGx5TGFzdFJ1bigpLT5tX29i
amVjdC0+c3R5bGUoKS0+YXV0b1dyYXAoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBCaWRp
UnVuKiB0cmFpbGluZ1NwYWNlUnVuID0gcmVzb2x2ZXIubG9naWNhbGx5TGFzdFJ1bigpOworICAg
IEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4gPSBiaWRpUnVucy5sb2dpY2FsbHlMYXN0UnVuKCk7
CiAgICAgUmVuZGVyT2JqZWN0KiBsYXN0T2JqZWN0ID0gdHJhaWxpbmdTcGFjZVJ1bi0+bV9vYmpl
Y3Q7CiAgICAgaWYgKCFsYXN0T2JqZWN0LT5pc1RleHQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBA
IC02NTQsMTggKzY1OCwxOCBAQCBpbmxpbmUgQmlkaVJ1biogUmVuZGVyQmxvY2s6OmhhbmRsZVRy
YWlsaW5nU3BhY2VzKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb24gPSBzdHlsZSgpLT5kaXJlY3Rpb24o
KTsKLSAgICBib29sIHNob3VsZFJlb3JkZXIgPSB0cmFpbGluZ1NwYWNlUnVuICE9IChkaXJlY3Rp
b24gPT0gTFRSID8gcmVzb2x2ZXIubGFzdFJ1bigpIDogcmVzb2x2ZXIuZmlyc3RSdW4oKSk7Cisg
ICAgYm9vbCBzaG91bGRSZW9yZGVyID0gdHJhaWxpbmdTcGFjZVJ1biAhPSAoZGlyZWN0aW9uID09
IExUUiA/IGJpZGlSdW5zLmxhc3RSdW4oKSA6IGJpZGlSdW5zLmZpcnN0UnVuKCkpOwogICAgIGlm
IChmaXJzdFNwYWNlICE9IHRyYWlsaW5nU3BhY2VSdW4tPnN0YXJ0KCkpIHsKLSAgICAgICAgQmlk
aUNvbnRleHQqIGJhc2VDb250ZXh0ID0gcmVzb2x2ZXIuY29udGV4dCgpOworICAgICAgICBCaWRp
Q29udGV4dCogYmFzZUNvbnRleHQgPSBjdXJyZW50Q29udGV4dDsKICAgICAgICAgd2hpbGUgKEJp
ZGlDb250ZXh0KiBwYXJlbnQgPSBiYXNlQ29udGV4dC0+cGFyZW50KCkpCiAgICAgICAgICAgICBi
YXNlQ29udGV4dCA9IHBhcmVudDsKIAogICAgICAgICBCaWRpUnVuKiBuZXdUcmFpbGluZ1J1biA9
IG5ldyAocmVuZGVyQXJlbmEoKSkgQmlkaVJ1bihmaXJzdFNwYWNlLCB0cmFpbGluZ1NwYWNlUnVu
LT5tX3N0b3AsIHRyYWlsaW5nU3BhY2VSdW4tPm1fb2JqZWN0LCBiYXNlQ29udGV4dCwgT3RoZXJO
ZXV0cmFsKTsKICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wID0gZmlyc3RTcGFjZTsK
ICAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpCi0gICAgICAgICAgICByZXNvbHZlci5hZGRS
dW4obmV3VHJhaWxpbmdSdW4pOworICAgICAgICAgICAgYmlkaVJ1bnMuYWRkUnVuKG5ld1RyYWls
aW5nUnVuKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmVzb2x2ZXIucHJlcGVuZFJ1bihu
ZXdUcmFpbGluZ1J1bik7CisgICAgICAgICAgICBiaWRpUnVucy5wcmVwZW5kUnVuKG5ld1RyYWls
aW5nUnVuKTsKICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1biA9IG5ld1RyYWlsaW5nUnVuOwogICAg
ICAgICByZXR1cm4gdHJhaWxpbmdTcGFjZVJ1bjsKICAgICB9CkBAIC02NzMsMTAgKzY3NywxMCBA
QCBpbmxpbmUgQmlkaVJ1biogUmVuZGVyQmxvY2s6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKElubGlu
ZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCiAgICAgICAgIHJldHVybiB0cmFpbGluZ1NwYWNlUnVu
OwogCiAgICAgaWYgKGRpcmVjdGlvbiA9PSBMVFIpIHsKLSAgICAgICAgcmVzb2x2ZXIubW92ZVJ1
blRvRW5kKHRyYWlsaW5nU3BhY2VSdW4pOworICAgICAgICBiaWRpUnVucy5tb3ZlUnVuVG9FbmQo
dHJhaWxpbmdTcGFjZVJ1bik7CiAgICAgICAgIHRyYWlsaW5nU3BhY2VSdW4tPm1fbGV2ZWwgPSAw
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlc29sdmVyLm1vdmVSdW5Ub0JlZ2lubmluZyh0cmFp
bGluZ1NwYWNlUnVuKTsKKyAgICAgICAgYmlkaVJ1bnMubW92ZVJ1blRvQmVnaW5uaW5nKHRyYWls
aW5nU3BhY2VSdW4pOwogICAgICAgICB0cmFpbGluZ1NwYWNlUnVuLT5tX2xldmVsID0gMTsKICAg
ICB9CiAgICAgcmV0dXJuIHRyYWlsaW5nU3BhY2VSdW47CkBAIC04MzksNyArODQzLDEwIEBAIHZv
aWQgUmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgaW50JiByZXBhaW50TG9naWNhCiAgICAgICAgICAgICBGbG9hdGluZ09iamVjdCogbGFzdEZs
b2F0RnJvbVByZXZpb3VzTGluZSA9IChtX2Zsb2F0aW5nT2JqZWN0cyAmJiAhbV9mbG9hdGluZ09i
amVjdHMtPnNldCgpLmlzRW1wdHkoKSkgPyBtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCkubGFzdCgp
IDogMDsKICAgICAgICAgICAgIGVuZCA9IGZpbmROZXh0TGluZUJyZWFrKHJlc29sdmVyLCBmaXJz
dExpbmUsIGlzTGluZUVtcHR5LCBsaW5lQnJlYWtJdGVyYXRvckluZm8sIHByZXZpb3VzTGluZUJy
b2tlQ2xlYW5seSwgaHlwaGVuYXRlZCwgJmNsZWFyLCBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5l
LCBwb3NpdGlvbmVkT2JqZWN0cyk7CiAgICAgICAgICAgICBpZiAocmVzb2x2ZXIucG9zaXRpb24o
KS5hdEVuZCgpKSB7Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZXIuZGVsZXRlUnVucygpOworICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgYmUgY3JlYXRpbmcgYW55IHJ1bnMg
aW4gZmluZE5leHRMaW5lQnJlYWsgdG8gYmVnaW4gd2l0aCEKKyAgICAgICAgICAgICAgICAvLyBP
bmNlIEJpZGlSdW5MaXN0IGlzIHNlcGFyYXRlZCBmcm9tIEJpZGlSZXNvbHZlciB0aGlzIHdpbGwg
bm90IGJlIG5lZWRlZC4KKyAgICAgICAgICAgICAgICByZXNvbHZlci5ydW5zKCkuZGVsZXRlUnVu
cygpOworICAgICAgICAgICAgICAgIHJlc29sdmVyLm1hcmtDdXJyZW50UnVuRW1wdHkoKTsgLy8g
RklYTUU6IFRoaXMgY2FuIHByb2JhYmx5IGJlIHJlcGxhY2VkIGJ5IGFuIEFTU0VSVCAob3IganVz
dCByZW1vdmVkKS4KICAgICAgICAgICAgICAgICBjaGVja0ZvckZsb2F0c0Zyb21MYXN0TGluZSA9
IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC04NTAsMTAg
Kzg1NywxMiBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRJbmxpbmVDaGlsZHJlbihib29sIHJl
bGF5b3V0Q2hpbGRyZW4sIGludCYgcmVwYWludExvZ2ljYQogICAgICAgICAgICAgICAgICAgICBs
YXN0Um9vdEJveCgpLT5zZXRMaW5lQnJlYWtJbmZvKGVuZC5tX29iaiwgZW5kLm1fcG9zLCByZXNv
bHZlci5zdGF0dXMoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFZp
c3VhbERpcmVjdGlvbk92ZXJyaWRlIG92ZXJyaWRlID0gKHN0eWxlKCktPnZpc3VhbGx5T3JkZXJl
ZCgpID8gKHN0eWxlKCktPmRpcmVjdGlvbigpID09IExUUiA/IFZpc3VhbExlZnRUb1JpZ2h0T3Zl
cnJpZGUgOiBWaXN1YWxSaWdodFRvTGVmdE92ZXJyaWRlKSA6IE5vVmlzdWFsT3ZlcnJpZGUpOwor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG93bmVyc2hpcCBpcyByZXZlcnNlZC4gV2Ug
c2hvdWxkIG93biB0aGUgQmlkaVJ1bkxpc3QgYW5kIHBhc3MgaXQgdG8gY3JlYXRlQmlkaVJ1bnNG
b3JMaW5lLgorICAgICAgICAgICAgICAgIEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBiaWRpUnVucyA9
IHJlc29sdmVyLnJ1bnMoKTsKICAgICAgICAgICAgICAgICByZXNvbHZlci5jcmVhdGVCaWRpUnVu
c0ZvckxpbmUoZW5kLCBvdmVycmlkZSwgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKICAgICAg
ICAgICAgICAgICBBU1NFUlQocmVzb2x2ZXIucG9zaXRpb24oKSA9PSBlbmQpOwogCi0gICAgICAg
ICAgICAgICAgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1biA9ICFwcmV2aW91c0xpbmVCcm9rZUNs
ZWFubHkgPyBoYW5kbGVUcmFpbGluZ1NwYWNlcyhyZXNvbHZlcikgOiAwOworICAgICAgICAgICAg
ICAgIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4gPSAhcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5
ID8gaGFuZGxlVHJhaWxpbmdTcGFjZXMoYmlkaVJ1bnMsIHJlc29sdmVyLmNvbnRleHQoKSkgOiAw
OwogCiAgICAgICAgICAgICAgICAgLy8gTm93IHRoYXQgdGhlIHJ1bnMgaGF2ZSBiZWVuIG9yZGVy
ZWQsIHdlIGNyZWF0ZSB0aGUgbGluZSBib3hlcy4KICAgICAgICAgICAgICAgICAvLyBBdCB0aGUg
c2FtZSB0aW1lIHdlIGZpZ3VyZSBvdXQgd2hlcmUgYm9yZGVyL3BhZGRpbmcvbWFyZ2luIHNob3Vs
ZCBiZSBhcHBsaWVkIGZvcgpAQCAtODYxLDExICs4NzAsMTIgQEAgdm9pZCBSZW5kZXJCbG9jazo6
bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBpbnQmIHJlcGFpbnRM
b2dpY2EKIAogICAgICAgICAgICAgICAgIFJvb3RJbmxpbmVCb3gqIGxpbmVCb3ggPSAwOwogICAg
ICAgICAgICAgICAgIGludCBvbGRMb2dpY2FsSGVpZ2h0ID0gbG9naWNhbEhlaWdodCgpOwotICAg
ICAgICAgICAgICAgIGlmIChyZXNvbHZlci5ydW5Db3VudCgpKSB7CisgICAgICAgICAgICAgICAg
aWYgKGJpZGlSdW5zLnJ1bkNvdW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGh5cGhl
bmF0ZWQpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlci5sb2dpY2FsbHlMYXN0UnVu
KCktPm1faGFzSHlwaGVuID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgYm9vbCBsYXN0TGlu
ZSA9IGVuZC5tX29iaiAmJiBlbmQubV9vYmotPmlzVGV4dCgpID8gcmVhY2hlZEVuZE9mVGV4dFJl
bmRlcmVyKHJlc29sdmVyKSA6ICFlbmQubV9vYmo7Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVC
b3ggPSBjb25zdHJ1Y3RMaW5lKHJlc29sdmVyLnJ1bkNvdW50KCksIHJlc29sdmVyLmZpcnN0UnVu
KCksIHJlc29sdmVyLmxhc3RSdW4oKSwgZmlyc3RMaW5lLCBsYXN0TGluZSwgZW5kLm1fb2JqICYm
ICFlbmQubV9wb3MgPyBlbmQubV9vYmogOiAwLCByZXNvbHZlci5sb2dpY2FsbHlMYXN0UnVuKCkt
Pm1fb2JqZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJpZGlSdW5zLmxvZ2ljYWxseUxh
c3RSdW4oKS0+bV9oYXNIeXBoZW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBib29sIGxh
c3RMaW5lID0gZW5kLm1fb2JqICYmIGVuZC5tX29iai0+aXNUZXh0KCkgPyByZWFjaGVkRW5kT2ZU
ZXh0UmVuZGVyZXIoYmlkaVJ1bnMpIDogIWVuZC5tX29iajsKKyAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IENsZWFybHkgY29uc3RydWN0TGluZSBzaG91bGQganVzdCB0YWtlIGEgYmlkaVJ1
bnMgb2JqZWN0LgorICAgICAgICAgICAgICAgICAgICBsaW5lQm94ID0gY29uc3RydWN0TGluZShi
aWRpUnVucy5ydW5Db3VudCgpLCBiaWRpUnVucy5maXJzdFJ1bigpLCBiaWRpUnVucy5sYXN0UnVu
KCksIGZpcnN0TGluZSwgbGFzdExpbmUsIGVuZC5tX29iaiAmJiAhZW5kLm1fcG9zID8gZW5kLm1f
b2JqIDogMCwgYmlkaVJ1bnMubG9naWNhbGx5TGFzdFJ1bigpLT5tX29iamVjdCk7CiAgICAgICAg
ICAgICAgICAgICAgIGlmIChsaW5lQm94KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBsaW5l
Qm94LT5zZXRFbmRzV2l0aEJyZWFrKHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CiAKQEAgLTg3
OSwxMCArODg5LDEwIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKGJv
b2wgcmVsYXlvdXRDaGlsZHJlbiwgaW50JiByZXBhaW50TG9naWNhCiAgICAgICAgICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm93IHdlIHBvc2l0aW9uIGFsbCBvZiBv
dXIgdGV4dCBydW5zIGhvcml6b250YWxseS4KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
aXNTVkdSb290SW5saW5lQm94KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVJ
bmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKGxpbmVCb3gsIGZpcnN0TGluZSwgcmVzb2x2
ZXIuZmlyc3RSdW4oKSwgdHJhaWxpbmdTcGFjZVJ1biwgZW5kLmF0RW5kKCksIHRleHRCb3hEYXRh
TWFwLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbXB1dGVJbmxpbmVEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKGxpbmVCb3gsIGZpcnN0TGlu
ZSwgYmlkaVJ1bnMuZmlyc3RSdW4oKSwgdHJhaWxpbmdTcGFjZVJ1biwgZW5kLmF0RW5kKCksIHRl
eHRCb3hEYXRhTWFwLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUpOwogCiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyBOb3cgcG9zaXRpb24gb3VyIHRleHQgcnVucyB2ZXJ0aWNhbGx5LgotICAgICAg
ICAgICAgICAgICAgICAgICAgY29tcHV0ZUJsb2NrRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShs
aW5lQm94LCByZXNvbHZlci5maXJzdFJ1bigpLCB0ZXh0Qm94RGF0YU1hcCwgdmVydGljYWxQb3Np
dGlvbkNhY2hlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVCbG9ja0RpcmVjdGlv
blBvc2l0aW9uc0ZvckxpbmUobGluZUJveCwgYmlkaVJ1bnMuZmlyc3RSdW4oKSwgdGV4dEJveERh
dGFNYXAsIHZlcnRpY2FsUG9zaXRpb25DYWNoZSk7CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgICAg
ICAgICAgICAgICAgICAgICAgLy8gU1ZHIHRleHQgbGF5b3V0IGNvZGUgY29tcHV0ZXMgdmVydGlj
YWwgJiBob3Jpem9udGFsIHBvc2l0aW9ucyBvbiBpdHMgb3duLgpAQCAtOTA3LDcgKzkxNyw3IEBA
IHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGls
ZHJlbiwgaW50JiByZXBhaW50TG9naWNhCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICByZXNvbHZlci5kZWxldGVSdW5zKCk7CisgICAg
ICAgICAgICAgICAgYmlkaVJ1bnMuZGVsZXRlUnVucygpOwogCiAgICAgICAgICAgICAgICAgaWYg
KGxpbmVCb3gpIHsKICAgICAgICAgICAgICAgICAgICAgbGluZUJveC0+c2V0TGluZUJyZWFrSW5m
byhlbmQubV9vYmosIGVuZC5tX3BvcywgcmVzb2x2ZXIuc3RhdHVzKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88081</attachid>
            <date>2011-04-04 10:58:23 -0700</date>
            <delta_ts>2011-04-04 12:06:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57764-20110404205817.patch</filename>
            <type>text/plain</type>
            <size>36169</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4MjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZmJkMTI5YjJmYTZlNGVm
ZDBjOWU2NmM0MWRmMWE2MDMzMGNjNTNkLi4zOGU5OTc5ZjE5MzQwYjE3NGZkYzhiNTI1YjI2NmVh
NGM4ZWM3MWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTEtMDQtMDQgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNwbGl0IHJ1biBzdG9yYWdlIG91dCBmcm9tIEJpZGlSZXNvbHZl
ciBpbnRvIGEgbmV3IEJpZGlSdW5MaXN0IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Nzc2NAorCisgICAgICAgIFBhcnQgb2Ygd2hhdCBtYWtl
cyBCaWRpUmVzb2x2ZXIgYW5kIElubGluZUl0ZXJhdG9yIHNvIGRpZmZpY3VsdCB0byB1bmRlcnN0
YW5kCisgICAgICAgIChhbmQgYnVnIDUwOTEyIHNvIGRpZmZpY3VsdCB0byBmaXgpIGlzIHRoYXQg
QmlkaVJlc29sdmVyIGlzIGJvdGggYSBzdGF0ZSBtYWNoaW5lCisgICAgICAgIGZvciB0aGUgVW5p
Y29kZSBCaWRpIEFsZ29yaXRobSAoVUJBKSBhcyB3ZWxsIGFzIHN0b3JhZ2UgZm9yIHRoZSByZXN1
bHRpbmcKKyAgICAgICAgQmlkaVJ1bnMgZnJvbSB0aGUgYWxnb3JpdGhtLiAgVGhpcyBwYXRjaCBi
cmVha3MgdGhlIHN0b3JhZ2UgYXNwZWN0IG9mZgorICAgICAgICBpbnRvIGl0cyBvd24gY2xhc3Mg
QmlkaVJ1bkxpc3QuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBvbmx5IGEgc3RhcnQuICBJdCBk
b2VzIG5vdCBhY3R1YWxseSBmaXggdGhlIHByb2JsZW1hdGljIG93bmVyc2hpcAorICAgICAgICBy
ZWxhdGlvbnNoaXAsIGJ1dCBpdCBkb2VzIG1ha2UgaXQgcG9zc2libGUgdG8gZml4IHN1Y2ggaW4g
YSBzZWNvbmQgcGF0Y2guCisKKyAgICAgICAgVGhlIHJ1biBwb2ludGVycyBhbmQgYWRkUnVuL3By
ZXBlbmRSdW4sIGV0Yy4gd2VyZSBhbHJlYWR5IGEgdGlnaHRseSBjb3VwbGVkCisgICAgICAgIGxv
Z2ljYWwgc3Vic2V0IG9mIHRoZSBCaWRpUmVzb2x2ZXIgY2xhc3MsIHNvIG1vdmluZyB0aGVtIGlu
dG8gdGhlaXIgb3duIGNsYXNzCisgICAgICAgIHdhcyBib3RoIG9idmlvdXMgYW5kIGVhc3kuICBU
aGUgb25seSBwaWVjZSBvZiBsb2dpYyBJIGhhZCB0byBtb3ZlIHdhcyB0aGF0CisgICAgICAgIGRl
bGV0ZVJ1bnMoKSBoYWQgYSBzaWRlLWVmZmVjdCBvZiBzZXR0aW5nIHRoZSBtX2VtcHR5UnVuIGJp
dCBvbiB0aGUgcmVzb2x2ZXIuCisKKyAgICAgICAgSSBiZWxpZXZlIHRoaXMgZGVsZXRlUnVucyBz
aWRlLWVmZmVjdCB3YXMgb25seSBldmVyIHVzZWQgZm9yIG9uZSBwbGFjZQorICAgICAgICAocmln
aHQgYWZ0ZXIgZmluZE5leHRMaW5lQnJlYWspIGFuZCB0aGF0IGl0J3Mgb25seSBuZWVkZWQgYmVj
YXVzZQorICAgICAgICBmaW5kTmV4dExpbmVCcmVhayBjYW4gc29tZXRpbWVzIGNyZWF0ZSBiaWRp
IHJ1bnMuICBSdW4gY3JlYXRpb24gYXBwZWFycyB0byBiZQorICAgICAgICBhbiB1bmludGVudGlv
bmFsIHNpZGUtZWZmZWN0IG9mIGhvdyBJbmxpbmVJdGVyYXRvciBjYWxscyB0aHJvdWdoIHRvIEJp
ZGlSZXNvbHZlcgorICAgICAgICBhcyBwYXJ0IG9mIGJpZGlOZXh0IGFuZCBub3QgYSBkZXNpcmVk
IGVmZmVjdCBvZiB0aGUgY29kZS4gIEkgaGF2ZSBhZGRlZCB0aGUgY2FsbAorICAgICAgICB0byBt
YXJrQ3VycmVudFJ1bkVtcHR5IHRvIGJvdGggcGxhY2VzIGRlbGV0ZVJ1bnMgd2FzIGNhbGxlZCAo
d2hlcmUgdGhlIHJlc29sdmVyCisgICAgICAgIGNvdWxkIGdldCByZS11c2VkKSBhcyBhIHNhZmV0
eSBwcmVjYXV0aW9uLiAgV2UgY291bGQgcmVwbGFjZSBib3RoIHdpdGggQVNTRVJUcworICAgICAg
ICBpbiBhIGxhdGVyIHBhdGNoLgorCisgICAgICAgIEkgc3VzcGVjdCB0aGVyZSBtYXkgYmUgYSBz
bWFsbCBwZXJmb3JtYW5jZSB3aW4gZnJvbSBmdXJ0aGVyIHJlZmFjdG9yaW5nIHNvIHRoYXQKKyAg
ICAgICAgZmluZE5leHRMaW5lQnJlYWsgZG9lcyBub3QgbmVlZCB0byBjcmVhdGUgQmlkaVJ1bnMu
CisKKyAgICAgICAgQXMgSSBjb21tZW50ZWQgaW4gdGhlIGNvZGUsIGNhbGxlcnMgc2hvdWxkIG93
biB0aGVpciBvd24gQmlkaVJ1bkxpc3Qgd2hpY2ggdGhleQorICAgICAgICBwYXNzIHRvIEJpZGlS
ZXNvbHZlcjo6Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lLiAgSSBhdHRlbXB0ZWQgdG8gaW1wbGVtZW50
IHRoYXQgaW4KKyAgICAgICAgYW4gZWFybGllciB2ZXJzaW9uIG9mIHRoaXMgcGF0Y2gsIGJ1dCBp
dCB3YXMgdG9vIGNvbXBsaWNhdGVkIHdpdGggdGhlIGN1cnJlbnQKKyAgICAgICAgdHdpc3RlZCBk
ZXBlbmRlbmNpZXMgYmV0d2VlbiBJbmxpbmVJdGVyYXRvci9iaWRpTmV4dCBhbmQgSW5saW5lQmlk
aVJlc29sdmVyLgorICAgICAgICByYWlzZS9sb3dlckV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwgYXJl
IGNhbGxlZCB1bmNvbmRpdGlvbmFsbHkKKyAgICAgICAgZnJvbSBjb21taXRFeHBsaWNpdEVtYmVk
ZGluZyAod2hpY2ggaXMgY2FsbGVkIGJ5IGJpZGlOZXh0KSBhbmQgZXhwZWN0IHRvIGhhdmUKKyAg
ICAgICAgYWNjZXNzIHRvIGEgcnVucyBsaXN0IGV2ZW4gaW4gY2FzZXMgd2hlcmUgd2UgZG9uJ3Qg
d2FudCBhbnkgcnVucyAoZmluZE5leHRMaW5lQnJlYWspLgorCisgICAgICAgIEkgYWxzbyBjbGVh
bmVkIHVwIHNvbWUgb2YgdGhlIGNhbGxlcnMgdG8gcGFzcyBhcm91bmQgQmlkaVJ1bkxpc3Qgb2Jq
ZWN0cyBpbnN0ZWFkCisgICAgICAgIG9mIElubGluZUJpZGlSZXNvbHZlcnMgbm93IHRoYXQgdGhl
eSdyZSBzZXBhcmF0ZSBvYmplY3RzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpCaWRpUmVzb2x2ZXI6OkJpZGlSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpC
aWRpUmVzb2x2ZXI6OnJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjptYXJr
Q3VycmVudFJ1bkVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6Ojo6YXBwZW5kUnVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ojo6bG93ZXJFeHBsaWNpdEVtYmVkZGluZ0xldmVsKToKKyAgICAgICAgKFdl
YkNvcmU6Ojo6cmFpc2VFeHBsaWNpdEVtYmVkZGluZ0xldmVsKToKKyAgICAgICAgKFdlYkNvcmU6
Ojo6cmVvcmRlclJ1bnNGcm9tTGV2ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6Y3JlYXRlQmlk
aVJ1bnNGb3JMaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUJpZGlSZXNvbHZlcjo6YXBwZW5kUnVuKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJ1bik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YXBwZW5kUnVuc0Zvck9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZWFjaGVkRW5kT2ZUZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpsYXlvdXRJbmxpbmVDaGlsZHJlbik6CisKIDIwMTEtMDQtMDMgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA5NjBiZTllNTg1OTE5ZjNmY2Q0NjI5ZGM1NDliNGY5
ZWVhMDY0NDQ2Li5hYmYzMDMwMThkYWU4ZWJjMDFkMzRkYWNlYjhmZjczNmIxMWU4NzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjY3Nyw2ICsyNjc3LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0JpZGlSdW5MaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvSHlw
aGVuYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9u
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IGZkNDNlNzlkNGZmNWNmYzdjYzJhMGMwMDgzNDQ2ZTZmOTdkZjY3NDEu
LjRiOTIyYTA4OTk4MzRjODEzOGIwNzcxNDdiNzJlNzQ4ZTZmZWE0MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTkwMCw2ICs5MDAsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24u
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9CYXNlNjQuaCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vdGV4dC9CaWRpUnVuTGlzdC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0
L0JpZGlDb250ZXh0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVy
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KaW5kZXggNGMyZTE5ZjAwZjNjNzIzNzc5N2UxNzBiZTE5NDNkNzdkMjhmZWU0ZS4uNTlmYjhi
MGIxZTBkM2M1NzZlNzZjZDBkM2ZiMzQwYzVhMTJkMmE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTE5
NjEsNiArMTk2MSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL0tpbGxSaW5nLmggXAog
ICAgIHBsYXRmb3JtL0tVUkwuaCBcCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmggXAorICAgIHBsYXRm
b3JtL3RleHQvQmlkaVJ1bkxpc3QuaCBcCiAgICAgcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmgg
XAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaCBcCiAgICAgcGxhdGZvcm0v
dGV4dC9UZXh0Q2hlY2tpbmcuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDU3MGQxZmE2MTU2NjFhZWNmNTk3ZWIyMjEzMDQzNmMxMDk2NmUx
ODQuLjFjNzBhOTJjNTA3NTMyM2ZmM2VkYmEwMjEzODUxNmRkMTljZTQ0YWUgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zMDQ4MSw2ICszMDQ4
MSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cdGV4dFxCaWRpUnVuTGlzdC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxIeXBoZW5hdGlv
bi5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM3OTdjMzFkNjc1M2RkNjc1Yzc1NzNmMWM0
YzdmZTlkMjhmODgxNTAuLjUzNWU4MmY1NGFjYThkYzg5YzQ5Nzg5ZjliNTY5ZTY2ZDQzMTgzMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTM2MzQsNiArMzYzNCw3IEBACiAJCUE4QzIyODBFMTFENEE1OTcwMEQ1QTdEMyAvKiBE
b2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEMyMjgwRDExRDRBNTk3MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwICov
OyB9OwogCQlBOEMyMjhBMTExRDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBh
cnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThD
MjI4OUYxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCAqLzsg
fTsKIAkJQThDMjI4QTIxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJz
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThD
MjI4QTAxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwICov
OyB9OworCQlBOEM0MDI5MzEzNDhCMjIyMDA2M0YxRTUgLyogQmlkaVJ1bkxpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzQwMjkyMTM0OEIyMjIw
MDYzRjFFNSAvKiBCaWRpUnVuTGlzdC5oICovOyB9OwogCQlBOEM0QTdGRDA5RDU2MzI3MDAwM0FD
OEQgLyogU3R5bGVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThDNEE3RUIwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOEM0QTdG
RTA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEM0QTdFQzA5RDU2MzI3MDAwM0FDOEQgLyog
U3R5bGVkRWxlbWVudC5jcHAgKi87IH07CiAJCUE4QzRBODAwMDlENTYzMjcwMDAzQUM4RCAvKiBO
b2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QzRBN0VFMDlENTYzMjcwMDAzQUM4RCAvKiBOb2RlLmNwcCAqLzsgfTsKQEAgLTEwMDEzLDYgKzEw
MDE0LDcgQEAKIAkJQThDMjI4MEQxMUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFyc2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50UGFyc2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDMjI4OUYxMUQ1NzIyRTAwRDVBN0Qz
IC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOEMyMjhBMDExRDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVu
dFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWNvZGVk
RGF0YURvY3VtZW50UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThD
NDAyOTIxMzQ4QjIyMjAwNjNGMUU1IC8qIEJpZGlSdW5MaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJpZGlSdW5MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE4QzRBN0VCMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4QzRBN0VDMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZWRFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDNEE3RUUwOUQ1NjMyNzAwMDNB
QzhEIC8qIE5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5v
ZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc3OTUsNiArMTc3OTcsNyBA
QAogCQkJCUIyQzNEOUYyMEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpQ29udGV4dC5jcHAgKi8sCiAJ
CQkJQjJDM0Q5RjMwRDAwNkMxRDAwRUY2RjI2IC8qIEJpZGlDb250ZXh0LmggKi8sCiAJCQkJQjJD
M0Q5RjQwRDAwNkMxRDAwRUY2RjI2IC8qIEJpZGlSZXNvbHZlci5oICovLAorCQkJCUE4QzQwMjky
MTM0OEIyMjIwMDYzRjFFNSAvKiBCaWRpUnVuTGlzdC5oICovLAogCQkJCTM3NUNEMjMxMTE5RDQz
QzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5oICovLAogCQkJCTg5QjVFQTlGMTFFODAwM0QwMEYy
MzY3RSAvKiBMaW5lRW5kaW5nLmNwcCAqLywKIAkJCQk4OUI1RUFBMDExRTgwMDNEMDBGMjM2N0Ug
LyogTGluZUVuZGluZy5oICovLApAQCAtMTk4MTYsNiArMTk4MTksNyBAQAogCQkJCUIyQzNEQTI0
MEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJD
M0RBMjUwRDAwNkMxRDAwRUY2RjI2IC8qIEJpZGlSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNFNzg5ODYxMTIwRTdBNjAwNjBFQ0U1IC8qIEJpZGlSdW4uaCBpbiBIZWFkZXJzICovLAor
CQkJCUE4QzQwMjkzMTM0OEIyMjIwMDYzRjFFNSAvKiBCaWRpUnVuTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTM4MTkyMDUwRjg3RTFFQzAwRDUzNTJBIC8qIEJpbmFyeVByb3BlcnR5TGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTYyMkE4RkIxMjJDNDRBNjAwQTc4NUIzIC8qIEJpbmRpbmdT
ZWN1cml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTYyMkE4RkQxMjJDNDRBNjAwQTc4NUIzIC8q
IEJpbmRpbmdTZWN1cml0eUJhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjEyMDIsNyArMjEyMDYs
NiBAQAogCQkJCUI4ODVFOEQ1MTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGNzA3QTlBMTFFRjY3OTQwMEFDREE2
OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjNE
NEM0NzkxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQkyMjc3Nzc2MDEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQjk1QzBFOTczMzA4MDAy
NjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzMzNUJGOTEy
RTA3REMzMDBEMzMwMTEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGM0Y1Q0YxMTEyRUQ4MUE4MDA4NEM1NjkgLyogSW5zcGVjdG9yQ29uc29sZUluc3RydW1l
bnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTIxNSw2ICsyMTIxOCw3IEBACiAJCQkJN0Ey
NDU4N0MxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QTc0RUNCQjEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYwNjE3NDBGNUYwMEFDMDBBMDdFQUMgLyogSW5z
cGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyMjc3Nzc2MDEz
NDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGMzQ0QzcxNDExMjVCODJDMDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNDRDNzUzMTEyOTREOUQwMEYyNkVFRSAvKiBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTBFNzcwRjEw
QzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IGQ3NTM4Mjg3NWNjZTU3MWRmYWVjYjJiNWU3NGI1NzVmMzZjNmZjNTkuLjI1
YTQ2NTQzNDNkZDEwMWE1YmJlNjQ0ZWExZmMxZDhhYzAyYzkwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMzk3
LDcgKzM5NywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRgogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiBUaGlzIG93bmVyc2hp
cCBzaG91bGQgYmUgcmV2ZXJzZWQuIFdlIHNob3VsZCBwYXNzIEJpZGlSdW5MaXN0CisgICAgLy8g
dG8gQmlkaVJlc29sdmVyIGluIGNyZWF0ZUJpZGlSdW5zRm9yTGluZS4KICAgICBCaWRpUmVzb2x2
ZXI8VGV4dFJ1bkl0ZXJhdG9yLCBCaWRpQ2hhcmFjdGVyUnVuPiBiaWRpUmVzb2x2ZXI7CisgICAg
QmlkaVJ1bkxpc3Q8QmlkaUNoYXJhY3RlclJ1bj4mIGJpZGlSdW5zID0gYmlkaVJlc29sdmVyLnJ1
bnMoKTsKKwogICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIHBhcmFncmFwaERpcmVjdGlvbiA9
IHJ1bi5sdHIoKSA/IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQgOiBXVEY6OlVuaWNvZGU6OlJp
Z2h0VG9MZWZ0OwogCiAgICAgYmlkaVJlc29sdmVyLnNldFN0YXR1cyhCaWRpU3RhdHVzKHBhcmFn
cmFwaERpcmVjdGlvbiwgcGFyYWdyYXBoRGlyZWN0aW9uLCBwYXJhZ3JhcGhEaXJlY3Rpb24sIEJp
ZGlDb250ZXh0OjpjcmVhdGUocnVuLmx0cigpID8gMCA6IDEsIHBhcmFncmFwaERpcmVjdGlvbiwg
cnVuLmRpcmVjdGlvbmFsT3ZlcnJpZGUoKSkpKTsKQEAgLTQwNSwxMSArNDA5LDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBGCiAgICAgYmlkaVJlc29sdmVyLnNldFBvc2l0aW9uKFRleHRSdW5J
dGVyYXRvcigmcnVuLCAwKSk7CiAgICAgYmlkaVJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGlu
ZShUZXh0UnVuSXRlcmF0b3IoJnJ1biwgcnVuLmxlbmd0aCgpKSk7CiAKLSAgICBpZiAoIWJpZGlS
ZXNvbHZlci5ydW5Db3VudCgpKQorICAgIGlmICghYmlkaVJ1bnMucnVuQ291bnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgRmxvYXRQb2ludCBjdXJyUG9pbnQgPSBwb2ludDsKLSAgICBCaWRp
Q2hhcmFjdGVyUnVuKiBiaWRpUnVuID0gYmlkaVJlc29sdmVyLmZpcnN0UnVuKCk7CisgICAgQmlk
aUNoYXJhY3RlclJ1biogYmlkaVJ1biA9IGJpZGlSdW5zLmZpcnN0UnVuKCk7CiAgICAgd2hpbGUg
KGJpZGlSdW4pIHsKIAogICAgICAgICBUZXh0UnVuIHN1YnJ1biA9IHJ1bjsKQEAgLTQyNSw3ICs0
MjksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRgogICAgICAgICAgICAgY3VyclBvaW50Lm1v
dmUoZm9udC53aWR0aChzdWJydW4pLCAwKTsKICAgICB9CiAKLSAgICBiaWRpUmVzb2x2ZXIuZGVs
ZXRlUnVucygpOworICAgIGJpZGlSdW5zLmRlbGV0ZVJ1bnMoKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdIaWdobGlnaHRGb3JUZXh0KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRl
eHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBoLCBjb25zdCBDb2xvciYg
YmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGludCBmcm9tLCBpbnQgdG8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAppbmRleCA2MWJh
N2VhYzNiNTE3ZjBhYjY2ZGNjYzZiNDUxM2Y0ZjZlMGNhYWU1Li42Yjg5YTYwNzM4NWNlMDE3MDM3
NzgzMDk2MWFlNGYwMDQwM2E1ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0JpZGlSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
QmlkaVJlc29sdmVyLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNkZWZpbmUgQmlkaVJlc29sdmVyX2gK
IAogI2luY2x1ZGUgIkJpZGlDb250ZXh0LmgiCisjaW5jbHVkZSAiQmlkaVJ1bkxpc3QuaCIKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE0Nyw2ICsxNDgsOCBAQCBlbnVtIFZpc3VhbERp
cmVjdGlvbk92ZXJyaWRlIHsKICAgICBWaXN1YWxSaWdodFRvTGVmdE92ZXJyaWRlCiB9OwogCisv
LyBCaWRpUmVzb2x2ZXIgaXMgV2ViS2l0J3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIFVuaWNvZGUg
QmlkaSBBbGdvcml0aG0KKy8vIGh0dHA6Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyOQogdGVtcGxh
dGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+IGNsYXNzIEJpZGlSZXNvbHZlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQmlkaVJlc29sdmVyKTsKIHB1YmxpYzoKQEAgLTE1NCwxMCAr
MTU3LDYgQEAgcHVibGljOgogICAgICAgICA6IG1fZGlyZWN0aW9uKFdURjo6VW5pY29kZTo6T3Ro
ZXJOZXV0cmFsKQogICAgICAgICAsIG1fcmVhY2hlZEVuZE9mTGluZShmYWxzZSkKICAgICAgICAg
LCBtX2VtcHR5UnVuKHRydWUpCi0gICAgICAgICwgbV9maXJzdFJ1bigwKQotICAgICAgICAsIG1f
bGFzdFJ1bigwKQotICAgICAgICAsIG1fbG9naWNhbGx5TGFzdFJ1bigwKQotICAgICAgICAsIG1f
cnVuQ291bnQoMCkKICAgICAgICAgLCBtX2luSXNvbGF0ZShmYWxzZSkKICAgICB7CiAgICAgfQpA
QCAtMTkzLDIyICsxOTIsMTYgQEAgcHVibGljOgogCiAgICAgdm9pZCBjcmVhdGVCaWRpUnVuc0Zv
ckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgPSBOb1Zp
c3VhbE92ZXJyaWRlLCBib29sIGhhcmRMaW5lQnJlYWsgPSBmYWxzZSk7CiAKLSAgICBSdW4qIGZp
cnN0UnVuKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFJ1bjsgfQotICAgIFJ1biogbGFzdFJ1bigp
IGNvbnN0IHsgcmV0dXJuIG1fbGFzdFJ1bjsgfQotICAgIFJ1biogbG9naWNhbGx5TGFzdFJ1bigp
IGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbGx5TGFzdFJ1bjsgfQotICAgIHVuc2lnbmVkIHJ1bkNv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9ydW5Db3VudDsgfQorICAgIEJpZGlSdW5MaXN0PFJ1bj4m
IHJ1bnMoKSB7IHJldHVybiBtX3J1bnM7IH0KIAotICAgIHZvaWQgYWRkUnVuKFJ1biopOwotICAg
IHZvaWQgcHJlcGVuZFJ1bihSdW4qKTsKLQotICAgIHZvaWQgbW92ZVJ1blRvRW5kKFJ1biopOwot
ICAgIHZvaWQgbW92ZVJ1blRvQmVnaW5uaW5nKFJ1biopOwotCi0gICAgdm9pZCBkZWxldGVSdW5z
KCk7CisgICAgLy8gRklYTUU6IFRoaXMgdXNlZCB0byBiZSBwYXJ0IG9mIGRlbGV0ZVJ1bnMoKSBi
dXQgd2FzIGEgbGF5ZXJpbmcgdmlvbGF0aW9uLgorICAgIC8vIEl0J3MgdW5jbGVhciBpZiB0aGlz
IGlzIHN0aWxsIG5lZWRlZC4KKyAgICB2b2lkIG1hcmtDdXJyZW50UnVuRW1wdHkoKSB7IG1fZW1w
dHlSdW4gPSB0cnVlOyB9CiAKIHByb3RlY3RlZDoKKyAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBJ
bmxpbmVCaWRpUmVzb2x2ZXJzIHN1YmNsYXNzaW5nIHRoaXMgbWV0aG9kLCB3ZSBzaG91bGQKKyAg
ICAvLyBwYXNzIGluIHNvbWUgc29ydCBvZiBUcmFpdHMgb2JqZWN0IHdoaWNoIGtub3dzIGhvdyB0
byBjcmVhdGUgcnVucyBmb3IgYXBwZW5kaW5nLgogICAgIHZvaWQgYXBwZW5kUnVuKCk7Ci0gICAg
dm9pZCByZXZlcnNlUnVucyh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKTsKIAogICAgIEl0
ZXJhdG9yIG1fY3VycmVudDsKICAgICAvLyBzb3IgYW5kIGVvciBhcmUgInN0YXJ0IG9mIHJ1biIg
YW5kICJlbmQgb2YgcnVuIiByZXNwZWN0aXZlbHkgYW5kIGNvcnJlcG9uZApAQCAtMjIzLDEwICsy
MTYsMTAgQEAgcHJvdGVjdGVkOgogICAgIEl0ZXJhdG9yIG1fbGFzdEJlZm9yZUVUOyAvLyBCZWZv
cmUgYSBFdXJvcGVhbk51bWJlclRlcm1pbmF0b3IKICAgICBib29sIG1fZW1wdHlSdW47CiAKLSAg
ICBSdW4qIG1fZmlyc3RSdW47Ci0gICAgUnVuKiBtX2xhc3RSdW47Ci0gICAgUnVuKiBtX2xvZ2lj
YWxseUxhc3RSdW47Ci0gICAgdW5zaWduZWQgbV9ydW5Db3VudDsKKyAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgbm90IGJlbG9uZyB0byB0aGUgcmVzb2x2ZXIsIGJ1dCByYXRoZXIgYmUgcGFzc2Vk
CisgICAgLy8gaW50byBjcmVhdGVCaWRpUnVuc0ZvckxpbmUgYnkgdGhlIGNhbGxlci4KKyAgICBC
aWRpUnVuTGlzdDxSdW4+IG1fcnVuczsKKwogICAgIE1pZHBvaW50U3RhdGU8SXRlcmF0b3I+IG1f
bWlkcG9pbnRTdGF0ZTsKIAogICAgIGJvb2wgbV9pbklzb2xhdGU7CkBAIC0yNDMsNzYgKzIzNiw2
IEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4K
LWlubGluZSB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6YWRkUnVuKFJ1biogcnVu
KQotewotICAgIGlmICghbV9maXJzdFJ1bikKLSAgICAgICAgbV9maXJzdFJ1biA9IHJ1bjsKLSAg
ICBlbHNlCi0gICAgICAgIG1fbGFzdFJ1bi0+bV9uZXh0ID0gcnVuOwotICAgIG1fbGFzdFJ1biA9
IHJ1bjsKLSAgICBtX3J1bkNvdW50Kys7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwg
Y2xhc3MgUnVuPgotaW5saW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpwcmVw
ZW5kUnVuKFJ1biogcnVuKQotewotICAgIEFTU0VSVCghcnVuLT5tX25leHQpOwotCi0gICAgaWYg
KCFtX2xhc3RSdW4pCi0gICAgICAgIG1fbGFzdFJ1biA9IHJ1bjsKLSAgICBlbHNlCi0gICAgICAg
IHJ1bi0+bV9uZXh0ID0gbV9maXJzdFJ1bjsKLSAgICBtX2ZpcnN0UnVuID0gcnVuOwotICAgIG1f
cnVuQ291bnQrKzsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+Ci1p
bmxpbmUgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46Om1vdmVSdW5Ub0VuZChSdW4q
IHJ1bikKLXsKLSAgICBBU1NFUlQobV9maXJzdFJ1bik7Ci0gICAgQVNTRVJUKG1fbGFzdFJ1bik7
Ci0gICAgQVNTRVJUKHJ1bi0+bV9uZXh0KTsKLQotICAgIFJ1biogY3VycmVudCA9IDA7Ci0gICAg
UnVuKiBuZXh0ID0gbV9maXJzdFJ1bjsKLSAgICB3aGlsZSAobmV4dCAhPSBydW4pIHsKLSAgICAg
ICAgY3VycmVudCA9IG5leHQ7Ci0gICAgICAgIG5leHQgPSBjdXJyZW50LT5uZXh0KCk7Ci0gICAg
fQotCi0gICAgaWYgKCFjdXJyZW50KQotICAgICAgICBtX2ZpcnN0UnVuID0gcnVuLT5uZXh0KCk7
Ci0gICAgZWxzZQotICAgICAgICBjdXJyZW50LT5tX25leHQgPSBydW4tPm1fbmV4dDsKLQotICAg
IHJ1bi0+bV9uZXh0ID0gMDsKLSAgICBtX2xhc3RSdW4tPm1fbmV4dCA9IHJ1bjsKLSAgICBtX2xh
c3RSdW4gPSBydW47Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xhc3MgUnVuPgot
aW5saW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+Ojptb3ZlUnVuVG9CZWdpbm5p
bmcoUnVuKiBydW4pCi17Ci0gICAgQVNTRVJUKG1fZmlyc3RSdW4pOwotICAgIEFTU0VSVChtX2xh
c3RSdW4pOwotICAgIEFTU0VSVChydW4gIT0gbV9maXJzdFJ1bik7Ci0KLSAgICBSdW4qIGN1cnJl
bnQgPSBtX2ZpcnN0UnVuOwotICAgIFJ1biogbmV4dCA9IGN1cnJlbnQtPm5leHQoKTsKLSAgICB3
aGlsZSAobmV4dCAhPSBydW4pIHsKLSAgICAgICAgY3VycmVudCA9IG5leHQ7Ci0gICAgICAgIG5l
eHQgPSBjdXJyZW50LT5uZXh0KCk7Ci0gICAgfQotCi0gICAgY3VycmVudC0+bV9uZXh0ID0gcnVu
LT5tX25leHQ7Ci0gICAgaWYgKHJ1biA9PSBtX2xhc3RSdW4pCi0gICAgICAgIG1fbGFzdFJ1biA9
IGN1cnJlbnQ7Ci0KLSAgICBydW4tPm1fbmV4dCA9IG1fZmlyc3RSdW47Ci0gICAgbV9maXJzdFJ1
biA9IHJ1bjsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+CiB2b2lk
IEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6YXBwZW5kUnVuKCkKIHsKICAgICBpZiAoIW1f
ZW1wdHlSdW4gJiYgIW1fZW9yLmF0RW5kKCkpIHsKQEAgLTMyNSw3ICsyNDgsNyBAQCB2b2lkIEJp
ZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6YXBwZW5kUnVuKCkKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChlbmRPZmZzZXQgPj0gc3RhcnRPZmZzZXQpCi0gICAgICAgICAgICBhZGRSdW4obmV3
IFJ1bihzdGFydE9mZnNldCwgZW5kT2Zmc2V0ICsgMSwgY29udGV4dCgpLCBtX2RpcmVjdGlvbikp
OworICAgICAgICAgICAgbV9ydW5zLmFkZFJ1bihuZXcgUnVuKHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQgKyAxLCBjb250ZXh0KCksIG1fZGlyZWN0aW9uKSk7CiAKICAgICAgICAgbV9lb3IuaW5jcmVt
ZW50KCk7CiAgICAgICAgIG1fc29yID0gbV9lb3I7CkBAIC0zOTAsOCArMzEzLDEwIEBAIHZvaWQg
QmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+Ojpsb3dlckV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwo
V1RGOjpVbmljb2RlOjpEaXJlCiAgICAgICAgIH0KICAgICAgICAgbV9lb3IgPSBtX2xhc3Q7CiAg
ICAgfQorCiAgICAgYXBwZW5kUnVuKCk7CiAgICAgbV9lbXB0eVJ1biA9IHRydWU7CisKICAgICAv
LyBzb3IgZm9yIHRoZSBuZXcgcnVuIGlzIGRldGVybWluZWQgYnkgdGhlIGhpZ2hlciBsZXZlbCAo
cnVsZSBYMTApCiAgICAgc2V0TGFzdERpcihmcm9tKTsKICAgICBzZXRMYXN0U3Ryb25nRGlyKGZy
b20pOwpAQCAtNDI4LDggKzM1MywxMCBAQCB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVu
Pjo6cmFpc2VFeHBsaWNpdEVtYmVkZGluZ0xldmVsKFdURjo6VW5pY29kZTo6RGlyZQogICAgICAg
ICB9CiAgICAgICAgIG1fZW9yID0gbV9sYXN0OwogICAgIH0KKwogICAgIGFwcGVuZFJ1bigpOwog
ICAgIG1fZW1wdHlSdW4gPSB0cnVlOworCiAgICAgc2V0TGFzdERpcih0byk7CiAgICAgc2V0TGFz
dFN0cm9uZ0Rpcih0byk7CiAgICAgbV9lb3IgPSBJdGVyYXRvcigpOwpAQCAtNDc4LDc1ICs0MDUs
NiBAQCBib29sIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6Y29tbWl0RXhwbGljaXRFbWJl
ZGRpbmcoKQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4KLXZvaWQg
QmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpkZWxldGVSdW5zKCkKLXsKLSAgICBtX2VtcHR5
UnVuID0gdHJ1ZTsKLSAgICBpZiAoIW1fZmlyc3RSdW4pCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJ1biogY3VyciA9IG1fZmlyc3RSdW47Ci0gICAgd2hpbGUgKGN1cnIpIHsKLSAgICAgICAgUnVu
KiBzID0gY3Vyci0+bmV4dCgpOwotICAgICAgICBjdXJyLT5kZXN0cm95KCk7Ci0gICAgICAgIGN1
cnIgPSBzOwotICAgIH0KLQotICAgIG1fZmlyc3RSdW4gPSAwOwotICAgIG1fbGFzdFJ1biA9IDA7
Ci0gICAgbV9ydW5Db3VudCA9IDA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xh
c3MgUnVuPgotdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OnJldmVyc2VSdW5zKHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpCi17Ci0gICAgaWYgKHN0YXJ0ID49IGVuZCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGVuZCA8IG1fcnVuQ291bnQpOwotICAgIAotICAg
IC8vIEdldCB0aGUgaXRlbSBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBydW5zIHRvIHJldmVyc2Ug
YW5kIHB1dCBpdCBpbgotICAgIC8vIHxiZWZvcmVTdGFydHwuICB8Y3Vycnwgc2hvdWxkIHBvaW50
IHRvIHRoZSBmaXJzdCBydW4gdG8gcmV2ZXJzZS4KLSAgICBSdW4qIGN1cnIgPSBtX2ZpcnN0UnVu
OwotICAgIFJ1biogYmVmb3JlU3RhcnQgPSAwOwotICAgIHVuc2lnbmVkIGkgPSAwOwotICAgIHdo
aWxlIChpIDwgc3RhcnQpIHsKLSAgICAgICAgaSsrOwotICAgICAgICBiZWZvcmVTdGFydCA9IGN1
cnI7Ci0gICAgICAgIGN1cnIgPSBjdXJyLT5uZXh0KCk7Ci0gICAgfQotCi0gICAgUnVuKiBzdGFy
dFJ1biA9IGN1cnI7Ci0gICAgd2hpbGUgKGkgPCBlbmQpIHsKLSAgICAgICAgaSsrOwotICAgICAg
ICBjdXJyID0gY3Vyci0+bmV4dCgpOwotICAgIH0KLSAgICBSdW4qIGVuZFJ1biA9IGN1cnI7Ci0g
ICAgUnVuKiBhZnRlckVuZCA9IGN1cnItPm5leHQoKTsKLQotICAgIGkgPSBzdGFydDsKLSAgICBj
dXJyID0gc3RhcnRSdW47Ci0gICAgUnVuKiBuZXdOZXh0ID0gYWZ0ZXJFbmQ7Ci0gICAgd2hpbGUg
KGkgPD0gZW5kKSB7Ci0gICAgICAgIC8vIERvIHRoZSByZXZlcnNhbC4KLSAgICAgICAgUnVuKiBu
ZXh0ID0gY3Vyci0+bmV4dCgpOwotICAgICAgICBjdXJyLT5tX25leHQgPSBuZXdOZXh0OwotICAg
ICAgICBuZXdOZXh0ID0gY3VycjsKLSAgICAgICAgY3VyciA9IG5leHQ7Ci0gICAgICAgIGkrKzsK
LSAgICB9Ci0KLSAgICAvLyBOb3cgaG9vayB1cCBiZWZvcmVTdGFydCBhbmQgYWZ0ZXJFbmQgdG8g
dGhlIHN0YXJ0UnVuIGFuZCBlbmRSdW4uCi0gICAgaWYgKGJlZm9yZVN0YXJ0KQotICAgICAgICBi
ZWZvcmVTdGFydC0+bV9uZXh0ID0gZW5kUnVuOwotICAgIGVsc2UKLSAgICAgICAgbV9maXJzdFJ1
biA9IGVuZFJ1bjsKLQotICAgIHN0YXJ0UnVuLT5tX25leHQgPSBhZnRlckVuZDsKLSAgICBpZiAo
IWFmdGVyRW5kKQotICAgICAgICBtX2xhc3RSdW4gPSBzdGFydFJ1bjsKLX0KLQotdGVtcGxhdGUg
PGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+CiBpbmxpbmUgdm9pZCBCaWRpUmVzb2x2ZXI8SXRl
cmF0b3IsIFJ1bj46OnVwZGF0ZVN0YXR1c0xhc3RGcm9tQ3VycmVudERpcmVjdGlvbihXVEY6OlVu
aWNvZGU6OkRpcmVjdGlvbiBkaXJDdXJyZW50KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBXVEY6
OlVuaWNvZGU7CkBAIC01OTMsNyArNDUxLDcgQEAgaW5saW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0
ZXJhdG9yLCBSdW4+OjpyZW9yZGVyUnVuc0Zyb21MZXZlbHMoKQogewogICAgIHVuc2lnbmVkIGNo
YXIgbGV2ZWxMb3cgPSAxMjg7CiAgICAgdW5zaWduZWQgY2hhciBsZXZlbEhpZ2ggPSAwOwotICAg
IGZvciAoUnVuKiBydW4gPSBmaXJzdFJ1bigpOyBydW47IHJ1biA9IHJ1bi0+bmV4dCgpKSB7Cisg
ICAgZm9yIChSdW4qIHJ1biA9IG1fcnVucy5maXJzdFJ1bigpOyBydW47IHJ1biA9IHJ1bi0+bmV4
dCgpKSB7CiAgICAgICAgIGxldmVsSGlnaCA9IHN0ZDo6bWF4KHJ1bi0+bGV2ZWwoKSwgbGV2ZWxI
aWdoKTsKICAgICAgICAgbGV2ZWxMb3cgPSBzdGQ6Om1pbihydW4tPmxldmVsKCksIGxldmVsTG93
KTsKICAgICB9CkBAIC02MDcsMTEgKzQ2NSwxMSBAQCBpbmxpbmUgdm9pZCBCaWRpUmVzb2x2ZXI8
SXRlcmF0b3IsIFJ1bj46OnJlb3JkZXJSdW5zRnJvbUxldmVscygpCiAgICAgaWYgKCEobGV2ZWxM
b3cgJSAyKSkKICAgICAgICAgbGV2ZWxMb3crKzsKIAotICAgIHVuc2lnbmVkIGNvdW50ID0gcnVu
Q291bnQoKSAtIDE7CisgICAgdW5zaWduZWQgY291bnQgPSBtX3J1bnMucnVuQ291bnQoKSAtIDE7
CiAKICAgICB3aGlsZSAobGV2ZWxIaWdoID49IGxldmVsTG93KSB7CiAgICAgICAgIHVuc2lnbmVk
IGkgPSAwOwotICAgICAgICBSdW4qIHJ1biA9IGZpcnN0UnVuKCk7CisgICAgICAgIFJ1biogcnVu
ID0gbV9ydW5zLmZpcnN0UnVuKCk7CiAgICAgICAgIHdoaWxlIChpIDwgY291bnQpIHsKICAgICAg
ICAgICAgIGZvciAoO2kgPCBjb3VudCAmJiBydW4gJiYgcnVuLT5sZXZlbCgpIDwgbGV2ZWxIaWdo
OyBpKyspCiAgICAgICAgICAgICAgICAgcnVuID0gcnVuLT5uZXh0KCk7CkBAIC02MTksNyArNDc3
LDcgQEAgaW5saW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpyZW9yZGVyUnVu
c0Zyb21MZXZlbHMoKQogICAgICAgICAgICAgZm9yICg7aSA8PSBjb3VudCAmJiBydW4gJiYgcnVu
LT5sZXZlbCgpID49IGxldmVsSGlnaDsgaSsrKQogICAgICAgICAgICAgICAgIHJ1biA9IHJ1bi0+
bmV4dCgpOwogICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gaSAtIDE7Ci0gICAgICAgICAgICBy
ZXZlcnNlUnVucyhzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIG1fcnVucy5yZXZlcnNlUnVucyhz
dGFydCwgZW5kKTsKICAgICAgICAgfQogICAgICAgICBsZXZlbEhpZ2gtLTsKICAgICB9CkBAIC02
NDIsOSArNTAwLDkgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNyZWF0ZUJp
ZGlSdW5zRm9yTGluZShjb25zdCBJdGVyYXRvciYgZW5kLCBWaXMKICAgICAgICAgfQogICAgICAg
ICBtX2RpcmVjdGlvbiA9IG92ZXJyaWRlID09IFZpc3VhbExlZnRUb1JpZ2h0T3ZlcnJpZGUgPyBM
ZWZ0VG9SaWdodCA6IFJpZ2h0VG9MZWZ0OwogICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAg
bV9sb2dpY2FsbHlMYXN0UnVuID0gbV9sYXN0UnVuOworICAgICAgICBtX3J1bnMuc2V0TG9naWNh
bGx5TGFzdFJ1bihtX3J1bnMubGFzdFJ1bigpKTsKICAgICAgICAgaWYgKG92ZXJyaWRlID09IFZp
c3VhbFJpZ2h0VG9MZWZ0T3ZlcnJpZGUpCi0gICAgICAgICAgICByZXZlcnNlUnVucygwLCBydW5D
b3VudCgpIC0gMSk7CisgICAgICAgICAgICBtX3J1bnMucmV2ZXJzZVJ1bnMoMCwgbV9ydW5zLnJ1
bkNvdW50KCkgLSAxKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTAxNCw3ICs4NzIs
NyBAQCB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6Y3JlYXRlQmlkaVJ1bnNGb3JM
aW5lKGNvbnN0IEl0ZXJhdG9yJiBlbmQsIFZpcwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9s
b2dpY2FsbHlMYXN0UnVuID0gbV9sYXN0UnVuOworICAgIG1fcnVucy5zZXRMb2dpY2FsbHlMYXN0
UnVuKG1fcnVucy5sYXN0UnVuKCkpOwogICAgIHJlb3JkZXJSdW5zRnJvbUxldmVscygpOwogICAg
IGVuZE9mTGluZSA9IEl0ZXJhdG9yKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9Jbmxp
bmVJdGVyYXRvci5oCmluZGV4IDk3ZDNlNWIyNDY0YTAyMDhjYzRlY2Q2MmVmY2U0NDgwNWY1ZGFl
MTIuLmM3ODhiZmZhYWI0ZTdlZTBhZWU2ODI5N2Q5NzhjODg3YWQxMTJjYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9JbmxpbmVJdGVyYXRvci5oCkBAIC0yNzUsNyArMjc1LDcgQEAgaW5s
aW5lIHZvaWQgSW5saW5lQmlkaVJlc29sdmVyOjphcHBlbmRSdW4oKQogICAgICAgICBpbnQgc3Rh
cnQgPSBtX3Nvci5tX3BvczsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBvYmogPSBtX3Nvci5tX29i
ajsKICAgICAgICAgd2hpbGUgKG9iaiAmJiBvYmogIT0gbV9lb3IubV9vYmogJiYgb2JqICE9IGVu
ZE9mTGluZS5tX29iaikgewotICAgICAgICAgICAgUmVuZGVyQmxvY2s6OmFwcGVuZFJ1bnNGb3JP
YmplY3Qoc3RhcnQsIG9iai0+bGVuZ3RoKCksIG9iaiwgKnRoaXMpOyAgICAgICAgCisgICAgICAg
ICAgICBSZW5kZXJCbG9jazo6YXBwZW5kUnVuc0Zvck9iamVjdChtX3J1bnMsIHN0YXJ0LCBvYmot
Pmxlbmd0aCgpLCBvYmosICp0aGlzKTsKICAgICAgICAgICAgIHN0YXJ0ID0gMDsKICAgICAgICAg
ICAgIG9iaiA9IGJpZGlOZXh0KG1fc29yLnJvb3QoKSwgb2JqKTsKICAgICAgICAgfQpAQCAtMjg3
LDkgKzI4Nyw5IEBAIGlubGluZSB2b2lkIElubGluZUJpZGlSZXNvbHZlcjo6YXBwZW5kUnVuKCkK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEl0J3MgT0sgdG8gYWRkIHJ1bnMgZm9yIHpl
cm8tbGVuZ3RoIFJlbmRlck9iamVjdHMsIGp1c3QgZG9uJ3QgbWFrZSB0aGUgcnVuIGxhcmdlciB0
aGFuIGl0IHNob3VsZCBiZQogICAgICAgICAgICAgaW50IGVuZCA9IG9iai0+bGVuZ3RoKCkgPyBw
b3MgKyAxIDogMDsKLSAgICAgICAgICAgIFJlbmRlckJsb2NrOjphcHBlbmRSdW5zRm9yT2JqZWN0
KHN0YXJ0LCBlbmQsIG9iaiwgKnRoaXMpOworICAgICAgICAgICAgUmVuZGVyQmxvY2s6OmFwcGVu
ZFJ1bnNGb3JPYmplY3QobV9ydW5zLCBzdGFydCwgZW5kLCBvYmosICp0aGlzKTsKICAgICAgICAg
fQotICAgICAgICAKKwogICAgICAgICBtX2Vvci5pbmNyZW1lbnQoKTsKICAgICAgICAgbV9zb3Ig
PSBtX2VvcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4
IDQ2NDU0OWVhZjhiZjRmMjA2OWEyYjJkOWFkZDc2ZGRkMjJkY2ExNzMuLjg0YzhkYTFlOGU0NTI2
ZGY4NmRkYWVjOTE4ZTA1YWE0MTlkOTAwZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJCbG9jay5oCkBAIC0zMiw2ICszMiw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgQmlkaUNvbnRleHQ7CiBjbGFzcyBDb2x1bW5JbmZvOwogY2xhc3MgSW5saW5lSXRlcmF0b3I7
CiBjbGFzcyBMYXlvdXRTdGF0ZU1haW50YWluZXI7CkBAIC00Miw2ICs0Myw3IEBAIHN0cnVjdCBC
aWRpUnVuOwogc3RydWN0IFBhaW50SW5mbzsKIAogdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBj
bGFzcyBSdW4+IGNsYXNzIEJpZGlSZXNvbHZlcjsKK3RlbXBsYXRlIDxjbGFzcyBSdW4+IGNsYXNz
IEJpZGlSdW5MaXN0OwogdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yPiBzdHJ1Y3QgTWlkcG9pbnRT
dGF0ZTsKIHR5cGVkZWYgQmlkaVJlc29sdmVyPElubGluZUl0ZXJhdG9yLCBCaWRpUnVuPiBJbmxp
bmVCaWRpUmVzb2x2ZXI7CiB0eXBlZGVmIE1pZHBvaW50U3RhdGU8SW5saW5lSXRlcmF0b3I+IExp
bmVNaWRwb2ludFN0YXRlOwpAQCAtMTUxLDcgKzE1Myw3IEBAIHB1YmxpYzoKICAgICBSZW5kZXJC
bG9jayogY3JlYXRlQW5vbnltb3VzQ29sdW1uU3BhbkJsb2NrKCkgY29uc3Q7CiAgICAgUmVuZGVy
QmxvY2sqIGNyZWF0ZUFub255bW91c0Jsb2NrV2l0aFNhbWVUeXBlQXMoUmVuZGVyQmxvY2sqIG90
aGVyQW5vbnltb3VzQmxvY2spIGNvbnN0OwogICAgIAotICAgIHN0YXRpYyB2b2lkIGFwcGVuZFJ1
bnNGb3JPYmplY3QoaW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmplY3QqLCBJbmxpbmVCaWRp
UmVzb2x2ZXImKTsgICAgCisgICAgc3RhdGljIHZvaWQgYXBwZW5kUnVuc0Zvck9iamVjdChCaWRp
UnVuTGlzdDxCaWRpUnVuPiYsIGludCBzdGFydCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0KiwgSW5s
aW5lQmlkaVJlc29sdmVyJik7CiAgICAgc3RhdGljIGJvb2wgcmVxdWlyZXNMaW5lQm94KGNvbnN0
IElubGluZUl0ZXJhdG9yJiwgYm9vbCBpc0xpbmVFbXB0eSA9IHRydWUsIGJvb2wgcHJldmlvdXNM
aW5lQnJva2VDbGVhbmx5ID0gdHJ1ZSk7CiAKICAgICBDb2x1bW5JbmZvKiBjb2x1bW5JbmZvKCkg
Y29uc3Q7CkBAIC0zNDksNyArMzUxLDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgbGF5b3V0Qmxv
Y2tDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIGludCYgbWF4RmxvYXRMb2dpY2FsQm90
dG9tKTsKICAgICB2b2lkIGxheW91dElubGluZUNoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJl
biwgaW50JiByZXBhaW50TG9naWNhbFRvcCwgaW50JiByZXBhaW50TG9naWNhbEJvdHRvbSk7Ci0g
ICAgQmlkaVJ1biogaGFuZGxlVHJhaWxpbmdTcGFjZXMoSW5saW5lQmlkaVJlc29sdmVyJik7Cisg
ICAgQmlkaVJ1biogaGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mLCBC
aWRpQ29udGV4dCopOwogCiAgICAgdmlydHVhbCB2b2lkIGJvcmRlckZpdEFkanVzdChpbnQmIHgs
IGludCYgdykgY29uc3Q7IC8vIFNocmluayB0aGUgYm94IGluIHdoaWNoIHRoZSBib3JkZXIgcGFp
bnRzIGlmIGJvcmRlci1maXQgaXMgc2V0LgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9ja0xpbmVMYXlvdXQuY3BwCmluZGV4IGI4ODcwYzk0MTYwMWMwOGRmNGJk
YTlmNGRhNGNhNmIyODU1OGU0ZWYuLjE2ODA5NGQyMDk2OTRiNjUzYzkwM2ExMDlhNGMwMWQ2NjAz
OTEzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xp
bmVMYXlvdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0xp
bmVMYXlvdXQuY3BwCkBAIC0xMTIsNyArMTEyLDEyIEBAIHN0YXRpYyB2b2lkIGFkZE1pZHBvaW50
KExpbmVNaWRwb2ludFN0YXRlJiBsaW5lTWlkcG9pbnRTdGF0ZSwgY29uc3QgSW5saW5lSXRlcmF0
CiAgICAgbWlkcG9pbnRzW2xpbmVNaWRwb2ludFN0YXRlLm51bU1pZHBvaW50cysrXSA9IG1pZHBv
aW50OwogfQogCi12b2lkIFJlbmRlckJsb2NrOjphcHBlbmRSdW5zRm9yT2JqZWN0KGludCBzdGFy
dCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0KiBvYmosIElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2
ZXIpCitzdGF0aWMgaW5saW5lIEJpZGlSdW4qIGNyZWF0ZVJ1bihpbnQgc3RhcnQsIGludCBlbmQs
IFJlbmRlck9iamVjdCogb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQoreworICAg
IHJldHVybiBuZXcgKG9iai0+cmVuZGVyQXJlbmEoKSkgQmlkaVJ1bihzdGFydCwgZW5kLCBvYmos
IHJlc29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpOworfQorCit2b2lkIFJlbmRlckJs
b2NrOjphcHBlbmRSdW5zRm9yT2JqZWN0KEJpZGlSdW5MaXN0PEJpZGlSdW4+JiBydW5zLCBpbnQg
c3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCogb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJl
c29sdmVyKQogewogICAgIGlmIChzdGFydCA+IGVuZCB8fCBvYmotPmlzRmxvYXRpbmcoKSB8fAog
ICAgICAgICAob2JqLT5pc1Bvc2l0aW9uZWQoKSAmJiAhb2JqLT5zdHlsZSgpLT5oYXNBdXRvTGVm
dEFuZFJpZ2h0KCkgJiYgIW9iai0+c3R5bGUoKS0+aGFzQXV0b1RvcEFuZEJvdHRvbSgpICYmICFv
YmotPmNvbnRhaW5lcigpLT5pc1JlbmRlcklubGluZSgpKSkKQEAgLTEzMiwxMCArMTM3LDEwIEBA
IHZvaWQgUmVuZGVyQmxvY2s6OmFwcGVuZFJ1bnNGb3JPYmplY3QoaW50IHN0YXJ0LCBpbnQgZW5k
LCBSZW5kZXJPYmplY3QqIG9iaiwgSW5sCiAgICAgICAgIHN0YXJ0ID0gbmV4dE1pZHBvaW50Lm1f
cG9zOwogICAgICAgICBsaW5lTWlkcG9pbnRTdGF0ZS5jdXJyZW50TWlkcG9pbnQrKzsKICAgICAg
ICAgaWYgKHN0YXJ0IDwgZW5kKQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFJ1bnNGb3JPYmpl
Y3Qoc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlcik7CisgICAgICAgICAgICByZXR1cm4gYXBwZW5k
UnVuc0Zvck9iamVjdChydW5zLCBzdGFydCwgZW5kLCBvYmosIHJlc29sdmVyKTsKICAgICB9IGVs
c2UgewogICAgICAgICBpZiAoIWhhdmVOZXh0TWlkcG9pbnQgfHwgKG9iaiAhPSBuZXh0TWlkcG9p
bnQubV9vYmopKSB7Ci0gICAgICAgICAgICByZXNvbHZlci5hZGRSdW4obmV3IChvYmotPnJlbmRl
ckFyZW5hKCkpIEJpZGlSdW4oc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJl
c29sdmVyLmRpcigpKSk7CisgICAgICAgICAgICBydW5zLmFkZFJ1bihjcmVhdGVSdW4oc3RhcnQs
IGVuZCwgb2JqLCByZXNvbHZlcikpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTE0NiwxMiArMTUxLDExIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmFwcGVuZFJ1bnNGb3JPYmpl
Y3QoaW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmplY3QqIG9iaiwgSW5sCiAgICAgICAgICAg
ICBsaW5lTWlkcG9pbnRTdGF0ZS5jdXJyZW50TWlkcG9pbnQrKzsKICAgICAgICAgICAgIGlmIChu
ZXh0TWlkcG9pbnQubV9wb3MgIT0gVUlOVF9NQVgpIHsgLy8gVUlOVF9NQVggbWVhbnMgc3RvcCBh
dCB0aGUgb2JqZWN0IGFuZCBkb24ndCBpbmNsdWRlIGFueSBvZiBpdC4KICAgICAgICAgICAgICAg
ICBpZiAoc3RhdGljX2Nhc3Q8aW50PihuZXh0TWlkcG9pbnQubV9wb3MgKyAxKSA+IHN0YXJ0KQot
ICAgICAgICAgICAgICAgICAgICByZXNvbHZlci5hZGRSdW4obmV3IChvYmotPnJlbmRlckFyZW5h
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBCaWRpUnVuKHN0YXJ0LCBuZXh0TWlkcG9pbnQu
bV9wb3MgKyAxLCBvYmosIHJlc29sdmVyLmNvbnRleHQoKSwgcmVzb2x2ZXIuZGlyKCkpKTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gYXBwZW5kUnVuc0Zvck9iamVjdChuZXh0TWlkcG9pbnQubV9w
b3MgKyAxLCBlbmQsIG9iaiwgcmVzb2x2ZXIpOworICAgICAgICAgICAgICAgICAgICBydW5zLmFk
ZFJ1bihjcmVhdGVSdW4oc3RhcnQsIG5leHRNaWRwb2ludC5tX3BvcyArIDEsIG9iaiwgcmVzb2x2
ZXIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYXBwZW5kUnVuc0Zvck9iamVjdChydW5zLCBu
ZXh0TWlkcG9pbnQubV9wb3MgKyAxLCBlbmQsIG9iaiwgcmVzb2x2ZXIpOwogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgcmVzb2x2ZXIuYWRkUnVuKG5ldyAob2JqLT5y
ZW5kZXJBcmVuYSgpKSBCaWRpUnVuKHN0YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgp
LCByZXNvbHZlci5kaXIoKSkpOworICAgICAgICAgICBydW5zLmFkZFJ1bihjcmVhdGVSdW4oc3Rh
cnQsIGVuZCwgb2JqLCByZXNvbHZlcikpOwogICAgIH0KIH0KIApAQCAtNjA4LDkgKzYxMiw5IEBA
IHN0YXRpYyB2b2lkIHNldFN0YXRpY1Bvc2l0aW9ucyhSZW5kZXJCbG9jayogYmxvY2ssIFJlbmRl
ckJveCogY2hpbGQpCiAgICAgY2hpbGQtPmxheWVyKCktPnNldFN0YXRpY0Jsb2NrUG9zaXRpb24o
YmxvY2tIZWlnaHQpOwogfQogCi1zdGF0aWMgYm9vbCByZWFjaGVkRW5kT2ZUZXh0UmVuZGVyZXIo
SW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKK3N0YXRpYyBib29sIHJlYWNoZWRFbmRPZlRl
eHRSZW5kZXJlcihjb25zdCBCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMpCiB7Ci0gICAg
QmlkaVJ1biogcnVuID0gcmVzb2x2ZXIubG9naWNhbGx5TGFzdFJ1bigpOworICAgIEJpZGlSdW4q
IHJ1biA9IGJpZGlSdW5zLmxvZ2ljYWxseUxhc3RSdW4oKTsKICAgICBpZiAoIXJ1bikKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgdW5zaWduZWQgaW50IHBvcyA9IHJ1bi0+c3RvcCgpOwpAQCAt
NjI5LDE0ICs2MzMsMTQgQEAgc3RhdGljIGJvb2wgcmVhY2hlZEVuZE9mVGV4dFJlbmRlcmVyKElu
bGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogICAgIAot
aW5saW5lIEJpZGlSdW4qIFJlbmRlckJsb2NrOjpoYW5kbGVUcmFpbGluZ1NwYWNlcyhJbmxpbmVC
aWRpUmVzb2x2ZXImIHJlc29sdmVyKQoraW5saW5lIEJpZGlSdW4qIFJlbmRlckJsb2NrOjpoYW5k
bGVUcmFpbGluZ1NwYWNlcyhCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMsIEJpZGlDb250
ZXh0KiBjdXJyZW50Q29udGV4dCkKIHsKLSAgICBpZiAoIXJlc29sdmVyLnJ1bkNvdW50KCkKLSAg
ICAgICAgfHwgIXJlc29sdmVyLmxvZ2ljYWxseUxhc3RSdW4oKS0+bV9vYmplY3QtPnN0eWxlKCkt
PmJyZWFrT25seUFmdGVyV2hpdGVTcGFjZSgpCi0gICAgICAgIHx8ICFyZXNvbHZlci5sb2dpY2Fs
bHlMYXN0UnVuKCktPm1fb2JqZWN0LT5zdHlsZSgpLT5hdXRvV3JhcCgpKQorICAgIGlmICghYmlk
aVJ1bnMucnVuQ291bnQoKQorICAgICAgICB8fCAhYmlkaVJ1bnMubG9naWNhbGx5TGFzdFJ1bigp
LT5tX29iamVjdC0+c3R5bGUoKS0+YnJlYWtPbmx5QWZ0ZXJXaGl0ZVNwYWNlKCkKKyAgICAgICAg
fHwgIWJpZGlSdW5zLmxvZ2ljYWxseUxhc3RSdW4oKS0+bV9vYmplY3QtPnN0eWxlKCktPmF1dG9X
cmFwKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1
biA9IHJlc29sdmVyLmxvZ2ljYWxseUxhc3RSdW4oKTsKKyAgICBCaWRpUnVuKiB0cmFpbGluZ1Nw
YWNlUnVuID0gYmlkaVJ1bnMubG9naWNhbGx5TGFzdFJ1bigpOwogICAgIFJlbmRlck9iamVjdCog
bGFzdE9iamVjdCA9IHRyYWlsaW5nU3BhY2VSdW4tPm1fb2JqZWN0OwogICAgIGlmICghbGFzdE9i
amVjdC0+aXNUZXh0KCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNjU0LDE4ICs2NTgsMTggQEAg
aW5saW5lIEJpZGlSdW4qIFJlbmRlckJsb2NrOjpoYW5kbGVUcmFpbGluZ1NwYWNlcyhJbmxpbmVC
aWRpUmVzb2x2ZXImIHJlc29sdmVyKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFRleHREaXJl
Y3Rpb24gZGlyZWN0aW9uID0gc3R5bGUoKS0+ZGlyZWN0aW9uKCk7Ci0gICAgYm9vbCBzaG91bGRS
ZW9yZGVyID0gdHJhaWxpbmdTcGFjZVJ1biAhPSAoZGlyZWN0aW9uID09IExUUiA/IHJlc29sdmVy
Lmxhc3RSdW4oKSA6IHJlc29sdmVyLmZpcnN0UnVuKCkpOworICAgIGJvb2wgc2hvdWxkUmVvcmRl
ciA9IHRyYWlsaW5nU3BhY2VSdW4gIT0gKGRpcmVjdGlvbiA9PSBMVFIgPyBiaWRpUnVucy5sYXN0
UnVuKCkgOiBiaWRpUnVucy5maXJzdFJ1bigpKTsKICAgICBpZiAoZmlyc3RTcGFjZSAhPSB0cmFp
bGluZ1NwYWNlUnVuLT5zdGFydCgpKSB7Ci0gICAgICAgIEJpZGlDb250ZXh0KiBiYXNlQ29udGV4
dCA9IHJlc29sdmVyLmNvbnRleHQoKTsKKyAgICAgICAgQmlkaUNvbnRleHQqIGJhc2VDb250ZXh0
ID0gY3VycmVudENvbnRleHQ7CiAgICAgICAgIHdoaWxlIChCaWRpQ29udGV4dCogcGFyZW50ID0g
YmFzZUNvbnRleHQtPnBhcmVudCgpKQogICAgICAgICAgICAgYmFzZUNvbnRleHQgPSBwYXJlbnQ7
CiAKICAgICAgICAgQmlkaVJ1biogbmV3VHJhaWxpbmdSdW4gPSBuZXcgKHJlbmRlckFyZW5hKCkp
IEJpZGlSdW4oZmlyc3RTcGFjZSwgdHJhaWxpbmdTcGFjZVJ1bi0+bV9zdG9wLCB0cmFpbGluZ1Nw
YWNlUnVuLT5tX29iamVjdCwgYmFzZUNvbnRleHQsIE90aGVyTmV1dHJhbCk7CiAgICAgICAgIHRy
YWlsaW5nU3BhY2VSdW4tPm1fc3RvcCA9IGZpcnN0U3BhY2U7CiAgICAgICAgIGlmIChkaXJlY3Rp
b24gPT0gTFRSKQotICAgICAgICAgICAgcmVzb2x2ZXIuYWRkUnVuKG5ld1RyYWlsaW5nUnVuKTsK
KyAgICAgICAgICAgIGJpZGlSdW5zLmFkZFJ1bihuZXdUcmFpbGluZ1J1bik7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHJlc29sdmVyLnByZXBlbmRSdW4obmV3VHJhaWxpbmdSdW4pOworICAg
ICAgICAgICAgYmlkaVJ1bnMucHJlcGVuZFJ1bihuZXdUcmFpbGluZ1J1bik7CiAgICAgICAgIHRy
YWlsaW5nU3BhY2VSdW4gPSBuZXdUcmFpbGluZ1J1bjsKICAgICAgICAgcmV0dXJuIHRyYWlsaW5n
U3BhY2VSdW47CiAgICAgfQpAQCAtNjczLDEwICs2NzcsMTAgQEAgaW5saW5lIEJpZGlSdW4qIFJl
bmRlckJsb2NrOjpoYW5kbGVUcmFpbGluZ1NwYWNlcyhJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29s
dmVyKQogICAgICAgICByZXR1cm4gdHJhaWxpbmdTcGFjZVJ1bjsKIAogICAgIGlmIChkaXJlY3Rp
b24gPT0gTFRSKSB7Ci0gICAgICAgIHJlc29sdmVyLm1vdmVSdW5Ub0VuZCh0cmFpbGluZ1NwYWNl
UnVuKTsKKyAgICAgICAgYmlkaVJ1bnMubW92ZVJ1blRvRW5kKHRyYWlsaW5nU3BhY2VSdW4pOwog
ICAgICAgICB0cmFpbGluZ1NwYWNlUnVuLT5tX2xldmVsID0gMDsKICAgICB9IGVsc2UgewotICAg
ICAgICByZXNvbHZlci5tb3ZlUnVuVG9CZWdpbm5pbmcodHJhaWxpbmdTcGFjZVJ1bik7CisgICAg
ICAgIGJpZGlSdW5zLm1vdmVSdW5Ub0JlZ2lubmluZyh0cmFpbGluZ1NwYWNlUnVuKTsKICAgICAg
ICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9sZXZlbCA9IDE7CiAgICAgfQogICAgIHJldHVybiB0cmFp
bGluZ1NwYWNlUnVuOwpAQCAtODM5LDcgKzg0MywxMCBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlv
dXRJbmxpbmVDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIGludCYgcmVwYWludExvZ2lj
YQogICAgICAgICAgICAgRmxvYXRpbmdPYmplY3QqIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUg
PSAobV9mbG9hdGluZ09iamVjdHMgJiYgIW1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKS5pc0VtcHR5
KCkpID8gbV9mbG9hdGluZ09iamVjdHMtPnNldCgpLmxhc3QoKSA6IDA7CiAgICAgICAgICAgICBl
bmQgPSBmaW5kTmV4dExpbmVCcmVhayhyZXNvbHZlciwgZmlyc3RMaW5lLCBpc0xpbmVFbXB0eSwg
bGluZUJyZWFrSXRlcmF0b3JJbmZvLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHksIGh5cGhlbmF0
ZWQsICZjbGVhciwgbGFzdEZsb2F0RnJvbVByZXZpb3VzTGluZSwgcG9zaXRpb25lZE9iamVjdHMp
OwogICAgICAgICAgICAgaWYgKHJlc29sdmVyLnBvc2l0aW9uKCkuYXRFbmQoKSkgewotICAgICAg
ICAgICAgICAgIHJlc29sdmVyLmRlbGV0ZVJ1bnMoKTsKKyAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV2Ugc2hvdWxkbid0IGJlIGNyZWF0aW5nIGFueSBydW5zIGluIGZpbmROZXh0TGluZUJyZWFr
IHRvIGJlZ2luIHdpdGghCisgICAgICAgICAgICAgICAgLy8gT25jZSBCaWRpUnVuTGlzdCBpcyBz
ZXBhcmF0ZWQgZnJvbSBCaWRpUmVzb2x2ZXIgdGhpcyB3aWxsIG5vdCBiZSBuZWVkZWQuCisgICAg
ICAgICAgICAgICAgcmVzb2x2ZXIucnVucygpLmRlbGV0ZVJ1bnMoKTsKKyAgICAgICAgICAgICAg
ICByZXNvbHZlci5tYXJrQ3VycmVudFJ1bkVtcHR5KCk7IC8vIEZJWE1FOiBUaGlzIGNhbiBwcm9i
YWJseSBiZSByZXBsYWNlZCBieSBhbiBBU1NFUlQgKG9yIGp1c3QgcmVtb3ZlZCkuCiAgICAgICAg
ICAgICAgICAgY2hlY2tGb3JGbG9hdHNGcm9tTGFzdExpbmUgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtODUwLDEwICs4NTcsMTIgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBpbnQm
IHJlcGFpbnRMb2dpY2EKICAgICAgICAgICAgICAgICAgICAgbGFzdFJvb3RCb3goKS0+c2V0TGlu
ZUJyZWFrSW5mbyhlbmQubV9vYmosIGVuZC5tX3BvcywgcmVzb2x2ZXIuc3RhdHVzKCkpOwogICAg
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBWaXN1YWxEaXJlY3Rpb25PdmVycmlk
ZSBvdmVycmlkZSA9IChzdHlsZSgpLT52aXN1YWxseU9yZGVyZWQoKSA/IChzdHlsZSgpLT5kaXJl
Y3Rpb24oKSA9PSBMVFIgPyBWaXN1YWxMZWZ0VG9SaWdodE92ZXJyaWRlIDogVmlzdWFsUmlnaHRU
b0xlZnRPdmVycmlkZSkgOiBOb1Zpc3VhbE92ZXJyaWRlKTsKKyAgICAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBvd25lcnNoaXAgaXMgcmV2ZXJzZWQuIFdlIHNob3VsZCBvd24gdGhlIEJpZGlS
dW5MaXN0IGFuZCBwYXNzIGl0IHRvIGNyZWF0ZUJpZGlSdW5zRm9yTGluZS4KKyAgICAgICAgICAg
ICAgICBCaWRpUnVuTGlzdDxCaWRpUnVuPiYgYmlkaVJ1bnMgPSByZXNvbHZlci5ydW5zKCk7CiAg
ICAgICAgICAgICAgICAgcmVzb2x2ZXIuY3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGVuZCwgb3ZlcnJp
ZGUsIHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJl
c29sdmVyLnBvc2l0aW9uKCkgPT0gZW5kKTsKIAotICAgICAgICAgICAgICAgIEJpZGlSdW4qIHRy
YWlsaW5nU3BhY2VSdW4gPSAhcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5ID8gaGFuZGxlVHJhaWxp
bmdTcGFjZXMocmVzb2x2ZXIpIDogMDsKKyAgICAgICAgICAgICAgICBCaWRpUnVuKiB0cmFpbGlu
Z1NwYWNlUnVuID0gIXByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSA/IGhhbmRsZVRyYWlsaW5nU3Bh
Y2VzKGJpZGlSdW5zLCByZXNvbHZlci5jb250ZXh0KCkpIDogMDsKIAogICAgICAgICAgICAgICAg
IC8vIE5vdyB0aGF0IHRoZSBydW5zIGhhdmUgYmVlbiBvcmRlcmVkLCB3ZSBjcmVhdGUgdGhlIGxp
bmUgYm94ZXMuCiAgICAgICAgICAgICAgICAgLy8gQXQgdGhlIHNhbWUgdGltZSB3ZSBmaWd1cmUg
b3V0IHdoZXJlIGJvcmRlci9wYWRkaW5nL21hcmdpbiBzaG91bGQgYmUgYXBwbGllZCBmb3IKQEAg
LTg2MSwxMSArODcwLDEyIEBAIHZvaWQgUmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVu
KGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgaW50JiByZXBhaW50TG9naWNhCiAKICAgICAgICAgICAg
ICAgICBSb290SW5saW5lQm94KiBsaW5lQm94ID0gMDsKICAgICAgICAgICAgICAgICBpbnQgb2xk
TG9naWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAgICAgICBpZiAocmVz
b2x2ZXIucnVuQ291bnQoKSkgeworICAgICAgICAgICAgICAgIGlmIChiaWRpUnVucy5ydW5Db3Vu
dCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChoeXBoZW5hdGVkKQotICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzb2x2ZXIubG9naWNhbGx5TGFzdFJ1bigpLT5tX2hhc0h5cGhlbiA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2wgbGFzdExpbmUgPSBlbmQubV9vYmogJiYgZW5k
Lm1fb2JqLT5pc1RleHQoKSA/IHJlYWNoZWRFbmRPZlRleHRSZW5kZXJlcihyZXNvbHZlcikgOiAh
ZW5kLm1fb2JqOwotICAgICAgICAgICAgICAgICAgICBsaW5lQm94ID0gY29uc3RydWN0TGluZShy
ZXNvbHZlci5ydW5Db3VudCgpLCByZXNvbHZlci5maXJzdFJ1bigpLCByZXNvbHZlci5sYXN0UnVu
KCksIGZpcnN0TGluZSwgbGFzdExpbmUsIGVuZC5tX29iaiAmJiAhZW5kLm1fcG9zID8gZW5kLm1f
b2JqIDogMCwgcmVzb2x2ZXIubG9naWNhbGx5TGFzdFJ1bigpLT5tX29iamVjdCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBiaWRpUnVucy5sb2dpY2FsbHlMYXN0UnVuKCktPm1faGFzSHlwaGVu
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBsYXN0TGluZSA9IGVuZC5tX29iaiAm
JiBlbmQubV9vYmotPmlzVGV4dCgpID8gcmVhY2hlZEVuZE9mVGV4dFJlbmRlcmVyKGJpZGlSdW5z
KSA6ICFlbmQubV9vYmo7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBDbGVhcmx5IGNv
bnN0cnVjdExpbmUgc2hvdWxkIGp1c3QgdGFrZSBhIGJpZGlSdW5zIG9iamVjdC4KKyAgICAgICAg
ICAgICAgICAgICAgbGluZUJveCA9IGNvbnN0cnVjdExpbmUoYmlkaVJ1bnMucnVuQ291bnQoKSwg
YmlkaVJ1bnMuZmlyc3RSdW4oKSwgYmlkaVJ1bnMubGFzdFJ1bigpLCBmaXJzdExpbmUsIGxhc3RM
aW5lLCBlbmQubV9vYmogJiYgIWVuZC5tX3BvcyA/IGVuZC5tX29iaiA6IDAsIGJpZGlSdW5zLmxv
Z2ljYWxseUxhc3RSdW4oKS0+bV9vYmplY3QpOwogICAgICAgICAgICAgICAgICAgICBpZiAobGlu
ZUJveCkgewogICAgICAgICAgICAgICAgICAgICAgICAgbGluZUJveC0+c2V0RW5kc1dpdGhCcmVh
ayhwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOwogCkBAIC04NzksMTAgKzg4OSwxMCBAQCB2b2lk
IFJlbmRlckJsb2NrOjpsYXlvdXRJbmxpbmVDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4s
IGludCYgcmVwYWludExvZ2ljYQogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIE5vdyB3ZSBwb3NpdGlvbiBhbGwgb2Ygb3VyIHRleHQgcnVucyBob3Jpem9u
dGFsbHkuCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzU1ZHUm9vdElubGluZUJveCkK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlSW5saW5lRGlyZWN0aW9uUG9zaXRp
b25zRm9yTGluZShsaW5lQm94LCBmaXJzdExpbmUsIHJlc29sdmVyLmZpcnN0UnVuKCksIHRyYWls
aW5nU3BhY2VSdW4sIGVuZC5hdEVuZCgpLCB0ZXh0Qm94RGF0YU1hcCwgdmVydGljYWxQb3NpdGlv
bkNhY2hlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlSW5saW5lRGlyZWN0
aW9uUG9zaXRpb25zRm9yTGluZShsaW5lQm94LCBmaXJzdExpbmUsIGJpZGlSdW5zLmZpcnN0UnVu
KCksIHRyYWlsaW5nU3BhY2VSdW4sIGVuZC5hdEVuZCgpLCB0ZXh0Qm94RGF0YU1hcCwgdmVydGlj
YWxQb3NpdGlvbkNhY2hlKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm93IHBvc2l0
aW9uIG91ciB0ZXh0IHJ1bnMgdmVydGljYWxseS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bXB1dGVCbG9ja0RpcmVjdGlvblBvc2l0aW9uc0ZvckxpbmUobGluZUJveCwgcmVzb2x2ZXIuZmly
c3RSdW4oKSwgdGV4dEJveERhdGFNYXAsIHZlcnRpY2FsUG9zaXRpb25DYWNoZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjb21wdXRlQmxvY2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKGxp
bmVCb3gsIGJpZGlSdW5zLmZpcnN0UnVuKCksIHRleHRCb3hEYXRhTWFwLCB2ZXJ0aWNhbFBvc2l0
aW9uQ2FjaGUpOwogCiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAgICAgICAgICAgICAgICAgIC8v
IFNWRyB0ZXh0IGxheW91dCBjb2RlIGNvbXB1dGVzIHZlcnRpY2FsICYgaG9yaXpvbnRhbCBwb3Np
dGlvbnMgb24gaXRzIG93bi4KQEAgLTkwNyw3ICs5MTcsOCBAQCB2b2lkIFJlbmRlckJsb2NrOjps
YXlvdXRJbmxpbmVDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIGludCYgcmVwYWludExv
Z2ljYQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgcmVzb2x2ZXIuZGVsZXRlUnVucygpOworICAgICAgICAgICAgICAgIGJpZGlSdW5z
LmRlbGV0ZVJ1bnMoKTsKKyAgICAgICAgICAgICAgICByZXNvbHZlci5tYXJrQ3VycmVudFJ1bkVt
cHR5KCk7IC8vIEZJWE1FOiBUaGlzIGNhbiBwcm9iYWJseSBiZSByZXBsYWNlZCBieSBhbiBBU1NF
UlQgKG9yIGp1c3QgcmVtb3ZlZCkuCiAKICAgICAgICAgICAgICAgICBpZiAobGluZUJveCkgewog
ICAgICAgICAgICAgICAgICAgICBsaW5lQm94LT5zZXRMaW5lQnJlYWtJbmZvKGVuZC5tX29iaiwg
ZW5kLm1fcG9zLCByZXNvbHZlci5zdGF0dXMoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88092</attachid>
            <date>2011-04-04 12:06:59 -0700</date>
            <delta_ts>2011-04-07 11:05:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57764-20110404220651.patch</filename>
            <type>text/plain</type>
            <size>41531</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI4MjcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZmJkMTI5YjJmYTZlNGVm
ZDBjOWU2NmM0MWRmMWE2MDMzMGNjNTNkLi4zOGU5OTc5ZjE5MzQwYjE3NGZkYzhiNTI1YjI2NmVh
NGM4ZWM3MWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTEtMDQtMDQgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFNwbGl0IHJ1biBzdG9yYWdlIG91dCBmcm9tIEJpZGlSZXNvbHZl
ciBpbnRvIGEgbmV3IEJpZGlSdW5MaXN0IGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Nzc2NAorCisgICAgICAgIFBhcnQgb2Ygd2hhdCBtYWtl
cyBCaWRpUmVzb2x2ZXIgYW5kIElubGluZUl0ZXJhdG9yIHNvIGRpZmZpY3VsdCB0byB1bmRlcnN0
YW5kCisgICAgICAgIChhbmQgYnVnIDUwOTEyIHNvIGRpZmZpY3VsdCB0byBmaXgpIGlzIHRoYXQg
QmlkaVJlc29sdmVyIGlzIGJvdGggYSBzdGF0ZSBtYWNoaW5lCisgICAgICAgIGZvciB0aGUgVW5p
Y29kZSBCaWRpIEFsZ29yaXRobSAoVUJBKSBhcyB3ZWxsIGFzIHN0b3JhZ2UgZm9yIHRoZSByZXN1
bHRpbmcKKyAgICAgICAgQmlkaVJ1bnMgZnJvbSB0aGUgYWxnb3JpdGhtLiAgVGhpcyBwYXRjaCBi
cmVha3MgdGhlIHN0b3JhZ2UgYXNwZWN0IG9mZgorICAgICAgICBpbnRvIGl0cyBvd24gY2xhc3Mg
QmlkaVJ1bkxpc3QuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBvbmx5IGEgc3RhcnQuICBJdCBk
b2VzIG5vdCBhY3R1YWxseSBmaXggdGhlIHByb2JsZW1hdGljIG93bmVyc2hpcAorICAgICAgICBy
ZWxhdGlvbnNoaXAsIGJ1dCBpdCBkb2VzIG1ha2UgaXQgcG9zc2libGUgdG8gZml4IHN1Y2ggaW4g
YSBzZWNvbmQgcGF0Y2guCisKKyAgICAgICAgVGhlIHJ1biBwb2ludGVycyBhbmQgYWRkUnVuL3By
ZXBlbmRSdW4sIGV0Yy4gd2VyZSBhbHJlYWR5IGEgdGlnaHRseSBjb3VwbGVkCisgICAgICAgIGxv
Z2ljYWwgc3Vic2V0IG9mIHRoZSBCaWRpUmVzb2x2ZXIgY2xhc3MsIHNvIG1vdmluZyB0aGVtIGlu
dG8gdGhlaXIgb3duIGNsYXNzCisgICAgICAgIHdhcyBib3RoIG9idmlvdXMgYW5kIGVhc3kuICBU
aGUgb25seSBwaWVjZSBvZiBsb2dpYyBJIGhhZCB0byBtb3ZlIHdhcyB0aGF0CisgICAgICAgIGRl
bGV0ZVJ1bnMoKSBoYWQgYSBzaWRlLWVmZmVjdCBvZiBzZXR0aW5nIHRoZSBtX2VtcHR5UnVuIGJp
dCBvbiB0aGUgcmVzb2x2ZXIuCisKKyAgICAgICAgSSBiZWxpZXZlIHRoaXMgZGVsZXRlUnVucyBz
aWRlLWVmZmVjdCB3YXMgb25seSBldmVyIHVzZWQgZm9yIG9uZSBwbGFjZQorICAgICAgICAocmln
aHQgYWZ0ZXIgZmluZE5leHRMaW5lQnJlYWspIGFuZCB0aGF0IGl0J3Mgb25seSBuZWVkZWQgYmVj
YXVzZQorICAgICAgICBmaW5kTmV4dExpbmVCcmVhayBjYW4gc29tZXRpbWVzIGNyZWF0ZSBiaWRp
IHJ1bnMuICBSdW4gY3JlYXRpb24gYXBwZWFycyB0byBiZQorICAgICAgICBhbiB1bmludGVudGlv
bmFsIHNpZGUtZWZmZWN0IG9mIGhvdyBJbmxpbmVJdGVyYXRvciBjYWxscyB0aHJvdWdoIHRvIEJp
ZGlSZXNvbHZlcgorICAgICAgICBhcyBwYXJ0IG9mIGJpZGlOZXh0IGFuZCBub3QgYSBkZXNpcmVk
IGVmZmVjdCBvZiB0aGUgY29kZS4gIEkgaGF2ZSBhZGRlZCB0aGUgY2FsbAorICAgICAgICB0byBt
YXJrQ3VycmVudFJ1bkVtcHR5IHRvIGJvdGggcGxhY2VzIGRlbGV0ZVJ1bnMgd2FzIGNhbGxlZCAo
d2hlcmUgdGhlIHJlc29sdmVyCisgICAgICAgIGNvdWxkIGdldCByZS11c2VkKSBhcyBhIHNhZmV0
eSBwcmVjYXV0aW9uLiAgV2UgY291bGQgcmVwbGFjZSBib3RoIHdpdGggQVNTRVJUcworICAgICAg
ICBpbiBhIGxhdGVyIHBhdGNoLgorCisgICAgICAgIEkgc3VzcGVjdCB0aGVyZSBtYXkgYmUgYSBz
bWFsbCBwZXJmb3JtYW5jZSB3aW4gZnJvbSBmdXJ0aGVyIHJlZmFjdG9yaW5nIHNvIHRoYXQKKyAg
ICAgICAgZmluZE5leHRMaW5lQnJlYWsgZG9lcyBub3QgbmVlZCB0byBjcmVhdGUgQmlkaVJ1bnMu
CisKKyAgICAgICAgQXMgSSBjb21tZW50ZWQgaW4gdGhlIGNvZGUsIGNhbGxlcnMgc2hvdWxkIG93
biB0aGVpciBvd24gQmlkaVJ1bkxpc3Qgd2hpY2ggdGhleQorICAgICAgICBwYXNzIHRvIEJpZGlS
ZXNvbHZlcjo6Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lLiAgSSBhdHRlbXB0ZWQgdG8gaW1wbGVtZW50
IHRoYXQgaW4KKyAgICAgICAgYW4gZWFybGllciB2ZXJzaW9uIG9mIHRoaXMgcGF0Y2gsIGJ1dCBp
dCB3YXMgdG9vIGNvbXBsaWNhdGVkIHdpdGggdGhlIGN1cnJlbnQKKyAgICAgICAgdHdpc3RlZCBk
ZXBlbmRlbmNpZXMgYmV0d2VlbiBJbmxpbmVJdGVyYXRvci9iaWRpTmV4dCBhbmQgSW5saW5lQmlk
aVJlc29sdmVyLgorICAgICAgICByYWlzZS9sb3dlckV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwgYXJl
IGNhbGxlZCB1bmNvbmRpdGlvbmFsbHkKKyAgICAgICAgZnJvbSBjb21taXRFeHBsaWNpdEVtYmVk
ZGluZyAod2hpY2ggaXMgY2FsbGVkIGJ5IGJpZGlOZXh0KSBhbmQgZXhwZWN0IHRvIGhhdmUKKyAg
ICAgICAgYWNjZXNzIHRvIGEgcnVucyBsaXN0IGV2ZW4gaW4gY2FzZXMgd2hlcmUgd2UgZG9uJ3Qg
d2FudCBhbnkgcnVucyAoZmluZE5leHRMaW5lQnJlYWspLgorCisgICAgICAgIEkgYWxzbyBjbGVh
bmVkIHVwIHNvbWUgb2YgdGhlIGNhbGxlcnMgdG8gcGFzcyBhcm91bmQgQmlkaVJ1bkxpc3Qgb2Jq
ZWN0cyBpbnN0ZWFkCisgICAgICAgIG9mIElubGluZUJpZGlSZXNvbHZlcnMgbm93IHRoYXQgdGhl
eSdyZSBzZXBhcmF0ZSBvYmplY3RzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRl
eHQpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpCaWRpUmVzb2x2ZXI6OkJpZGlSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpC
aWRpUmVzb2x2ZXI6OnJ1bnMpOgorICAgICAgICAoV2ViQ29yZTo6QmlkaVJlc29sdmVyOjptYXJr
Q3VycmVudFJ1bkVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6Ojo6YXBwZW5kUnVuKToKKyAgICAg
ICAgKFdlYkNvcmU6Ojo6bG93ZXJFeHBsaWNpdEVtYmVkZGluZ0xldmVsKToKKyAgICAgICAgKFdl
YkNvcmU6Ojo6cmFpc2VFeHBsaWNpdEVtYmVkZGluZ0xldmVsKToKKyAgICAgICAgKFdlYkNvcmU6
Ojo6cmVvcmRlclJ1bnNGcm9tTGV2ZWxzKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6Y3JlYXRlQmlk
aVJ1bnNGb3JMaW5lKToKKyAgICAgICAgKiByZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OklubGluZUJpZGlSZXNvbHZlcjo6YXBwZW5kUnVuKToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxv
Y2tMaW5lTGF5b3V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJ1bik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YXBwZW5kUnVuc0Zvck9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpyZWFjaGVkRW5kT2ZUZXh0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OmhhbmRsZVRyYWlsaW5nU3BhY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpsYXlvdXRJbmxpbmVDaGlsZHJlbik6CisKIDIwMTEtMDQtMDMgIEVyaWMgU2VpZGVs
ICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA5NjBiZTllNTg1OTE5ZjNmY2Q0NjI5ZGM1NDliNGY5
ZWVhMDY0NDQ2Li5hYmYzMDMwMThkYWU4ZWJjMDFkMzRkYWNlYjhmZjczNmIxMWU4NzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQpAQCAtMjY3Nyw2ICsyNjc3LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9
IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlDb250ZXh0LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0JpZGlSdW5MaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvSHlw
aGVuYXRpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0h5cGhlbmF0aW9u
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IGZkNDNlNzlkNGZmNWNmYzdjYzJhMGMwMDgzNDQ2ZTZmOTdkZjY3NDEu
LjRiOTIyYTA4OTk4MzRjODEzOGIwNzcxNDdiNzJlNzQ4ZTZmZWE0MmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTkwMCw2ICs5MDAsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL3NxbC9TUUxpdGVE
YXRhYmFzZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9zcWwvU1FMaXRlVHJhbnNhY3Rpb24u
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9CYXNlNjQuaCcsCisgICAgICAgICAgICAn
cGxhdGZvcm0vdGV4dC9CaWRpUnVuTGlzdC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0
L0JpZGlDb250ZXh0LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVy
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KaW5kZXggNGMyZTE5ZjAwZjNjNzIzNzc5N2UxNzBiZTE5NDNkNzdkMjhmZWU0ZS4uNTlmYjhi
MGIxZTBkM2M1NzZlNzZjZDBkM2ZiMzQwYzVhMTJkMmE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTE5
NjEsNiArMTk2MSw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3JtL0tpbGxSaW5nLmggXAog
ICAgIHBsYXRmb3JtL0tVUkwuaCBcCiAgICAgcGxhdGZvcm0vTGVuZ3RoLmggXAorICAgIHBsYXRm
b3JtL3RleHQvQmlkaVJ1bkxpc3QuaCBcCiAgICAgcGxhdGZvcm0vdGV4dC9MaW5lRW5kaW5nLmgg
XAogICAgIHBsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaCBcCiAgICAgcGxhdGZvcm0v
dGV4dC9UZXh0Q2hlY2tpbmcuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCmluZGV4IDU3MGQxZmE2MTU2NjFhZWNmNTk3ZWIyMjEzMDQzNmMxMDk2NmUx
ODQuLjFjNzBhOTJjNTA3NTMyM2ZmM2VkYmEwMjEzODUxNmRkMTljZTQ0YWUgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0zMDQ4MSw2ICszMDQ4
MSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cdGV4dFxCaWRpUnVuTGlzdC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxIeXBoZW5hdGlv
bi5oIgogCQkJCQk+CiAJCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDM3OTdjMzFkNjc1M2RkNjc1Yzc1NzNmMWM0
YzdmZTlkMjhmODgxNTAuLjUzNWU4MmY1NGFjYThkYzg5YzQ5Nzg5ZjliNTY5ZTY2ZDQzMTgzMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTM2MzQsNiArMzYzNCw3IEBACiAJCUE4QzIyODBFMTFENEE1OTcwMEQ1QTdEMyAvKiBE
b2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBOEMyMjgwRDExRDRBNTk3MDBENUE3RDMgLyogRG9jdW1lbnRQYXJzZXIuY3BwICov
OyB9OwogCQlBOEMyMjhBMTExRDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVudFBh
cnNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThD
MjI4OUYxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCAqLzsg
fTsKIAkJQThDMjI4QTIxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJz
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThD
MjI4QTAxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuY3BwICov
OyB9OworCQlBOEM0MDI5MzEzNDhCMjIyMDA2M0YxRTUgLyogQmlkaVJ1bkxpc3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzQwMjkyMTM0OEIyMjIw
MDYzRjFFNSAvKiBCaWRpUnVuTGlzdC5oICovOyB9OwogCQlBOEM0QTdGRDA5RDU2MzI3MDAwM0FD
OEQgLyogU3R5bGVkRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQThDNEE3RUIwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBOEM0QTdG
RTA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEM0QTdFQzA5RDU2MzI3MDAwM0FDOEQgLyog
U3R5bGVkRWxlbWVudC5jcHAgKi87IH07CiAJCUE4QzRBODAwMDlENTYzMjcwMDAzQUM4RCAvKiBO
b2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4
QzRBN0VFMDlENTYzMjcwMDAzQUM4RCAvKiBOb2RlLmNwcCAqLzsgfTsKQEAgLTEwMDEzLDYgKzEw
MDE0LDcgQEAKIAkJQThDMjI4MEQxMUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFyc2VyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50UGFyc2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDMjI4OUYxMUQ1NzIyRTAwRDVBN0Qz
IC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOEMyMjhBMDExRDU3MjJFMDBENUE3RDMgLyogRGVjb2RlZERhdGFEb2N1bWVu
dFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZWNvZGVk
RGF0YURvY3VtZW50UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQThD
NDAyOTIxMzQ4QjIyMjAwNjNGMUU1IC8qIEJpZGlSdW5MaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEJpZGlSdW5MaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUE4QzRBN0VCMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZWRFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE4QzRBN0VDMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZWRFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQThDNEE3RUUwOUQ1NjMyNzAwMDNB
QzhEIC8qIE5vZGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5v
ZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc3OTUsNiArMTc3OTcsNyBA
QAogCQkJCUIyQzNEOUYyMEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpQ29udGV4dC5jcHAgKi8sCiAJ
CQkJQjJDM0Q5RjMwRDAwNkMxRDAwRUY2RjI2IC8qIEJpZGlDb250ZXh0LmggKi8sCiAJCQkJQjJD
M0Q5RjQwRDAwNkMxRDAwRUY2RjI2IC8qIEJpZGlSZXNvbHZlci5oICovLAorCQkJCUE4QzQwMjky
MTM0OEIyMjIwMDYzRjFFNSAvKiBCaWRpUnVuTGlzdC5oICovLAogCQkJCTM3NUNEMjMxMTE5RDQz
QzgwMEEyQTg1OSAvKiBIeXBoZW5hdGlvbi5oICovLAogCQkJCTg5QjVFQTlGMTFFODAwM0QwMEYy
MzY3RSAvKiBMaW5lRW5kaW5nLmNwcCAqLywKIAkJCQk4OUI1RUFBMDExRTgwMDNEMDBGMjM2N0Ug
LyogTGluZUVuZGluZy5oICovLApAQCAtMTk4MTYsNiArMTk4MTksNyBAQAogCQkJCUIyQzNEQTI0
MEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJD
M0RBMjUwRDAwNkMxRDAwRUY2RjI2IC8qIEJpZGlSZXNvbHZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkNFNzg5ODYxMTIwRTdBNjAwNjBFQ0U1IC8qIEJpZGlSdW4uaCBpbiBIZWFkZXJzICovLAor
CQkJCUE4QzQwMjkzMTM0OEIyMjIwMDYzRjFFNSAvKiBCaWRpUnVuTGlzdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTM4MTkyMDUwRjg3RTFFQzAwRDUzNTJBIC8qIEJpbmFyeVByb3BlcnR5TGlzdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQTYyMkE4RkIxMjJDNDRBNjAwQTc4NUIzIC8qIEJpbmRpbmdT
ZWN1cml0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTYyMkE4RkQxMjJDNDRBNjAwQTc4NUIzIC8q
IEJpbmRpbmdTZWN1cml0eUJhc2UuaCBpbiBIZWFkZXJzICovLApAQCAtMjEyMDIsNyArMjEyMDYs
NiBAQAogCQkJCUI4ODVFOEQ1MTFFMDZERDIwMDlGRkJGNCAvKiBJbnNwZWN0b3JBcHBsaWNhdGlv
bkNhY2hlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTRGNzA3QTlBMTFFRjY3OTQwMEFDREE2
OSAvKiBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjNE
NEM0NzkxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50Lmgg
aW4gSGVhZGVycyAqLywKLQkJCQkyMjc3Nzc2MDEzNDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9y
RnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQjk1QzBFOTczMzA4MDAy
NjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzMzNUJGOTEy
RTA3REMzMDBEMzMwMTEgLyogSW5zcGVjdG9yQ29uc29sZUFnZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGM0Y1Q0YxMTEyRUQ4MUE4MDA4NEM1NjkgLyogSW5zcGVjdG9yQ29uc29sZUluc3RydW1l
bnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMTIxNSw2ICsyMTIxOCw3IEBACiAJCQkJN0Ey
NDU4N0MxMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QTc0RUNCQjEwMTgzOUE2MDBCRjkzOUUgLyogSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYwNjE3NDBGNUYwMEFDMDBBMDdFQUMgLyogSW5z
cGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQkyMjc3Nzc2MDEz
NDVERUE5MDA4RUE0NTUgLyogSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmggaW4gSGVhZGVycyAq
LywKIAkJCQlGMzQ0QzcxNDExMjVCODJDMDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzNDRDNzUzMTEyOTREOUQwMEYyNkVFRSAvKiBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTBFNzcwRjEw
QzAwQTg4MDBBMDI3NkUgLyogSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmggaW4gSGVhZGVycyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuY3BwCmluZGV4IGQ3NTM4Mjg3NWNjZTU3MWRmYWVjYjJiNWU3NGI1NzVmMzZjNmZjNTkuLjI1
YTQ2NTQzNDNkZDEwMWE1YmJlNjQ0ZWExZmMxZDhhYzAyYzkwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMzk3
LDcgKzM5NywxMSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZv
bnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRgogICAgIGlmIChwYWludGluZ0Rp
c2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEZJWE1FOiBUaGlzIG93bmVyc2hp
cCBzaG91bGQgYmUgcmV2ZXJzZWQuIFdlIHNob3VsZCBwYXNzIEJpZGlSdW5MaXN0CisgICAgLy8g
dG8gQmlkaVJlc29sdmVyIGluIGNyZWF0ZUJpZGlSdW5zRm9yTGluZS4KICAgICBCaWRpUmVzb2x2
ZXI8VGV4dFJ1bkl0ZXJhdG9yLCBCaWRpQ2hhcmFjdGVyUnVuPiBiaWRpUmVzb2x2ZXI7CisgICAg
QmlkaVJ1bkxpc3Q8QmlkaUNoYXJhY3RlclJ1bj4mIGJpZGlSdW5zID0gYmlkaVJlc29sdmVyLnJ1
bnMoKTsKKwogICAgIFdURjo6VW5pY29kZTo6RGlyZWN0aW9uIHBhcmFncmFwaERpcmVjdGlvbiA9
IHJ1bi5sdHIoKSA/IFdURjo6VW5pY29kZTo6TGVmdFRvUmlnaHQgOiBXVEY6OlVuaWNvZGU6OlJp
Z2h0VG9MZWZ0OwogCiAgICAgYmlkaVJlc29sdmVyLnNldFN0YXR1cyhCaWRpU3RhdHVzKHBhcmFn
cmFwaERpcmVjdGlvbiwgcGFyYWdyYXBoRGlyZWN0aW9uLCBwYXJhZ3JhcGhEaXJlY3Rpb24sIEJp
ZGlDb250ZXh0OjpjcmVhdGUocnVuLmx0cigpID8gMCA6IDEsIHBhcmFncmFwaERpcmVjdGlvbiwg
cnVuLmRpcmVjdGlvbmFsT3ZlcnJpZGUoKSkpKTsKQEAgLTQwNSwxMSArNDA5LDExIEBAIHZvaWQg
R3JhcGhpY3NDb250ZXh0OjpkcmF3QmlkaVRleHQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBGCiAgICAgYmlkaVJlc29sdmVyLnNldFBvc2l0aW9uKFRleHRSdW5J
dGVyYXRvcigmcnVuLCAwKSk7CiAgICAgYmlkaVJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGlu
ZShUZXh0UnVuSXRlcmF0b3IoJnJ1biwgcnVuLmxlbmd0aCgpKSk7CiAKLSAgICBpZiAoIWJpZGlS
ZXNvbHZlci5ydW5Db3VudCgpKQorICAgIGlmICghYmlkaVJ1bnMucnVuQ291bnQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgRmxvYXRQb2ludCBjdXJyUG9pbnQgPSBwb2ludDsKLSAgICBCaWRp
Q2hhcmFjdGVyUnVuKiBiaWRpUnVuID0gYmlkaVJlc29sdmVyLmZpcnN0UnVuKCk7CisgICAgQmlk
aUNoYXJhY3RlclJ1biogYmlkaVJ1biA9IGJpZGlSdW5zLmZpcnN0UnVuKCk7CiAgICAgd2hpbGUg
KGJpZGlSdW4pIHsKIAogICAgICAgICBUZXh0UnVuIHN1YnJ1biA9IHJ1bjsKQEAgLTQyNSw3ICs0
MjksNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnQmIGZv
bnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRgogICAgICAgICAgICAgY3VyclBvaW50Lm1v
dmUoZm9udC53aWR0aChzdWJydW4pLCAwKTsKICAgICB9CiAKLSAgICBiaWRpUmVzb2x2ZXIuZGVs
ZXRlUnVucygpOworICAgIGJpZGlSdW5zLmRlbGV0ZVJ1bnMoKTsKIH0KIAogdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OmRyYXdIaWdobGlnaHRGb3JUZXh0KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRl
eHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBoLCBjb25zdCBDb2xvciYg
YmFja2dyb3VuZENvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIGludCBmcm9tLCBpbnQgdG8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAppbmRleCA2MWJh
N2VhYzNiNTE3ZjBhYjY2ZGNjYzZiNDUxM2Y0ZjZlMGNhYWU1Li42Yjg5YTYwNzM4NWNlMDE3MDM3
NzgzMDk2MWFlNGYwMDQwM2E1ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L0JpZGlSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQv
QmlkaVJlc29sdmVyLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNkZWZpbmUgQmlkaVJlc29sdmVyX2gK
IAogI2luY2x1ZGUgIkJpZGlDb250ZXh0LmgiCisjaW5jbHVkZSAiQmlkaVJ1bkxpc3QuaCIKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTE0Nyw2ICsxNDgsOCBAQCBlbnVtIFZpc3VhbERp
cmVjdGlvbk92ZXJyaWRlIHsKICAgICBWaXN1YWxSaWdodFRvTGVmdE92ZXJyaWRlCiB9OwogCisv
LyBCaWRpUmVzb2x2ZXIgaXMgV2ViS2l0J3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIFVuaWNvZGUg
QmlkaSBBbGdvcml0aG0KKy8vIGh0dHA6Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyOQogdGVtcGxh
dGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+IGNsYXNzIEJpZGlSZXNvbHZlciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoQmlkaVJlc29sdmVyKTsKIHB1YmxpYzoKQEAgLTE1NCwxMCAr
MTU3LDYgQEAgcHVibGljOgogICAgICAgICA6IG1fZGlyZWN0aW9uKFdURjo6VW5pY29kZTo6T3Ro
ZXJOZXV0cmFsKQogICAgICAgICAsIG1fcmVhY2hlZEVuZE9mTGluZShmYWxzZSkKICAgICAgICAg
LCBtX2VtcHR5UnVuKHRydWUpCi0gICAgICAgICwgbV9maXJzdFJ1bigwKQotICAgICAgICAsIG1f
bGFzdFJ1bigwKQotICAgICAgICAsIG1fbG9naWNhbGx5TGFzdFJ1bigwKQotICAgICAgICAsIG1f
cnVuQ291bnQoMCkKICAgICAgICAgLCBtX2luSXNvbGF0ZShmYWxzZSkKICAgICB7CiAgICAgfQpA
QCAtMTkzLDIyICsxOTIsMTYgQEAgcHVibGljOgogCiAgICAgdm9pZCBjcmVhdGVCaWRpUnVuc0Zv
ckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgPSBOb1Zp
c3VhbE92ZXJyaWRlLCBib29sIGhhcmRMaW5lQnJlYWsgPSBmYWxzZSk7CiAKLSAgICBSdW4qIGZp
cnN0UnVuKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFJ1bjsgfQotICAgIFJ1biogbGFzdFJ1bigp
IGNvbnN0IHsgcmV0dXJuIG1fbGFzdFJ1bjsgfQotICAgIFJ1biogbG9naWNhbGx5TGFzdFJ1bigp
IGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbGx5TGFzdFJ1bjsgfQotICAgIHVuc2lnbmVkIHJ1bkNv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9ydW5Db3VudDsgfQorICAgIEJpZGlSdW5MaXN0PFJ1bj4m
IHJ1bnMoKSB7IHJldHVybiBtX3J1bnM7IH0KIAotICAgIHZvaWQgYWRkUnVuKFJ1biopOwotICAg
IHZvaWQgcHJlcGVuZFJ1bihSdW4qKTsKLQotICAgIHZvaWQgbW92ZVJ1blRvRW5kKFJ1biopOwot
ICAgIHZvaWQgbW92ZVJ1blRvQmVnaW5uaW5nKFJ1biopOwotCi0gICAgdm9pZCBkZWxldGVSdW5z
KCk7CisgICAgLy8gRklYTUU6IFRoaXMgdXNlZCB0byBiZSBwYXJ0IG9mIGRlbGV0ZVJ1bnMoKSBi
dXQgd2FzIGEgbGF5ZXJpbmcgdmlvbGF0aW9uLgorICAgIC8vIEl0J3MgdW5jbGVhciBpZiB0aGlz
IGlzIHN0aWxsIG5lZWRlZC4KKyAgICB2b2lkIG1hcmtDdXJyZW50UnVuRW1wdHkoKSB7IG1fZW1w
dHlSdW4gPSB0cnVlOyB9CiAKIHByb3RlY3RlZDoKKyAgICAvLyBGSVhNRTogSW5zdGVhZCBvZiBJ
bmxpbmVCaWRpUmVzb2x2ZXJzIHN1YmNsYXNzaW5nIHRoaXMgbWV0aG9kLCB3ZSBzaG91bGQKKyAg
ICAvLyBwYXNzIGluIHNvbWUgc29ydCBvZiBUcmFpdHMgb2JqZWN0IHdoaWNoIGtub3dzIGhvdyB0
byBjcmVhdGUgcnVucyBmb3IgYXBwZW5kaW5nLgogICAgIHZvaWQgYXBwZW5kUnVuKCk7Ci0gICAg
dm9pZCByZXZlcnNlUnVucyh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKTsKIAogICAgIEl0
ZXJhdG9yIG1fY3VycmVudDsKICAgICAvLyBzb3IgYW5kIGVvciBhcmUgInN0YXJ0IG9mIHJ1biIg
YW5kICJlbmQgb2YgcnVuIiByZXNwZWN0aXZlbHkgYW5kIGNvcnJlcG9uZApAQCAtMjIzLDEwICsy
MTYsMTAgQEAgcHJvdGVjdGVkOgogICAgIEl0ZXJhdG9yIG1fbGFzdEJlZm9yZUVUOyAvLyBCZWZv
cmUgYSBFdXJvcGVhbk51bWJlclRlcm1pbmF0b3IKICAgICBib29sIG1fZW1wdHlSdW47CiAKLSAg
ICBSdW4qIG1fZmlyc3RSdW47Ci0gICAgUnVuKiBtX2xhc3RSdW47Ci0gICAgUnVuKiBtX2xvZ2lj
YWxseUxhc3RSdW47Ci0gICAgdW5zaWduZWQgbV9ydW5Db3VudDsKKyAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgbm90IGJlbG9uZyB0byB0aGUgcmVzb2x2ZXIsIGJ1dCByYXRoZXIgYmUgcGFzc2Vk
CisgICAgLy8gaW50byBjcmVhdGVCaWRpUnVuc0ZvckxpbmUgYnkgdGhlIGNhbGxlci4KKyAgICBC
aWRpUnVuTGlzdDxSdW4+IG1fcnVuczsKKwogICAgIE1pZHBvaW50U3RhdGU8SXRlcmF0b3I+IG1f
bWlkcG9pbnRTdGF0ZTsKIAogICAgIGJvb2wgbV9pbklzb2xhdGU7CkBAIC0yNDMsNzYgKzIzNiw2
IEBAIHByaXZhdGU6CiB9OwogCiB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4K
LWlubGluZSB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6YWRkUnVuKFJ1biogcnVu
KQotewotICAgIGlmICghbV9maXJzdFJ1bikKLSAgICAgICAgbV9maXJzdFJ1biA9IHJ1bjsKLSAg
ICBlbHNlCi0gICAgICAgIG1fbGFzdFJ1bi0+bV9uZXh0ID0gcnVuOwotICAgIG1fbGFzdFJ1biA9
IHJ1bjsKLSAgICBtX3J1bkNvdW50Kys7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwg
Y2xhc3MgUnVuPgotaW5saW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpwcmVw
ZW5kUnVuKFJ1biogcnVuKQotewotICAgIEFTU0VSVCghcnVuLT5tX25leHQpOwotCi0gICAgaWYg
KCFtX2xhc3RSdW4pCi0gICAgICAgIG1fbGFzdFJ1biA9IHJ1bjsKLSAgICBlbHNlCi0gICAgICAg
IHJ1bi0+bV9uZXh0ID0gbV9maXJzdFJ1bjsKLSAgICBtX2ZpcnN0UnVuID0gcnVuOwotICAgIG1f
cnVuQ291bnQrKzsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+Ci1p
bmxpbmUgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46Om1vdmVSdW5Ub0VuZChSdW4q
IHJ1bikKLXsKLSAgICBBU1NFUlQobV9maXJzdFJ1bik7Ci0gICAgQVNTRVJUKG1fbGFzdFJ1bik7
Ci0gICAgQVNTRVJUKHJ1bi0+bV9uZXh0KTsKLQotICAgIFJ1biogY3VycmVudCA9IDA7Ci0gICAg
UnVuKiBuZXh0ID0gbV9maXJzdFJ1bjsKLSAgICB3aGlsZSAobmV4dCAhPSBydW4pIHsKLSAgICAg
ICAgY3VycmVudCA9IG5leHQ7Ci0gICAgICAgIG5leHQgPSBjdXJyZW50LT5uZXh0KCk7Ci0gICAg
fQotCi0gICAgaWYgKCFjdXJyZW50KQotICAgICAgICBtX2ZpcnN0UnVuID0gcnVuLT5uZXh0KCk7
Ci0gICAgZWxzZQotICAgICAgICBjdXJyZW50LT5tX25leHQgPSBydW4tPm1fbmV4dDsKLQotICAg
IHJ1bi0+bV9uZXh0ID0gMDsKLSAgICBtX2xhc3RSdW4tPm1fbmV4dCA9IHJ1bjsKLSAgICBtX2xh
c3RSdW4gPSBydW47Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xhc3MgUnVuPgot
aW5saW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+Ojptb3ZlUnVuVG9CZWdpbm5p
bmcoUnVuKiBydW4pCi17Ci0gICAgQVNTRVJUKG1fZmlyc3RSdW4pOwotICAgIEFTU0VSVChtX2xh
c3RSdW4pOwotICAgIEFTU0VSVChydW4gIT0gbV9maXJzdFJ1bik7Ci0KLSAgICBSdW4qIGN1cnJl
bnQgPSBtX2ZpcnN0UnVuOwotICAgIFJ1biogbmV4dCA9IGN1cnJlbnQtPm5leHQoKTsKLSAgICB3
aGlsZSAobmV4dCAhPSBydW4pIHsKLSAgICAgICAgY3VycmVudCA9IG5leHQ7Ci0gICAgICAgIG5l
eHQgPSBjdXJyZW50LT5uZXh0KCk7Ci0gICAgfQotCi0gICAgY3VycmVudC0+bV9uZXh0ID0gcnVu
LT5tX25leHQ7Ci0gICAgaWYgKHJ1biA9PSBtX2xhc3RSdW4pCi0gICAgICAgIG1fbGFzdFJ1biA9
IGN1cnJlbnQ7Ci0KLSAgICBydW4tPm1fbmV4dCA9IG1fZmlyc3RSdW47Ci0gICAgbV9maXJzdFJ1
biA9IHJ1bjsKLX0KLQotdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+CiB2b2lk
IEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6YXBwZW5kUnVuKCkKIHsKICAgICBpZiAoIW1f
ZW1wdHlSdW4gJiYgIW1fZW9yLmF0RW5kKCkpIHsKQEAgLTMyNSw3ICsyNDgsNyBAQCB2b2lkIEJp
ZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6YXBwZW5kUnVuKCkKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChlbmRPZmZzZXQgPj0gc3RhcnRPZmZzZXQpCi0gICAgICAgICAgICBhZGRSdW4obmV3
IFJ1bihzdGFydE9mZnNldCwgZW5kT2Zmc2V0ICsgMSwgY29udGV4dCgpLCBtX2RpcmVjdGlvbikp
OworICAgICAgICAgICAgbV9ydW5zLmFkZFJ1bihuZXcgUnVuKHN0YXJ0T2Zmc2V0LCBlbmRPZmZz
ZXQgKyAxLCBjb250ZXh0KCksIG1fZGlyZWN0aW9uKSk7CiAKICAgICAgICAgbV9lb3IuaW5jcmVt
ZW50KCk7CiAgICAgICAgIG1fc29yID0gbV9lb3I7CkBAIC0zOTAsOCArMzEzLDEwIEBAIHZvaWQg
QmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+Ojpsb3dlckV4cGxpY2l0RW1iZWRkaW5nTGV2ZWwo
V1RGOjpVbmljb2RlOjpEaXJlCiAgICAgICAgIH0KICAgICAgICAgbV9lb3IgPSBtX2xhc3Q7CiAg
ICAgfQorCiAgICAgYXBwZW5kUnVuKCk7CiAgICAgbV9lbXB0eVJ1biA9IHRydWU7CisKICAgICAv
LyBzb3IgZm9yIHRoZSBuZXcgcnVuIGlzIGRldGVybWluZWQgYnkgdGhlIGhpZ2hlciBsZXZlbCAo
cnVsZSBYMTApCiAgICAgc2V0TGFzdERpcihmcm9tKTsKICAgICBzZXRMYXN0U3Ryb25nRGlyKGZy
b20pOwpAQCAtNDI4LDggKzM1MywxMCBAQCB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVu
Pjo6cmFpc2VFeHBsaWNpdEVtYmVkZGluZ0xldmVsKFdURjo6VW5pY29kZTo6RGlyZQogICAgICAg
ICB9CiAgICAgICAgIG1fZW9yID0gbV9sYXN0OwogICAgIH0KKwogICAgIGFwcGVuZFJ1bigpOwog
ICAgIG1fZW1wdHlSdW4gPSB0cnVlOworCiAgICAgc2V0TGFzdERpcih0byk7CiAgICAgc2V0TGFz
dFN0cm9uZ0Rpcih0byk7CiAgICAgbV9lb3IgPSBJdGVyYXRvcigpOwpAQCAtNDc4LDc1ICs0MDUs
NiBAQCBib29sIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6Y29tbWl0RXhwbGljaXRFbWJl
ZGRpbmcoKQogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4KLXZvaWQg
QmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpkZWxldGVSdW5zKCkKLXsKLSAgICBtX2VtcHR5
UnVuID0gdHJ1ZTsKLSAgICBpZiAoIW1fZmlyc3RSdW4pCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJ1biogY3VyciA9IG1fZmlyc3RSdW47Ci0gICAgd2hpbGUgKGN1cnIpIHsKLSAgICAgICAgUnVu
KiBzID0gY3Vyci0+bmV4dCgpOwotICAgICAgICBjdXJyLT5kZXN0cm95KCk7Ci0gICAgICAgIGN1
cnIgPSBzOwotICAgIH0KLQotICAgIG1fZmlyc3RSdW4gPSAwOwotICAgIG1fbGFzdFJ1biA9IDA7
Ci0gICAgbV9ydW5Db3VudCA9IDA7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xh
c3MgUnVuPgotdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OnJldmVyc2VSdW5zKHVu
c2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpCi17Ci0gICAgaWYgKHN0YXJ0ID49IGVuZCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGVuZCA8IG1fcnVuQ291bnQpOwotICAgIAotICAg
IC8vIEdldCB0aGUgaXRlbSBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBydW5zIHRvIHJldmVyc2Ug
YW5kIHB1dCBpdCBpbgotICAgIC8vIHxiZWZvcmVTdGFydHwuICB8Y3Vycnwgc2hvdWxkIHBvaW50
IHRvIHRoZSBmaXJzdCBydW4gdG8gcmV2ZXJzZS4KLSAgICBSdW4qIGN1cnIgPSBtX2ZpcnN0UnVu
OwotICAgIFJ1biogYmVmb3JlU3RhcnQgPSAwOwotICAgIHVuc2lnbmVkIGkgPSAwOwotICAgIHdo
aWxlIChpIDwgc3RhcnQpIHsKLSAgICAgICAgaSsrOwotICAgICAgICBiZWZvcmVTdGFydCA9IGN1
cnI7Ci0gICAgICAgIGN1cnIgPSBjdXJyLT5uZXh0KCk7Ci0gICAgfQotCi0gICAgUnVuKiBzdGFy
dFJ1biA9IGN1cnI7Ci0gICAgd2hpbGUgKGkgPCBlbmQpIHsKLSAgICAgICAgaSsrOwotICAgICAg
ICBjdXJyID0gY3Vyci0+bmV4dCgpOwotICAgIH0KLSAgICBSdW4qIGVuZFJ1biA9IGN1cnI7Ci0g
ICAgUnVuKiBhZnRlckVuZCA9IGN1cnItPm5leHQoKTsKLQotICAgIGkgPSBzdGFydDsKLSAgICBj
dXJyID0gc3RhcnRSdW47Ci0gICAgUnVuKiBuZXdOZXh0ID0gYWZ0ZXJFbmQ7Ci0gICAgd2hpbGUg
KGkgPD0gZW5kKSB7Ci0gICAgICAgIC8vIERvIHRoZSByZXZlcnNhbC4KLSAgICAgICAgUnVuKiBu
ZXh0ID0gY3Vyci0+bmV4dCgpOwotICAgICAgICBjdXJyLT5tX25leHQgPSBuZXdOZXh0OwotICAg
ICAgICBuZXdOZXh0ID0gY3VycjsKLSAgICAgICAgY3VyciA9IG5leHQ7Ci0gICAgICAgIGkrKzsK
LSAgICB9Ci0KLSAgICAvLyBOb3cgaG9vayB1cCBiZWZvcmVTdGFydCBhbmQgYWZ0ZXJFbmQgdG8g
dGhlIHN0YXJ0UnVuIGFuZCBlbmRSdW4uCi0gICAgaWYgKGJlZm9yZVN0YXJ0KQotICAgICAgICBi
ZWZvcmVTdGFydC0+bV9uZXh0ID0gZW5kUnVuOwotICAgIGVsc2UKLSAgICAgICAgbV9maXJzdFJ1
biA9IGVuZFJ1bjsKLQotICAgIHN0YXJ0UnVuLT5tX25leHQgPSBhZnRlckVuZDsKLSAgICBpZiAo
IWFmdGVyRW5kKQotICAgICAgICBtX2xhc3RSdW4gPSBzdGFydFJ1bjsKLX0KLQotdGVtcGxhdGUg
PGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+CiBpbmxpbmUgdm9pZCBCaWRpUmVzb2x2ZXI8SXRl
cmF0b3IsIFJ1bj46OnVwZGF0ZVN0YXR1c0xhc3RGcm9tQ3VycmVudERpcmVjdGlvbihXVEY6OlVu
aWNvZGU6OkRpcmVjdGlvbiBkaXJDdXJyZW50KQogewogICAgIHVzaW5nIG5hbWVzcGFjZSBXVEY6
OlVuaWNvZGU7CkBAIC01OTMsNyArNDUxLDcgQEAgaW5saW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0
ZXJhdG9yLCBSdW4+OjpyZW9yZGVyUnVuc0Zyb21MZXZlbHMoKQogewogICAgIHVuc2lnbmVkIGNo
YXIgbGV2ZWxMb3cgPSAxMjg7CiAgICAgdW5zaWduZWQgY2hhciBsZXZlbEhpZ2ggPSAwOwotICAg
IGZvciAoUnVuKiBydW4gPSBmaXJzdFJ1bigpOyBydW47IHJ1biA9IHJ1bi0+bmV4dCgpKSB7Cisg
ICAgZm9yIChSdW4qIHJ1biA9IG1fcnVucy5maXJzdFJ1bigpOyBydW47IHJ1biA9IHJ1bi0+bmV4
dCgpKSB7CiAgICAgICAgIGxldmVsSGlnaCA9IHN0ZDo6bWF4KHJ1bi0+bGV2ZWwoKSwgbGV2ZWxI
aWdoKTsKICAgICAgICAgbGV2ZWxMb3cgPSBzdGQ6Om1pbihydW4tPmxldmVsKCksIGxldmVsTG93
KTsKICAgICB9CkBAIC02MDcsMTEgKzQ2NSwxMSBAQCBpbmxpbmUgdm9pZCBCaWRpUmVzb2x2ZXI8
SXRlcmF0b3IsIFJ1bj46OnJlb3JkZXJSdW5zRnJvbUxldmVscygpCiAgICAgaWYgKCEobGV2ZWxM
b3cgJSAyKSkKICAgICAgICAgbGV2ZWxMb3crKzsKIAotICAgIHVuc2lnbmVkIGNvdW50ID0gcnVu
Q291bnQoKSAtIDE7CisgICAgdW5zaWduZWQgY291bnQgPSBtX3J1bnMucnVuQ291bnQoKSAtIDE7
CiAKICAgICB3aGlsZSAobGV2ZWxIaWdoID49IGxldmVsTG93KSB7CiAgICAgICAgIHVuc2lnbmVk
IGkgPSAwOwotICAgICAgICBSdW4qIHJ1biA9IGZpcnN0UnVuKCk7CisgICAgICAgIFJ1biogcnVu
ID0gbV9ydW5zLmZpcnN0UnVuKCk7CiAgICAgICAgIHdoaWxlIChpIDwgY291bnQpIHsKICAgICAg
ICAgICAgIGZvciAoO2kgPCBjb3VudCAmJiBydW4gJiYgcnVuLT5sZXZlbCgpIDwgbGV2ZWxIaWdo
OyBpKyspCiAgICAgICAgICAgICAgICAgcnVuID0gcnVuLT5uZXh0KCk7CkBAIC02MTksNyArNDc3
LDcgQEAgaW5saW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpyZW9yZGVyUnVu
c0Zyb21MZXZlbHMoKQogICAgICAgICAgICAgZm9yICg7aSA8PSBjb3VudCAmJiBydW4gJiYgcnVu
LT5sZXZlbCgpID49IGxldmVsSGlnaDsgaSsrKQogICAgICAgICAgICAgICAgIHJ1biA9IHJ1bi0+
bmV4dCgpOwogICAgICAgICAgICAgdW5zaWduZWQgZW5kID0gaSAtIDE7Ci0gICAgICAgICAgICBy
ZXZlcnNlUnVucyhzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIG1fcnVucy5yZXZlcnNlUnVucyhz
dGFydCwgZW5kKTsKICAgICAgICAgfQogICAgICAgICBsZXZlbEhpZ2gtLTsKICAgICB9CkBAIC02
NDIsOSArNTAwLDkgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNyZWF0ZUJp
ZGlSdW5zRm9yTGluZShjb25zdCBJdGVyYXRvciYgZW5kLCBWaXMKICAgICAgICAgfQogICAgICAg
ICBtX2RpcmVjdGlvbiA9IG92ZXJyaWRlID09IFZpc3VhbExlZnRUb1JpZ2h0T3ZlcnJpZGUgPyBM
ZWZ0VG9SaWdodCA6IFJpZ2h0VG9MZWZ0OwogICAgICAgICBhcHBlbmRSdW4oKTsKLSAgICAgICAg
bV9sb2dpY2FsbHlMYXN0UnVuID0gbV9sYXN0UnVuOworICAgICAgICBtX3J1bnMuc2V0TG9naWNh
bGx5TGFzdFJ1bihtX3J1bnMubGFzdFJ1bigpKTsKICAgICAgICAgaWYgKG92ZXJyaWRlID09IFZp
c3VhbFJpZ2h0VG9MZWZ0T3ZlcnJpZGUpCi0gICAgICAgICAgICByZXZlcnNlUnVucygwLCBydW5D
b3VudCgpIC0gMSk7CisgICAgICAgICAgICBtX3J1bnMucmV2ZXJzZVJ1bnMoMCwgbV9ydW5zLnJ1
bkNvdW50KCkgLSAxKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTAxNCw3ICs4NzIs
NyBAQCB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6Y3JlYXRlQmlkaVJ1bnNGb3JM
aW5lKGNvbnN0IEl0ZXJhdG9yJiBlbmQsIFZpcwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9s
b2dpY2FsbHlMYXN0UnVuID0gbV9sYXN0UnVuOworICAgIG1fcnVucy5zZXRMb2dpY2FsbHlMYXN0
UnVuKG1fcnVucy5sYXN0UnVuKCkpOwogICAgIHJlb3JkZXJSdW5zRnJvbUxldmVscygpOwogICAg
IGVuZE9mTGluZSA9IEl0ZXJhdG9yKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0JpZGlSdW5MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0JpZGlSdW5MaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTRhYTNjMmM5ZWVlYThhN2JkNDZjMGM0ZTdlNTky
ZTg3ZmM3ZDBiYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvQmlkaVJ1bkxpc3QuaApAQCAtMCwwICsxLDIwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwMCBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA0LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodCByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLwor
CisjaWZuZGVmIEJpZGlSdW5MaXN0X2gKKyNkZWZpbmUgQmlkaVJ1bkxpc3RfaAorCisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGUg
PGNsYXNzIFJ1bj4KK2NsYXNzIEJpZGlSdW5MaXN0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShCaWRpUnVuTGlzdCk7CitwdWJsaWM6CisgICAgQmlkaVJ1bkxpc3QoKQorICAgICAgICA6IG1f
Zmlyc3RSdW4oMCkKKyAgICAgICAgLCBtX2xhc3RSdW4oMCkKKyAgICAgICAgLCBtX2xvZ2ljYWxs
eUxhc3RSdW4oMCkKKyAgICAgICAgLCBtX3J1bkNvdW50KDApCisgICAgeworICAgIH0KKworICAg
IC8vIEZJWE1FOiBPbmNlIEJpZGlSZXNvbHZlciBubyBsb25nZXIgb3ducyB0aGUgQmlkaVJ1bkxp
c3QsCisgICAgLy8gdGhlbiB+QmlkaVJ1bkxpc3Qgc2hvdWxkIGNhbGwgZGVsZXRlUnVucygpIGF1
dG9tYXRpY2FsbHkuCisKKyAgICBSdW4qIGZpcnN0UnVuKCkgY29uc3QgeyByZXR1cm4gbV9maXJz
dFJ1bjsgfQorICAgIFJ1biogbGFzdFJ1bigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFJ1bjsgfQor
ICAgIFJ1biogbG9naWNhbGx5TGFzdFJ1bigpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbGx5TGFz
dFJ1bjsgfQorICAgIHVuc2lnbmVkIHJ1bkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9ydW5Db3Vu
dDsgfQorCisgICAgdm9pZCBhZGRSdW4oUnVuKik7CisgICAgdm9pZCBwcmVwZW5kUnVuKFJ1biop
OworCisgICAgdm9pZCBtb3ZlUnVuVG9FbmQoUnVuKik7CisgICAgdm9pZCBtb3ZlUnVuVG9CZWdp
bm5pbmcoUnVuKik7CisKKyAgICB2b2lkIGRlbGV0ZVJ1bnMoKTsKKyAgICB2b2lkIHJldmVyc2VS
dW5zKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpOworICAgIHZvaWQgcmVvcmRlclJ1bnNG
cm9tTGV2ZWxzKCk7CisKKyAgICB2b2lkIHNldExvZ2ljYWxseUxhc3RSdW4oUnVuKiBydW4pIHsg
bV9sb2dpY2FsbHlMYXN0UnVuID0gcnVuOyB9CisKK3ByaXZhdGU6CisgICAgUnVuKiBtX2ZpcnN0
UnVuOworICAgIFJ1biogbV9sYXN0UnVuOworICAgIFJ1biogbV9sb2dpY2FsbHlMYXN0UnVuOwor
ICAgIHVuc2lnbmVkIG1fcnVuQ291bnQ7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgUnVuPgoraW5s
aW5lIHZvaWQgQmlkaVJ1bkxpc3Q8UnVuPjo6YWRkUnVuKFJ1biogcnVuKQoreworICAgIGlmICgh
bV9maXJzdFJ1bikKKyAgICAgICAgbV9maXJzdFJ1biA9IHJ1bjsKKyAgICBlbHNlCisgICAgICAg
IG1fbGFzdFJ1bi0+bV9uZXh0ID0gcnVuOworICAgIG1fbGFzdFJ1biA9IHJ1bjsKKyAgICBtX3J1
bkNvdW50Kys7Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBSdW4+CitpbmxpbmUgdm9pZCBCaWRpUnVu
TGlzdDxSdW4+OjpwcmVwZW5kUnVuKFJ1biogcnVuKQoreworICAgIEFTU0VSVCghcnVuLT5tX25l
eHQpOworCisgICAgaWYgKCFtX2xhc3RSdW4pCisgICAgICAgIG1fbGFzdFJ1biA9IHJ1bjsKKyAg
ICBlbHNlCisgICAgICAgIHJ1bi0+bV9uZXh0ID0gbV9maXJzdFJ1bjsKKyAgICBtX2ZpcnN0UnVu
ID0gcnVuOworICAgIG1fcnVuQ291bnQrKzsKK30KKwordGVtcGxhdGUgPGNsYXNzIFJ1bj4KK2lu
bGluZSB2b2lkIEJpZGlSdW5MaXN0PFJ1bj46Om1vdmVSdW5Ub0VuZChSdW4qIHJ1bikKK3sKKyAg
ICBBU1NFUlQobV9maXJzdFJ1bik7CisgICAgQVNTRVJUKG1fbGFzdFJ1bik7CisgICAgQVNTRVJU
KHJ1bi0+bV9uZXh0KTsKKworICAgIFJ1biogY3VycmVudCA9IDA7CisgICAgUnVuKiBuZXh0ID0g
bV9maXJzdFJ1bjsKKyAgICB3aGlsZSAobmV4dCAhPSBydW4pIHsKKyAgICAgICAgY3VycmVudCA9
IG5leHQ7CisgICAgICAgIG5leHQgPSBjdXJyZW50LT5uZXh0KCk7CisgICAgfQorCisgICAgaWYg
KCFjdXJyZW50KQorICAgICAgICBtX2ZpcnN0UnVuID0gcnVuLT5uZXh0KCk7CisgICAgZWxzZQor
ICAgICAgICBjdXJyZW50LT5tX25leHQgPSBydW4tPm1fbmV4dDsKKworICAgIHJ1bi0+bV9uZXh0
ID0gMDsKKyAgICBtX2xhc3RSdW4tPm1fbmV4dCA9IHJ1bjsKKyAgICBtX2xhc3RSdW4gPSBydW47
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBSdW4+CitpbmxpbmUgdm9pZCBCaWRpUnVuTGlzdDxSdW4+
Ojptb3ZlUnVuVG9CZWdpbm5pbmcoUnVuKiBydW4pCit7CisgICAgQVNTRVJUKG1fZmlyc3RSdW4p
OworICAgIEFTU0VSVChtX2xhc3RSdW4pOworICAgIEFTU0VSVChydW4gIT0gbV9maXJzdFJ1bik7
CisKKyAgICBSdW4qIGN1cnJlbnQgPSBtX2ZpcnN0UnVuOworICAgIFJ1biogbmV4dCA9IGN1cnJl
bnQtPm5leHQoKTsKKyAgICB3aGlsZSAobmV4dCAhPSBydW4pIHsKKyAgICAgICAgY3VycmVudCA9
IG5leHQ7CisgICAgICAgIG5leHQgPSBjdXJyZW50LT5uZXh0KCk7CisgICAgfQorCisgICAgY3Vy
cmVudC0+bV9uZXh0ID0gcnVuLT5tX25leHQ7CisgICAgaWYgKHJ1biA9PSBtX2xhc3RSdW4pCisg
ICAgICAgIG1fbGFzdFJ1biA9IGN1cnJlbnQ7CisKKyAgICBydW4tPm1fbmV4dCA9IG1fZmlyc3RS
dW47CisgICAgbV9maXJzdFJ1biA9IHJ1bjsKK30KKwordGVtcGxhdGUgPGNsYXNzIFJ1bj4KK3Zv
aWQgQmlkaVJ1bkxpc3Q8UnVuPjo6ZGVsZXRlUnVucygpCit7CisgICAgaWYgKCFtX2ZpcnN0UnVu
KQorICAgICAgICByZXR1cm47CisKKyAgICBSdW4qIGN1cnIgPSBtX2ZpcnN0UnVuOworICAgIHdo
aWxlIChjdXJyKSB7CisgICAgICAgIFJ1biogcyA9IGN1cnItPm5leHQoKTsKKyAgICAgICAgY3Vy
ci0+ZGVzdHJveSgpOworICAgICAgICBjdXJyID0gczsKKyAgICB9CisKKyAgICBtX2ZpcnN0UnVu
ID0gMDsKKyAgICBtX2xhc3RSdW4gPSAwOworICAgIG1fcnVuQ291bnQgPSAwOworfQorCit0ZW1w
bGF0ZSA8Y2xhc3MgUnVuPgordm9pZCBCaWRpUnVuTGlzdDxSdW4+OjpyZXZlcnNlUnVucyh1bnNp
Z25lZCBzdGFydCwgdW5zaWduZWQgZW5kKQoreworICAgIGlmIChzdGFydCA+PSBlbmQpCisgICAg
ICAgIHJldHVybjsKKworICAgIEFTU0VSVChlbmQgPCBtX3J1bkNvdW50KTsKKworICAgIC8vIEdl
dCB0aGUgaXRlbSBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBydW5zIHRvIHJldmVyc2UgYW5kIHB1
dCBpdCBpbgorICAgIC8vIHxiZWZvcmVTdGFydHwuIHxjdXJyfCBzaG91bGQgcG9pbnQgdG8gdGhl
IGZpcnN0IHJ1biB0byByZXZlcnNlLgorICAgIFJ1biogY3VyciA9IG1fZmlyc3RSdW47CisgICAg
UnVuKiBiZWZvcmVTdGFydCA9IDA7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgd2hpbGUgKGkg
PCBzdGFydCkgeworICAgICAgICBpKys7CisgICAgICAgIGJlZm9yZVN0YXJ0ID0gY3VycjsKKyAg
ICAgICAgY3VyciA9IGN1cnItPm5leHQoKTsKKyAgICB9CisKKyAgICBSdW4qIHN0YXJ0UnVuID0g
Y3VycjsKKyAgICB3aGlsZSAoaSA8IGVuZCkgeworICAgICAgICBpKys7CisgICAgICAgIGN1cnIg
PSBjdXJyLT5uZXh0KCk7CisgICAgfQorICAgIFJ1biogZW5kUnVuID0gY3VycjsKKyAgICBSdW4q
IGFmdGVyRW5kID0gY3Vyci0+bmV4dCgpOworCisgICAgaSA9IHN0YXJ0OworICAgIGN1cnIgPSBz
dGFydFJ1bjsKKyAgICBSdW4qIG5ld05leHQgPSBhZnRlckVuZDsKKyAgICB3aGlsZSAoaSA8PSBl
bmQpIHsKKyAgICAgICAgLy8gRG8gdGhlIHJldmVyc2FsLgorICAgICAgICBSdW4qIG5leHQgPSBj
dXJyLT5uZXh0KCk7CisgICAgICAgIGN1cnItPm1fbmV4dCA9IG5ld05leHQ7CisgICAgICAgIG5l
d05leHQgPSBjdXJyOworICAgICAgICBjdXJyID0gbmV4dDsKKyAgICAgICAgaSsrOworICAgIH0K
KworICAgIC8vIE5vdyBob29rIHVwIGJlZm9yZVN0YXJ0IGFuZCBhZnRlckVuZCB0byB0aGUgc3Rh
cnRSdW4gYW5kIGVuZFJ1bi4KKyAgICBpZiAoYmVmb3JlU3RhcnQpCisgICAgICAgIGJlZm9yZVN0
YXJ0LT5tX25leHQgPSBlbmRSdW47CisgICAgZWxzZQorICAgICAgICBtX2ZpcnN0UnVuID0gZW5k
UnVuOworCisgICAgc3RhcnRSdW4tPm1fbmV4dCA9IGFmdGVyRW5kOworICAgIGlmICghYWZ0ZXJF
bmQpCisgICAgICAgIG1fbGFzdFJ1biA9IHN0YXJ0UnVuOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBCaWRpUnVuTGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lSXRlcmF0b3IuaAppbmRleCA5N2QzZTViMjQ2NGEwMjA4Y2M0ZWNkNjJlZmNlNDQ4MDVm
NWRhZTEyLi5jNzg4YmZmYWFiNGU3ZWUwYWVlNjgyOTdkOTc4Yzg4N2FkMTEyY2IyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaApAQCAtMjc1LDcgKzI3NSw3IEBA
IGlubGluZSB2b2lkIElubGluZUJpZGlSZXNvbHZlcjo6YXBwZW5kUnVuKCkKICAgICAgICAgaW50
IHN0YXJ0ID0gbV9zb3IubV9wb3M7CiAgICAgICAgIFJlbmRlck9iamVjdCogb2JqID0gbV9zb3Iu
bV9vYmo7CiAgICAgICAgIHdoaWxlIChvYmogJiYgb2JqICE9IG1fZW9yLm1fb2JqICYmIG9iaiAh
PSBlbmRPZkxpbmUubV9vYmopIHsKLSAgICAgICAgICAgIFJlbmRlckJsb2NrOjphcHBlbmRSdW5z
Rm9yT2JqZWN0KHN0YXJ0LCBvYmotPmxlbmd0aCgpLCBvYmosICp0aGlzKTsgICAgICAgIAorICAg
ICAgICAgICAgUmVuZGVyQmxvY2s6OmFwcGVuZFJ1bnNGb3JPYmplY3QobV9ydW5zLCBzdGFydCwg
b2JqLT5sZW5ndGgoKSwgb2JqLCAqdGhpcyk7CiAgICAgICAgICAgICBzdGFydCA9IDA7CiAgICAg
ICAgICAgICBvYmogPSBiaWRpTmV4dChtX3Nvci5yb290KCksIG9iaik7CiAgICAgICAgIH0KQEAg
LTI4Nyw5ICsyODcsOSBAQCBpbmxpbmUgdm9pZCBJbmxpbmVCaWRpUmVzb2x2ZXI6OmFwcGVuZFJ1
bigpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBJdCdzIE9LIHRvIGFkZCBydW5zIGZv
ciB6ZXJvLWxlbmd0aCBSZW5kZXJPYmplY3RzLCBqdXN0IGRvbid0IG1ha2UgdGhlIHJ1biBsYXJn
ZXIgdGhhbiBpdCBzaG91bGQgYmUKICAgICAgICAgICAgIGludCBlbmQgPSBvYmotPmxlbmd0aCgp
ID8gcG9zICsgMSA6IDA7Ci0gICAgICAgICAgICBSZW5kZXJCbG9jazo6YXBwZW5kUnVuc0Zvck9i
amVjdChzdGFydCwgZW5kLCBvYmosICp0aGlzKTsKKyAgICAgICAgICAgIFJlbmRlckJsb2NrOjph
cHBlbmRSdW5zRm9yT2JqZWN0KG1fcnVucywgc3RhcnQsIGVuZCwgb2JqLCAqdGhpcyk7CiAgICAg
ICAgIH0KLSAgICAgICAgCisKICAgICAgICAgbV9lb3IuaW5jcmVtZW50KCk7CiAgICAgICAgIG1f
c29yID0gbV9lb3I7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApp
bmRleCA0NjQ1NDllYWY4YmY0ZjIwNjlhMmIyZDlhZGQ3NmRkZDIyZGNhMTczLi44NGM4ZGExZThl
NDUyNmRmODZkZGFlYzkxOGUwNWFhNDE5ZDkwMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2suaApAQCAtMzIsNiArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
K2NsYXNzIEJpZGlDb250ZXh0OwogY2xhc3MgQ29sdW1uSW5mbzsKIGNsYXNzIElubGluZUl0ZXJh
dG9yOwogY2xhc3MgTGF5b3V0U3RhdGVNYWludGFpbmVyOwpAQCAtNDIsNiArNDMsNyBAQCBzdHJ1
Y3QgQmlkaVJ1bjsKIHN0cnVjdCBQYWludEluZm87CiAKIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRv
ciwgY2xhc3MgUnVuPiBjbGFzcyBCaWRpUmVzb2x2ZXI7Cit0ZW1wbGF0ZSA8Y2xhc3MgUnVuPiBj
bGFzcyBCaWRpUnVuTGlzdDsKIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4gc3RydWN0IE1pZHBv
aW50U3RhdGU7CiB0eXBlZGVmIEJpZGlSZXNvbHZlcjxJbmxpbmVJdGVyYXRvciwgQmlkaVJ1bj4g
SW5saW5lQmlkaVJlc29sdmVyOwogdHlwZWRlZiBNaWRwb2ludFN0YXRlPElubGluZUl0ZXJhdG9y
PiBMaW5lTWlkcG9pbnRTdGF0ZTsKQEAgLTE1MSw3ICsxNTMsNyBAQCBwdWJsaWM6CiAgICAgUmVu
ZGVyQmxvY2sqIGNyZWF0ZUFub255bW91c0NvbHVtblNwYW5CbG9jaygpIGNvbnN0OwogICAgIFJl
bmRlckJsb2NrKiBjcmVhdGVBbm9ueW1vdXNCbG9ja1dpdGhTYW1lVHlwZUFzKFJlbmRlckJsb2Nr
KiBvdGhlckFub255bW91c0Jsb2NrKSBjb25zdDsKICAgICAKLSAgICBzdGF0aWMgdm9pZCBhcHBl
bmRSdW5zRm9yT2JqZWN0KGludCBzdGFydCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0KiwgSW5saW5l
QmlkaVJlc29sdmVyJik7ICAgIAorICAgIHN0YXRpYyB2b2lkIGFwcGVuZFJ1bnNGb3JPYmplY3Qo
QmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mLCBpbnQgc3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCos
IElubGluZUJpZGlSZXNvbHZlciYpOwogICAgIHN0YXRpYyBib29sIHJlcXVpcmVzTGluZUJveChj
b25zdCBJbmxpbmVJdGVyYXRvciYsIGJvb2wgaXNMaW5lRW1wdHkgPSB0cnVlLCBib29sIHByZXZp
b3VzTGluZUJyb2tlQ2xlYW5seSA9IHRydWUpOwogCiAgICAgQ29sdW1uSW5mbyogY29sdW1uSW5m
bygpIGNvbnN0OwpAQCAtMzQ5LDcgKzM1MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxheW91
dEJsb2NrQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBpbnQmIG1heEZsb2F0TG9naWNh
bEJvdHRvbSk7CiAgICAgdm9pZCBsYXlvdXRJbmxpbmVDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hp
bGRyZW4sIGludCYgcmVwYWludExvZ2ljYWxUb3AsIGludCYgcmVwYWludExvZ2ljYWxCb3R0b20p
OwotICAgIEJpZGlSdW4qIGhhbmRsZVRyYWlsaW5nU3BhY2VzKElubGluZUJpZGlSZXNvbHZlciYp
OworICAgIEJpZGlSdW4qIGhhbmRsZVRyYWlsaW5nU3BhY2VzKEJpZGlSdW5MaXN0PEJpZGlSdW4+
JiwgQmlkaUNvbnRleHQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBib3JkZXJGaXRBZGp1c3QoaW50
JiB4LCBpbnQmIHcpIGNvbnN0OyAvLyBTaHJpbmsgdGhlIGJveCBpbiB3aGljaCB0aGUgYm9yZGVy
IHBhaW50cyBpZiBib3JkZXItZml0IGlzIHNldC4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCBiODg3MGM5NDE2MDFjMDhk
ZjRiZGE5ZjRkYTRjYTZiMjg1NThlNGVmLi4xNjgwOTRkMjA5Njk0YjY1M2M5MDNhMTA5YTRjMDFk
NjYwMzkxM2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tMaW5lTGF5b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2tMaW5lTGF5b3V0LmNwcApAQCAtMTEyLDcgKzExMiwxMiBAQCBzdGF0aWMgdm9pZCBhZGRNaWRw
b2ludChMaW5lTWlkcG9pbnRTdGF0ZSYgbGluZU1pZHBvaW50U3RhdGUsIGNvbnN0IElubGluZUl0
ZXJhdAogICAgIG1pZHBvaW50c1tsaW5lTWlkcG9pbnRTdGF0ZS5udW1NaWRwb2ludHMrK10gPSBt
aWRwb2ludDsKIH0KIAotdm9pZCBSZW5kZXJCbG9jazo6YXBwZW5kUnVuc0Zvck9iamVjdChpbnQg
c3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCogb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJl
c29sdmVyKQorc3RhdGljIGlubGluZSBCaWRpUnVuKiBjcmVhdGVSdW4oaW50IHN0YXJ0LCBpbnQg
ZW5kLCBSZW5kZXJPYmplY3QqIG9iaiwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKK3sK
KyAgICByZXR1cm4gbmV3IChvYmotPnJlbmRlckFyZW5hKCkpIEJpZGlSdW4oc3RhcnQsIGVuZCwg
b2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKK30KKwordm9pZCBSZW5k
ZXJCbG9jazo6YXBwZW5kUnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiYgcnVucywg
aW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5kZXJPYmplY3QqIG9iaiwgSW5saW5lQmlkaVJlc29sdmVy
JiByZXNvbHZlcikKIHsKICAgICBpZiAoc3RhcnQgPiBlbmQgfHwgb2JqLT5pc0Zsb2F0aW5nKCkg
fHwKICAgICAgICAgKG9iai0+aXNQb3NpdGlvbmVkKCkgJiYgIW9iai0+c3R5bGUoKS0+aGFzQXV0
b0xlZnRBbmRSaWdodCgpICYmICFvYmotPnN0eWxlKCktPmhhc0F1dG9Ub3BBbmRCb3R0b20oKSAm
JiAhb2JqLT5jb250YWluZXIoKS0+aXNSZW5kZXJJbmxpbmUoKSkpCkBAIC0xMzIsMTAgKzEzNywx
MCBAQCB2b2lkIFJlbmRlckJsb2NrOjphcHBlbmRSdW5zRm9yT2JqZWN0KGludCBzdGFydCwgaW50
IGVuZCwgUmVuZGVyT2JqZWN0KiBvYmosIElubAogICAgICAgICBzdGFydCA9IG5leHRNaWRwb2lu
dC5tX3BvczsKICAgICAgICAgbGluZU1pZHBvaW50U3RhdGUuY3VycmVudE1pZHBvaW50Kys7CiAg
ICAgICAgIGlmIChzdGFydCA8IGVuZCkKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRSdW5zRm9y
T2JqZWN0KHN0YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIpOworICAgICAgICAgICAgcmV0dXJuIGFw
cGVuZFJ1bnNGb3JPYmplY3QocnVucywgc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlcik7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKCFoYXZlTmV4dE1pZHBvaW50IHx8IChvYmogIT0gbmV4dE1p
ZHBvaW50Lm1fb2JqKSkgewotICAgICAgICAgICAgcmVzb2x2ZXIuYWRkUnVuKG5ldyAob2JqLT5y
ZW5kZXJBcmVuYSgpKSBCaWRpUnVuKHN0YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgp
LCByZXNvbHZlci5kaXIoKSkpOworICAgICAgICAgICAgcnVucy5hZGRSdW4oY3JlYXRlUnVuKHN0
YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCkBAIC0xNDYsMTIgKzE1MSwxMSBAQCB2b2lkIFJlbmRlckJsb2NrOjphcHBlbmRSdW5zRm9y
T2JqZWN0KGludCBzdGFydCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0KiBvYmosIElubAogICAgICAg
ICAgICAgbGluZU1pZHBvaW50U3RhdGUuY3VycmVudE1pZHBvaW50Kys7CiAgICAgICAgICAgICBp
ZiAobmV4dE1pZHBvaW50Lm1fcG9zICE9IFVJTlRfTUFYKSB7IC8vIFVJTlRfTUFYIG1lYW5zIHN0
b3AgYXQgdGhlIG9iamVjdCBhbmQgZG9uJ3QgaW5jbHVkZSBhbnkgb2YgaXQuCiAgICAgICAgICAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4obmV4dE1pZHBvaW50Lm1fcG9zICsgMSkgPiBzdGFy
dCkKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIuYWRkUnVuKG5ldyAob2JqLT5yZW5kZXJB
cmVuYSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgQmlkaVJ1bihzdGFydCwgbmV4dE1pZHBv
aW50Lm1fcG9zICsgMSwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFJ1bnNGb3JPYmplY3QobmV4dE1pZHBvaW50
Lm1fcG9zICsgMSwgZW5kLCBvYmosIHJlc29sdmVyKTsKKyAgICAgICAgICAgICAgICAgICAgcnVu
cy5hZGRSdW4oY3JlYXRlUnVuKHN0YXJ0LCBuZXh0TWlkcG9pbnQubV9wb3MgKyAxLCBvYmosIHJl
c29sdmVyKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFJ1bnNGb3JPYmplY3QocnVu
cywgbmV4dE1pZHBvaW50Lm1fcG9zICsgMSwgZW5kLCBvYmosIHJlc29sdmVyKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgIHJlc29sdmVyLmFkZFJ1bihuZXcgKG9i
ai0+cmVuZGVyQXJlbmEoKSkgQmlkaVJ1bihzdGFydCwgZW5kLCBvYmosIHJlc29sdmVyLmNvbnRl
eHQoKSwgcmVzb2x2ZXIuZGlyKCkpKTsKKyAgICAgICAgICAgcnVucy5hZGRSdW4oY3JlYXRlUnVu
KHN0YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIpKTsKICAgICB9CiB9CiAKQEAgLTYwOCw5ICs2MTIs
OSBAQCBzdGF0aWMgdm9pZCBzZXRTdGF0aWNQb3NpdGlvbnMoUmVuZGVyQmxvY2sqIGJsb2NrLCBS
ZW5kZXJCb3gqIGNoaWxkKQogICAgIGNoaWxkLT5sYXllcigpLT5zZXRTdGF0aWNCbG9ja1Bvc2l0
aW9uKGJsb2NrSGVpZ2h0KTsKIH0KIAotc3RhdGljIGJvb2wgcmVhY2hlZEVuZE9mVGV4dFJlbmRl
cmVyKElubGluZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCitzdGF0aWMgYm9vbCByZWFjaGVkRW5k
T2ZUZXh0UmVuZGVyZXIoY29uc3QgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zKQogewot
ICAgIEJpZGlSdW4qIHJ1biA9IHJlc29sdmVyLmxvZ2ljYWxseUxhc3RSdW4oKTsKKyAgICBCaWRp
UnVuKiBydW4gPSBiaWRpUnVucy5sb2dpY2FsbHlMYXN0UnVuKCk7CiAgICAgaWYgKCFydW4pCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIHVuc2lnbmVkIGludCBwb3MgPSBydW4tPnN0b3AoKTsK
QEAgLTYyOSwxNCArNjMzLDE0IEBAIHN0YXRpYyBib29sIHJlYWNoZWRFbmRPZlRleHRSZW5kZXJl
cihJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQogICAgIHJldHVybiBmYWxzZTsKIH0KICAg
ICAKLWlubGluZSBCaWRpUnVuKiBSZW5kZXJCbG9jazo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoSW5s
aW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKK2lubGluZSBCaWRpUnVuKiBSZW5kZXJCbG9jazo6
aGFuZGxlVHJhaWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBCaWRp
Q29udGV4dCogY3VycmVudENvbnRleHQpCiB7Ci0gICAgaWYgKCFyZXNvbHZlci5ydW5Db3VudCgp
Ci0gICAgICAgIHx8ICFyZXNvbHZlci5sb2dpY2FsbHlMYXN0UnVuKCktPm1fb2JqZWN0LT5zdHls
ZSgpLT5icmVha09ubHlBZnRlcldoaXRlU3BhY2UoKQotICAgICAgICB8fCAhcmVzb2x2ZXIubG9n
aWNhbGx5TGFzdFJ1bigpLT5tX29iamVjdC0+c3R5bGUoKS0+YXV0b1dyYXAoKSkKKyAgICBpZiAo
IWJpZGlSdW5zLnJ1bkNvdW50KCkKKyAgICAgICAgfHwgIWJpZGlSdW5zLmxvZ2ljYWxseUxhc3RS
dW4oKS0+bV9vYmplY3QtPnN0eWxlKCktPmJyZWFrT25seUFmdGVyV2hpdGVTcGFjZSgpCisgICAg
ICAgIHx8ICFiaWRpUnVucy5sb2dpY2FsbHlMYXN0UnVuKCktPm1fb2JqZWN0LT5zdHlsZSgpLT5h
dXRvV3JhcCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJpZGlSdW4qIHRyYWlsaW5nU3Bh
Y2VSdW4gPSByZXNvbHZlci5sb2dpY2FsbHlMYXN0UnVuKCk7CisgICAgQmlkaVJ1biogdHJhaWxp
bmdTcGFjZVJ1biA9IGJpZGlSdW5zLmxvZ2ljYWxseUxhc3RSdW4oKTsKICAgICBSZW5kZXJPYmpl
Y3QqIGxhc3RPYmplY3QgPSB0cmFpbGluZ1NwYWNlUnVuLT5tX29iamVjdDsKICAgICBpZiAoIWxh
c3RPYmplY3QtPmlzVGV4dCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTY1NCwxOCArNjU4LDE4
IEBAIGlubGluZSBCaWRpUnVuKiBSZW5kZXJCbG9jazo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoSW5s
aW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBUZXh0
RGlyZWN0aW9uIGRpcmVjdGlvbiA9IHN0eWxlKCktPmRpcmVjdGlvbigpOwotICAgIGJvb2wgc2hv
dWxkUmVvcmRlciA9IHRyYWlsaW5nU3BhY2VSdW4gIT0gKGRpcmVjdGlvbiA9PSBMVFIgPyByZXNv
bHZlci5sYXN0UnVuKCkgOiByZXNvbHZlci5maXJzdFJ1bigpKTsKKyAgICBib29sIHNob3VsZFJl
b3JkZXIgPSB0cmFpbGluZ1NwYWNlUnVuICE9IChkaXJlY3Rpb24gPT0gTFRSID8gYmlkaVJ1bnMu
bGFzdFJ1bigpIDogYmlkaVJ1bnMuZmlyc3RSdW4oKSk7CiAgICAgaWYgKGZpcnN0U3BhY2UgIT0g
dHJhaWxpbmdTcGFjZVJ1bi0+c3RhcnQoKSkgewotICAgICAgICBCaWRpQ29udGV4dCogYmFzZUNv
bnRleHQgPSByZXNvbHZlci5jb250ZXh0KCk7CisgICAgICAgIEJpZGlDb250ZXh0KiBiYXNlQ29u
dGV4dCA9IGN1cnJlbnRDb250ZXh0OwogICAgICAgICB3aGlsZSAoQmlkaUNvbnRleHQqIHBhcmVu
dCA9IGJhc2VDb250ZXh0LT5wYXJlbnQoKSkKICAgICAgICAgICAgIGJhc2VDb250ZXh0ID0gcGFy
ZW50OwogCiAgICAgICAgIEJpZGlSdW4qIG5ld1RyYWlsaW5nUnVuID0gbmV3IChyZW5kZXJBcmVu
YSgpKSBCaWRpUnVuKGZpcnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJhaWxp
bmdTcGFjZVJ1bi0+bV9vYmplY3QsIGJhc2VDb250ZXh0LCBPdGhlck5ldXRyYWwpOwogICAgICAg
ICB0cmFpbGluZ1NwYWNlUnVuLT5tX3N0b3AgPSBmaXJzdFNwYWNlOwogICAgICAgICBpZiAoZGly
ZWN0aW9uID09IExUUikKLSAgICAgICAgICAgIHJlc29sdmVyLmFkZFJ1bihuZXdUcmFpbGluZ1J1
bik7CisgICAgICAgICAgICBiaWRpUnVucy5hZGRSdW4obmV3VHJhaWxpbmdSdW4pOwogICAgICAg
ICBlbHNlCi0gICAgICAgICAgICByZXNvbHZlci5wcmVwZW5kUnVuKG5ld1RyYWlsaW5nUnVuKTsK
KyAgICAgICAgICAgIGJpZGlSdW5zLnByZXBlbmRSdW4obmV3VHJhaWxpbmdSdW4pOwogICAgICAg
ICB0cmFpbGluZ1NwYWNlUnVuID0gbmV3VHJhaWxpbmdSdW47CiAgICAgICAgIHJldHVybiB0cmFp
bGluZ1NwYWNlUnVuOwogICAgIH0KQEAgLTY3MywxMCArNjc3LDEwIEBAIGlubGluZSBCaWRpUnVu
KiBSZW5kZXJCbG9jazo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoSW5saW5lQmlkaVJlc29sdmVyJiBy
ZXNvbHZlcikKICAgICAgICAgcmV0dXJuIHRyYWlsaW5nU3BhY2VSdW47CiAKICAgICBpZiAoZGly
ZWN0aW9uID09IExUUikgewotICAgICAgICByZXNvbHZlci5tb3ZlUnVuVG9FbmQodHJhaWxpbmdT
cGFjZVJ1bik7CisgICAgICAgIGJpZGlSdW5zLm1vdmVSdW5Ub0VuZCh0cmFpbGluZ1NwYWNlUnVu
KTsKICAgICAgICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9sZXZlbCA9IDA7CiAgICAgfSBlbHNlIHsK
LSAgICAgICAgcmVzb2x2ZXIubW92ZVJ1blRvQmVnaW5uaW5nKHRyYWlsaW5nU3BhY2VSdW4pOwor
ICAgICAgICBiaWRpUnVucy5tb3ZlUnVuVG9CZWdpbm5pbmcodHJhaWxpbmdTcGFjZVJ1bik7CiAg
ICAgICAgIHRyYWlsaW5nU3BhY2VSdW4tPm1fbGV2ZWwgPSAxOwogICAgIH0KICAgICByZXR1cm4g
dHJhaWxpbmdTcGFjZVJ1bjsKQEAgLTgzOSw3ICs4NDMsMTAgQEAgdm9pZCBSZW5kZXJCbG9jazo6
bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBpbnQmIHJlcGFpbnRM
b2dpY2EKICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNM
aW5lID0gKG1fZmxvYXRpbmdPYmplY3RzICYmICFtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCkuaXNF
bXB0eSgpKSA/IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKS5sYXN0KCkgOiAwOwogICAgICAgICAg
ICAgZW5kID0gZmluZE5leHRMaW5lQnJlYWsocmVzb2x2ZXIsIGZpcnN0TGluZSwgaXNMaW5lRW1w
dHksIGxpbmVCcmVha0l0ZXJhdG9ySW5mbywgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5LCBoeXBo
ZW5hdGVkLCAmY2xlYXIsIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIHBvc2l0aW9uZWRPYmpl
Y3RzKTsKICAgICAgICAgICAgIGlmIChyZXNvbHZlci5wb3NpdGlvbigpLmF0RW5kKCkpIHsKLSAg
ICAgICAgICAgICAgICByZXNvbHZlci5kZWxldGVSdW5zKCk7CisgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZG4ndCBiZSBjcmVhdGluZyBhbnkgcnVucyBpbiBmaW5kTmV4dExpbmVC
cmVhayB0byBiZWdpbiB3aXRoIQorICAgICAgICAgICAgICAgIC8vIE9uY2UgQmlkaVJ1bkxpc3Qg
aXMgc2VwYXJhdGVkIGZyb20gQmlkaVJlc29sdmVyIHRoaXMgd2lsbCBub3QgYmUgbmVlZGVkLgor
ICAgICAgICAgICAgICAgIHJlc29sdmVyLnJ1bnMoKS5kZWxldGVSdW5zKCk7CisgICAgICAgICAg
ICAgICAgcmVzb2x2ZXIubWFya0N1cnJlbnRSdW5FbXB0eSgpOyAvLyBGSVhNRTogVGhpcyBjYW4g
cHJvYmFibHkgYmUgcmVwbGFjZWQgYnkgYW4gQVNTRVJUIChvciBqdXN0IHJlbW92ZWQpLgogICAg
ICAgICAgICAgICAgIGNoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTg1MCwxMCArODU3LDEyIEBAIHZvaWQg
UmVuZGVyQmxvY2s6OmxheW91dElubGluZUNoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwg
aW50JiByZXBhaW50TG9naWNhCiAgICAgICAgICAgICAgICAgICAgIGxhc3RSb290Qm94KCktPnNl
dExpbmVCcmVha0luZm8oZW5kLm1fb2JqLCBlbmQubV9wb3MsIHJlc29sdmVyLnN0YXR1cygpKTsK
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgVmlzdWFsRGlyZWN0aW9uT3Zl
cnJpZGUgb3ZlcnJpZGUgPSAoc3R5bGUoKS0+dmlzdWFsbHlPcmRlcmVkKCkgPyAoc3R5bGUoKS0+
ZGlyZWN0aW9uKCkgPT0gTFRSID8gVmlzdWFsTGVmdFRvUmlnaHRPdmVycmlkZSA6IFZpc3VhbFJp
Z2h0VG9MZWZ0T3ZlcnJpZGUpIDogTm9WaXN1YWxPdmVycmlkZSk7CisgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgb3duZXJzaGlwIGlzIHJldmVyc2VkLiBXZSBzaG91bGQgb3duIHRoZSBC
aWRpUnVuTGlzdCBhbmQgcGFzcyBpdCB0byBjcmVhdGVCaWRpUnVuc0ZvckxpbmUuCisgICAgICAg
ICAgICAgICAgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zID0gcmVzb2x2ZXIucnVucygp
OwogICAgICAgICAgICAgICAgIHJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmQsIG92
ZXJyaWRlLCBwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOwogICAgICAgICAgICAgICAgIEFTU0VS
VChyZXNvbHZlci5wb3NpdGlvbigpID09IGVuZCk7CiAKLSAgICAgICAgICAgICAgICBCaWRpUnVu
KiB0cmFpbGluZ1NwYWNlUnVuID0gIXByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSA/IGhhbmRsZVRy
YWlsaW5nU3BhY2VzKHJlc29sdmVyKSA6IDA7CisgICAgICAgICAgICAgICAgQmlkaVJ1biogdHJh
aWxpbmdTcGFjZVJ1biA9ICFwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkgPyBoYW5kbGVUcmFpbGlu
Z1NwYWNlcyhiaWRpUnVucywgcmVzb2x2ZXIuY29udGV4dCgpKSA6IDA7CiAKICAgICAgICAgICAg
ICAgICAvLyBOb3cgdGhhdCB0aGUgcnVucyBoYXZlIGJlZW4gb3JkZXJlZCwgd2UgY3JlYXRlIHRo
ZSBsaW5lIGJveGVzLgogICAgICAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUgd2UgZmln
dXJlIG91dCB3aGVyZSBib3JkZXIvcGFkZGluZy9tYXJnaW4gc2hvdWxkIGJlIGFwcGxpZWQgZm9y
CkBAIC04NjEsMTEgKzg3MCwxMiBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRJbmxpbmVDaGls
ZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIGludCYgcmVwYWludExvZ2ljYQogCiAgICAgICAg
ICAgICAgICAgUm9vdElubGluZUJveCogbGluZUJveCA9IDA7CiAgICAgICAgICAgICAgICAgaW50
IG9sZExvZ2ljYWxIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgaWYg
KHJlc29sdmVyLnJ1bkNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYmlkaVJ1bnMucnVu
Q291bnQoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoaHlwaGVuYXRlZCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJlc29sdmVyLmxvZ2ljYWxseUxhc3RSdW4oKS0+bV9oYXNIeXBoZW4g
PSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBib29sIGxhc3RMaW5lID0gZW5kLm1fb2JqICYm
IGVuZC5tX29iai0+aXNUZXh0KCkgPyByZWFjaGVkRW5kT2ZUZXh0UmVuZGVyZXIocmVzb2x2ZXIp
IDogIWVuZC5tX29iajsKLSAgICAgICAgICAgICAgICAgICAgbGluZUJveCA9IGNvbnN0cnVjdExp
bmUocmVzb2x2ZXIucnVuQ291bnQoKSwgcmVzb2x2ZXIuZmlyc3RSdW4oKSwgcmVzb2x2ZXIubGFz
dFJ1bigpLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBlbmQubV9vYmogJiYgIWVuZC5tX3BvcyA/IGVu
ZC5tX29iaiA6IDAsIHJlc29sdmVyLmxvZ2ljYWxseUxhc3RSdW4oKS0+bV9vYmplY3QpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYmlkaVJ1bnMubG9naWNhbGx5TGFzdFJ1bigpLT5tX2hhc0h5
cGhlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJvb2wgbGFzdExpbmUgPSBlbmQubV9v
YmogJiYgZW5kLm1fb2JqLT5pc1RleHQoKSA/IHJlYWNoZWRFbmRPZlRleHRSZW5kZXJlcihiaWRp
UnVucykgOiAhZW5kLm1fb2JqOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ2xlYXJs
eSBjb25zdHJ1Y3RMaW5lIHNob3VsZCBqdXN0IHRha2UgYSBiaWRpUnVucyBvYmplY3QuCisgICAg
ICAgICAgICAgICAgICAgIGxpbmVCb3ggPSBjb25zdHJ1Y3RMaW5lKGJpZGlSdW5zLnJ1bkNvdW50
KCksIGJpZGlSdW5zLmZpcnN0UnVuKCksIGJpZGlSdW5zLmxhc3RSdW4oKSwgZmlyc3RMaW5lLCBs
YXN0TGluZSwgZW5kLm1fb2JqICYmICFlbmQubV9wb3MgPyBlbmQubV9vYmogOiAwLCBiaWRpUnVu
cy5sb2dpY2FsbHlMYXN0UnVuKCktPm1fb2JqZWN0KTsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGxpbmVCb3gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVCb3gtPnNldEVuZHNXaXRo
QnJlYWsocHJldmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKIApAQCAtODc5LDEwICs4ODksMTAgQEAg
dm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxk
cmVuLCBpbnQmIHJlcGFpbnRMb2dpY2EKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyBOb3cgd2UgcG9zaXRpb24gYWxsIG9mIG91ciB0ZXh0IHJ1bnMgaG9y
aXpvbnRhbGx5LgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1NWR1Jvb3RJbmxpbmVC
b3gpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZUlubGluZURpcmVjdGlvblBv
c2l0aW9uc0ZvckxpbmUobGluZUJveCwgZmlyc3RMaW5lLCByZXNvbHZlci5maXJzdFJ1bigpLCB0
cmFpbGluZ1NwYWNlUnVuLCBlbmQuYXRFbmQoKSwgdGV4dEJveERhdGFNYXAsIHZlcnRpY2FsUG9z
aXRpb25DYWNoZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZUlubGluZURp
cmVjdGlvblBvc2l0aW9uc0ZvckxpbmUobGluZUJveCwgZmlyc3RMaW5lLCBiaWRpUnVucy5maXJz
dFJ1bigpLCB0cmFpbGluZ1NwYWNlUnVuLCBlbmQuYXRFbmQoKSwgdGV4dEJveERhdGFNYXAsIHZl
cnRpY2FsUG9zaXRpb25DYWNoZSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdyBw
b3NpdGlvbiBvdXIgdGV4dCBydW5zIHZlcnRpY2FsbHkuCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb21wdXRlQmxvY2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKGxpbmVCb3gsIHJlc29sdmVy
LmZpcnN0UnVuKCksIHRleHRCb3hEYXRhTWFwLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZUJsb2NrRGlyZWN0aW9uUG9zaXRpb25zRm9yTGlu
ZShsaW5lQm94LCBiaWRpUnVucy5maXJzdFJ1bigpLCB0ZXh0Qm94RGF0YU1hcCwgdmVydGljYWxQ
b3NpdGlvbkNhY2hlKTsKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBTVkcgdGV4dCBsYXlvdXQgY29kZSBjb21wdXRlcyB2ZXJ0aWNhbCAmIGhvcml6b250YWwg
cG9zaXRpb25zIG9uIGl0cyBvd24uCkBAIC05MDcsNyArOTE3LDggQEAgdm9pZCBSZW5kZXJCbG9j
azo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBpbnQmIHJlcGFp
bnRMb2dpY2EKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgICAgIHJlc29sdmVyLmRlbGV0ZVJ1bnMoKTsKKyAgICAgICAgICAgICAgICBiaWRp
UnVucy5kZWxldGVSdW5zKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZXIubWFya0N1cnJlbnRS
dW5FbXB0eSgpOyAvLyBGSVhNRTogVGhpcyBjYW4gcHJvYmFibHkgYmUgcmVwbGFjZWQgYnkgYW4g
QVNTRVJUIChvciBqdXN0IHJlbW92ZWQpLgogCiAgICAgICAgICAgICAgICAgaWYgKGxpbmVCb3gp
IHsKICAgICAgICAgICAgICAgICAgICAgbGluZUJveC0+c2V0TGluZUJyZWFrSW5mbyhlbmQubV9v
YmosIGVuZC5tX3BvcywgcmVzb2x2ZXIuc3RhdHVzKCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88664</attachid>
            <date>2011-04-07 11:05:46 -0700</date>
            <delta_ts>2011-04-07 18:26:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-57764-20110407110544.patch</filename>
            <type>text/plain</type>
            <size>40382</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMxODUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNTg4MTMzNTViM2MzZTRm
OTJlMzFmMDc0OWY1MjljNGI4NTUwM2M3Li5lZGEwODlhMjAxYzI5YjE0OWE1OGZjNzViNmZkZjA4
MTM4ZGU5NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMgQEAKKzIwMTEtMDQtMDQgIEVyaWMg
U2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2Ug
Tml3YS4KKworICAgICAgICBTcGxpdCBydW4gc3RvcmFnZSBvdXQgZnJvbSBCaWRpUmVzb2x2ZXIg
aW50byBhIG5ldyBCaWRpUnVuTGlzdCBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3NjQKKworICAgICAgICBQYXJ0IG9mIHdoYXQgbWFrZXMg
QmlkaVJlc29sdmVyIGFuZCBJbmxpbmVJdGVyYXRvciBzbyBkaWZmaWN1bHQgdG8gdW5kZXJzdGFu
ZAorICAgICAgICAoYW5kIGJ1ZyA1MDkxMiBzbyBkaWZmaWN1bHQgdG8gZml4KSBpcyB0aGF0IEJp
ZGlSZXNvbHZlciBpcyBib3RoIGEgc3RhdGUgbWFjaGluZQorICAgICAgICBmb3IgdGhlIFVuaWNv
ZGUgQmlkaSBBbGdvcml0aG0gKFVCQSkgYXMgd2VsbCBhcyBzdG9yYWdlIGZvciB0aGUgcmVzdWx0
aW5nCisgICAgICAgIEJpZGlSdW5zIGZyb20gdGhlIGFsZ29yaXRobS4gIFRoaXMgcGF0Y2ggYnJl
YWtzIHRoZSBzdG9yYWdlIGFzcGVjdCBvZmYKKyAgICAgICAgaW50byBpdHMgb3duIGNsYXNzIEJp
ZGlSdW5MaXN0LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgb25seSBhIHN0YXJ0LiAgSXQgZG9l
cyBub3QgYWN0dWFsbHkgZml4IHRoZSBwcm9ibGVtYXRpYyBvd25lcnNoaXAKKyAgICAgICAgcmVs
YXRpb25zaGlwLCBidXQgaXQgZG9lcyBtYWtlIGl0IHBvc3NpYmxlIHRvIGZpeCBzdWNoIGluIGEg
c2Vjb25kIHBhdGNoLgorCisgICAgICAgIFRoZSBydW4gcG9pbnRlcnMgYW5kIGFkZFJ1bi9wcmVw
ZW5kUnVuLCBldGMuIHdlcmUgYWxyZWFkeSBhIHRpZ2h0bHkgY291cGxlZAorICAgICAgICBsb2dp
Y2FsIHN1YnNldCBvZiB0aGUgQmlkaVJlc29sdmVyIGNsYXNzLCBzbyBtb3ZpbmcgdGhlbSBpbnRv
IHRoZWlyIG93biBjbGFzcworICAgICAgICB3YXMgYm90aCBvYnZpb3VzIGFuZCBlYXN5LiAgVGhl
IG9ubHkgcGllY2Ugb2YgbG9naWMgSSBoYWQgdG8gbW92ZSB3YXMgdGhhdAorICAgICAgICBkZWxl
dGVSdW5zKCkgaGFkIGEgc2lkZS1lZmZlY3Qgb2Ygc2V0dGluZyB0aGUgbV9lbXB0eVJ1biBiaXQg
b24gdGhlIHJlc29sdmVyLgorCisgICAgICAgIEkgYmVsaWV2ZSB0aGlzIGRlbGV0ZVJ1bnMgc2lk
ZS1lZmZlY3Qgd2FzIG9ubHkgZXZlciB1c2VkIGZvciBvbmUgcGxhY2UKKyAgICAgICAgKHJpZ2h0
IGFmdGVyIGZpbmROZXh0TGluZUJyZWFrKSBhbmQgdGhhdCBpdCdzIG9ubHkgbmVlZGVkIGJlY2F1
c2UKKyAgICAgICAgZmluZE5leHRMaW5lQnJlYWsgY2FuIHNvbWV0aW1lcyBjcmVhdGUgYmlkaSBy
dW5zLiAgUnVuIGNyZWF0aW9uIGFwcGVhcnMgdG8gYmUKKyAgICAgICAgYW4gdW5pbnRlbnRpb25h
bCBzaWRlLWVmZmVjdCBvZiBob3cgSW5saW5lSXRlcmF0b3IgY2FsbHMgdGhyb3VnaCB0byBCaWRp
UmVzb2x2ZXIKKyAgICAgICAgYXMgcGFydCBvZiBiaWRpTmV4dCBhbmQgbm90IGEgZGVzaXJlZCBl
ZmZlY3Qgb2YgdGhlIGNvZGUuICBJIGhhdmUgYWRkZWQgdGhlIGNhbGwKKyAgICAgICAgdG8gbWFy
a0N1cnJlbnRSdW5FbXB0eSB0byBib3RoIHBsYWNlcyBkZWxldGVSdW5zIHdhcyBjYWxsZWQgKHdo
ZXJlIHRoZSByZXNvbHZlcgorICAgICAgICBjb3VsZCBnZXQgcmUtdXNlZCkgYXMgYSBzYWZldHkg
cHJlY2F1dGlvbi4gIFdlIGNvdWxkIHJlcGxhY2UgYm90aCB3aXRoIEFTU0VSVHMKKyAgICAgICAg
aW4gYSBsYXRlciBwYXRjaC4KKworICAgICAgICBJIHN1c3BlY3QgdGhlcmUgbWF5IGJlIGEgc21h
bGwgcGVyZm9ybWFuY2Ugd2luIGZyb20gZnVydGhlciByZWZhY3RvcmluZyBzbyB0aGF0CisgICAg
ICAgIGZpbmROZXh0TGluZUJyZWFrIGRvZXMgbm90IG5lZWQgdG8gY3JlYXRlIEJpZGlSdW5zLgor
CisgICAgICAgIEFzIEkgY29tbWVudGVkIGluIHRoZSBjb2RlLCBjYWxsZXJzIHNob3VsZCBvd24g
dGhlaXIgb3duIEJpZGlSdW5MaXN0IHdoaWNoIHRoZXkKKyAgICAgICAgcGFzcyB0byBCaWRpUmVz
b2x2ZXI6OmNyZWF0ZUJpZGlSdW5zRm9yTGluZS4gIEkgYXR0ZW1wdGVkIHRvIGltcGxlbWVudCB0
aGF0IGluCisgICAgICAgIGFuIGVhcmxpZXIgdmVyc2lvbiBvZiB0aGlzIHBhdGNoLCBidXQgaXQg
d2FzIHRvbyBjb21wbGljYXRlZCB3aXRoIHRoZSBjdXJyZW50CisgICAgICAgIHR3aXN0ZWQgZGVw
ZW5kZW5jaWVzIGJldHdlZW4gSW5saW5lSXRlcmF0b3IvYmlkaU5leHQgYW5kIElubGluZUJpZGlS
ZXNvbHZlci4KKyAgICAgICAgcmFpc2UvbG93ZXJFeHBsaWNpdEVtYmVkZGluZ0xldmVsIGFyZSBj
YWxsZWQgdW5jb25kaXRpb25hbGx5CisgICAgICAgIGZyb20gY29tbWl0RXhwbGljaXRFbWJlZGRp
bmcgKHdoaWNoIGlzIGNhbGxlZCBieSBiaWRpTmV4dCkgYW5kIGV4cGVjdCB0byBoYXZlCisgICAg
ICAgIGFjY2VzcyB0byBhIHJ1bnMgbGlzdCBldmVuIGluIGNhc2VzIHdoZXJlIHdlIGRvbid0IHdh
bnQgYW55IHJ1bnMgKGZpbmROZXh0TGluZUJyZWFrKS4KKworICAgICAgICBJIGFsc28gY2xlYW5l
ZCB1cCBzb21lIG9mIHRoZSBjYWxsZXJzIHRvIHBhc3MgYXJvdW5kIEJpZGlSdW5MaXN0IG9iamVj
dHMgaW5zdGVhZAorICAgICAgICBvZiBJbmxpbmVCaWRpUmVzb2x2ZXJzIG5vdyB0aGF0IHRoZXkn
cmUgc2VwYXJhdGUgb2JqZWN0cy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6QmlkaVJlc29sdmVyOjpCaWRpUmVzb2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Qmlk
aVJlc29sdmVyOjpydW5zKToKKyAgICAgICAgKFdlYkNvcmU6OkJpZGlSZXNvbHZlcjo6bWFya0N1
cnJlbnRSdW5FbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjo6OmFwcGVuZFJ1bik6CisgICAgICAg
IChXZWJDb3JlOjo6Omxvd2VyRXhwbGljaXRFbWJlZGRpbmdMZXZlbCk6CisgICAgICAgIChXZWJD
b3JlOjo6OnJhaXNlRXhwbGljaXRFbWJlZGRpbmdMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjo6
OnJlb3JkZXJSdW5zRnJvbUxldmVscyk6CisgICAgICAgIChXZWJDb3JlOjo6OmNyZWF0ZUJpZGlS
dW5zRm9yTGluZSk6CisgICAgICAgICogcmVuZGVyaW5nL0lubGluZUl0ZXJhdG9yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbmxpbmVCaWRpUmVzb2x2ZXI6OmFwcGVuZFJ1bik6CisgICAgICAgICog
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2Nr
TGluZUxheW91dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSdW4pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFwcGVuZFJ1bnNGb3JPYmplY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6cmVhY2hlZEVuZE9mVGV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJsb2NrOjpoYW5kbGVUcmFpbGluZ1NwYWNlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJC
bG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4pOgorCiAyMDExLTA0LTA3ICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBSb2Jlbi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KaW5kZXggZWU3MGE0ZmJhMWQxNDg0MzVhZTZjMjZlYWVmNzEyODk0YTIw
NWVhMS4uN2UxN2ViMDIxZWYxNmUxMTIyYjk0OGJkYWI0NmIwOTEzNTJjZDVmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KQEAgLTI2ODksNiArMjY4OSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CaWRpQ29udGV4dC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaUNvbnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9CaWRpUmVzb2x2ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9CaWRpUnVuTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0h5cGhlbmF0
aW9uLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9IeXBoZW5hdGlvbi5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCBiYWQzMTE1ZWY5YWVjY2JhODQyYTgxYmI4ZmI3NmU5NWE2ZjEwNjE3Li5kY2Yy
NjljZTdkZDFmMTlkOTEwYzE4YmIzNTgxM2Q2OWYwZDVkN2E4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC05MDAsNiArOTAwLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9zcWwvU1FMaXRlRGF0YWJh
c2UuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vc3FsL1NRTGl0ZVRyYW5zYWN0aW9uLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvQmFzZTY0LmgnLAorICAgICAgICAgICAgJ3BsYXRm
b3JtL3RleHQvQmlkaVJ1bkxpc3QuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9CaWRp
Q29udGV4dC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuaCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmlu
ZGV4IGQ0MjIxZmY5ZGZkM2E5ODRhMGVkZDk2MTQyNzc5YjcwZDhmYzdjMGUuLmU2MmE5NDA3ZTUx
YmU3MDU4MGNhY2NkNjE2YzUyMmE2N2M4YmM5ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xOTY3LDYg
KzE5NjcsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9LaWxsUmluZy5oIFwKICAgICBw
bGF0Zm9ybS9LVVJMLmggXAogICAgIHBsYXRmb3JtL0xlbmd0aC5oIFwKKyAgICBwbGF0Zm9ybS90
ZXh0L0JpZGlSdW5MaXN0LmggXAogICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oIFwKICAg
ICBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmggXAogICAgIHBsYXRmb3JtL3RleHQv
VGV4dENoZWNraW5nLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCAxMzYxNDg1ZDlmMzYyOTQ2NWQxYmQwY2Y2YjlkNWI0MjgwZTU5NDM3Li4x
NzUzMGRhMmY5YmFiMGQ1NjUyMjhlNmYzOTQ3ZmJlMjJmYWQzNWU0IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzA0MjUsNiArMzA0MjUsMTAg
QEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXHRleHRcQmlkaVJ1bkxpc3QuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8
RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRleHRcSHlwaGVuYXRpb24uaCIK
IAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxMDhkM2M2MzhjYTdmNWQ2NDkyYWM2MWRmMzljMjg5
ZWQ5MGVmODY1Li44YmE3ZTM2MTg3OGQ0Y2YxNzc3ZTkzMWZjYWM3Mjk3ZDZmMDVjNDNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0zNjM5LDYgKzM2MzksNyBAQAogCQlBOEMyMjgwRTExRDRBNTk3MDBENUE3RDMgLyogRG9jdW1l
bnRQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQThDMjI4MEQxMUQ0QTU5NzAwRDVBN0QzIC8qIERvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsK
IAkJQThDMjI4QTExMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzIyODlG
MTFENTcyMkUwMEQ1QTdEMyAvKiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmggKi87IH07CiAJ
CUE4QzIyOEEyMTFENTcyMkUwMEQ1QTdEMyAvKiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4QzIyOEEw
MTFENTcyMkUwMEQ1QTdEMyAvKiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmNwcCAqLzsgfTsK
KwkJQThDNDAyOTMxMzQ4QjIyMjAwNjNGMUU1IC8qIEJpZGlSdW5MaXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEM0MDI5MjEzNDhCMjIyMDA2M0Yx
RTUgLyogQmlkaVJ1bkxpc3QuaCAqLzsgfTsKIAkJQThDNEE3RkQwOUQ1NjMyNzAwMDNBQzhEIC8q
IFN0eWxlZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE4QzRBN0VCMDlENTYzMjcwMDAzQUM4RCAvKiBTdHlsZWRFbGVtZW50LmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQThDNEE3RkUwOUQ1
NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQThDNEE3RUMwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxl
ZEVsZW1lbnQuY3BwICovOyB9OwogCQlBOEM0QTgwMDA5RDU2MzI3MDAwM0FDOEQgLyogTm9kZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBOEM0QTdF
RTA5RDU2MzI3MDAwM0FDOEQgLyogTm9kZS5jcHAgKi87IH07CkBAIC0xMDAzNiw2ICsxMDAzNyw3
IEBACiAJCUE4QzIyODBEMTFENEE1OTcwMEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudFBhcnNlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzIyODlGMTFENTcyMkUwMEQ1QTdEMyAvKiBE
ZWNvZGVkRGF0YURvY3VtZW50UGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IERlY29kZWREYXRhRG9jdW1lbnRQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQThDMjI4QTAxMUQ1NzIyRTAwRDVBN0QzIC8qIERlY29kZWREYXRhRG9jdW1lbnRQYXJz
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGVjb2RlZERhdGFE
b2N1bWVudFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE4QzQwMjky
MTM0OEIyMjIwMDYzRjFFNSAvKiBCaWRpUnVuTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCaWRpUnVuTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
OEM0QTdFQjA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVkRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBOEM0QTdFQzA5RDU2MzI3MDAwM0FDOEQgLyogU3R5bGVkRWxlbWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVkRWxlbWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4QzRBN0VFMDlENTYzMjcwMDAzQUM4RCAv
KiBOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBOb2RlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3ODM2LDYgKzE3ODM4LDcgQEAKIAkJ
CQlCMkMzRDlGMjBEMDA2QzFEMDBFRjZGMjYgLyogQmlkaUNvbnRleHQuY3BwICovLAogCQkJCUIy
QzNEOUYzMEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpQ29udGV4dC5oICovLAogCQkJCUIyQzNEOUY0
MEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpUmVzb2x2ZXIuaCAqLywKKwkJCQlBOEM0MDI5MjEzNDhC
MjIyMDA2M0YxRTUgLyogQmlkaVJ1bkxpc3QuaCAqLywKIAkJCQkzNzVDRDIzMTExOUQ0M0M4MDBB
MkE4NTkgLyogSHlwaGVuYXRpb24uaCAqLywKIAkJCQk4OUI1RUE5RjExRTgwMDNEMDBGMjM2N0Ug
LyogTGluZUVuZGluZy5jcHAgKi8sCiAJCQkJODlCNUVBQTAxMUU4MDAzRDAwRjIzNjdFIC8qIExp
bmVFbmRpbmcuaCAqLywKQEAgLTE5ODcwLDYgKzE5ODczLDcgQEAKIAkJCQlCMkMzREEyNDBEMDA2
QzFEMDBFRjZGMjYgLyogQmlkaUNvbnRleHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTI1
MEQwMDZDMUQwMEVGNkYyNiAvKiBCaWRpUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
RTc4OTg2MTEyMEU3QTYwMDYwRUNFNSAvKiBCaWRpUnVuLmggaW4gSGVhZGVycyAqLywKKwkJCQlB
OEM0MDI5MzEzNDhCMjIyMDA2M0YxRTUgLyogQmlkaVJ1bkxpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCTkzODE5MjA1MEY4N0UxRUMwMEQ1MzUyQSAvKiBCaW5hcnlQcm9wZXJ0eUxpc3QuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE2MjJBOEZCMTIyQzQ0QTYwMEE3ODVCMyAvKiBCaW5kaW5nU2VjdXJp
dHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUE2MjJBOEZEMTIyQzQ0QTYwMEE3ODVCMyAvKiBCaW5k
aW5nU2VjdXJpdHlCYXNlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCmluZGV4IGQ3NTM4Mjg3NWNj
ZTU3MWRmYWVjYjJiNWU3NGI1NzVmMzZjNmZjNTkuLjI1YTQ2NTQzNDNkZDEwMWE1YmJlNjQ0ZWEx
ZmMxZDhhYzAyYzkwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcApAQCAtMzk3LDcgKzM5NywxMSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4m
IHJ1biwgY29uc3QgRgogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIC8vIEZJWE1FOiBUaGlzIG93bmVyc2hpcCBzaG91bGQgYmUgcmV2ZXJzZWQuIFdl
IHNob3VsZCBwYXNzIEJpZGlSdW5MaXN0CisgICAgLy8gdG8gQmlkaVJlc29sdmVyIGluIGNyZWF0
ZUJpZGlSdW5zRm9yTGluZS4KICAgICBCaWRpUmVzb2x2ZXI8VGV4dFJ1bkl0ZXJhdG9yLCBCaWRp
Q2hhcmFjdGVyUnVuPiBiaWRpUmVzb2x2ZXI7CisgICAgQmlkaVJ1bkxpc3Q8QmlkaUNoYXJhY3Rl
clJ1bj4mIGJpZGlSdW5zID0gYmlkaVJlc29sdmVyLnJ1bnMoKTsKKwogICAgIFdURjo6VW5pY29k
ZTo6RGlyZWN0aW9uIHBhcmFncmFwaERpcmVjdGlvbiA9IHJ1bi5sdHIoKSA/IFdURjo6VW5pY29k
ZTo6TGVmdFRvUmlnaHQgOiBXVEY6OlVuaWNvZGU6OlJpZ2h0VG9MZWZ0OwogCiAgICAgYmlkaVJl
c29sdmVyLnNldFN0YXR1cyhCaWRpU3RhdHVzKHBhcmFncmFwaERpcmVjdGlvbiwgcGFyYWdyYXBo
RGlyZWN0aW9uLCBwYXJhZ3JhcGhEaXJlY3Rpb24sIEJpZGlDb250ZXh0OjpjcmVhdGUocnVuLmx0
cigpID8gMCA6IDEsIHBhcmFncmFwaERpcmVjdGlvbiwgcnVuLmRpcmVjdGlvbmFsT3ZlcnJpZGUo
KSkpKTsKQEAgLTQwNSwxMSArNDA5LDExIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3Qmlk
aVRleHQoY29uc3QgRm9udCYgZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGCiAgICAg
YmlkaVJlc29sdmVyLnNldFBvc2l0aW9uKFRleHRSdW5JdGVyYXRvcigmcnVuLCAwKSk7CiAgICAg
YmlkaVJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShUZXh0UnVuSXRlcmF0b3IoJnJ1biwg
cnVuLmxlbmd0aCgpKSk7CiAKLSAgICBpZiAoIWJpZGlSZXNvbHZlci5ydW5Db3VudCgpKQorICAg
IGlmICghYmlkaVJ1bnMucnVuQ291bnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRmxvYXRQ
b2ludCBjdXJyUG9pbnQgPSBwb2ludDsKLSAgICBCaWRpQ2hhcmFjdGVyUnVuKiBiaWRpUnVuID0g
YmlkaVJlc29sdmVyLmZpcnN0UnVuKCk7CisgICAgQmlkaUNoYXJhY3RlclJ1biogYmlkaVJ1biA9
IGJpZGlSdW5zLmZpcnN0UnVuKCk7CiAgICAgd2hpbGUgKGJpZGlSdW4pIHsKIAogICAgICAgICBU
ZXh0UnVuIHN1YnJ1biA9IHJ1bjsKQEAgLTQyNSw3ICs0MjksNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0JpZGlUZXh0KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwg
Y29uc3QgRgogICAgICAgICAgICAgY3VyclBvaW50Lm1vdmUoZm9udC53aWR0aChzdWJydW4pLCAw
KTsKICAgICB9CiAKLSAgICBiaWRpUmVzb2x2ZXIuZGVsZXRlUnVucygpOworICAgIGJpZGlSdW5z
LmRlbGV0ZVJ1bnMoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdIaWdobGlnaHRG
b3JUZXh0KGNvbnN0IEZvbnQmIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQsIGludCBoLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yLCBDb2xvclNw
YWNlIGNvbG9yU3BhY2UsIGludCBmcm9tLCBpbnQgdG8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9CaWRpUmVzb2x2ZXIuaAppbmRleCBmNzMzNDY1YmY0ZmI0NDNlYWZjMDcyMTRmNWFi
MDk0NTQyY2M1ODljLi5jNmVmZGQ4ZmZlYjkwMDZiYWViNGRiNjg2YmI1MWZjZTFmNjI3OTk0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSZXNvbHZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJlc29sdmVyLmgKQEAgLTIzLDYg
KzIzLDcgQEAKICNkZWZpbmUgQmlkaVJlc29sdmVyX2gKIAogI2luY2x1ZGUgIkJpZGlDb250ZXh0
LmgiCisjaW5jbHVkZSAiQmlkaVJ1bkxpc3QuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTE0Nyw2ICsxNDgsOCBAQCBlbnVtIFZpc3VhbERpcmVjdGlvbk92ZXJyaWRlIHsKICAgICBW
aXN1YWxSaWdodFRvTGVmdE92ZXJyaWRlCiB9OwogCisvLyBCaWRpUmVzb2x2ZXIgaXMgV2ViS2l0
J3MgaW1wbGVtZW50YXRpb24gb2YgdGhlIFVuaWNvZGUgQmlkaSBBbGdvcml0aG0KKy8vIGh0dHA6
Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyOQogdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFz
cyBSdW4+IGNsYXNzIEJpZGlSZXNvbHZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQmlk
aVJlc29sdmVyKTsKIHB1YmxpYzoKQEAgLTE1NCwxMCArMTU3LDYgQEAgcHVibGljOgogICAgICAg
ICA6IG1fZGlyZWN0aW9uKFdURjo6VW5pY29kZTo6T3RoZXJOZXV0cmFsKQogICAgICAgICAsIG1f
cmVhY2hlZEVuZE9mTGluZShmYWxzZSkKICAgICAgICAgLCBtX2VtcHR5UnVuKHRydWUpCi0gICAg
ICAgICwgbV9maXJzdFJ1bigwKQotICAgICAgICAsIG1fbGFzdFJ1bigwKQotICAgICAgICAsIG1f
bG9naWNhbGx5TGFzdFJ1bigwKQotICAgICAgICAsIG1fcnVuQ291bnQoMCkKICAgICB7CiAgICAg
fQogCkBAIC0xODYsMjIgKzE4NSwxNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNyZWF0ZUJpZGlS
dW5zRm9yTGluZShjb25zdCBJdGVyYXRvciYgZW5kLCBWaXN1YWxEaXJlY3Rpb25PdmVycmlkZSA9
IE5vVmlzdWFsT3ZlcnJpZGUsIGJvb2wgaGFyZExpbmVCcmVhayA9IGZhbHNlKTsKIAotICAgIFJ1
biogZmlyc3RSdW4oKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0UnVuOyB9Ci0gICAgUnVuKiBsYXN0
UnVuKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UnVuOyB9Ci0gICAgUnVuKiBsb2dpY2FsbHlMYXN0
UnVuKCkgY29uc3QgeyByZXR1cm4gbV9sb2dpY2FsbHlMYXN0UnVuOyB9Ci0gICAgdW5zaWduZWQg
cnVuQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3J1bkNvdW50OyB9CisgICAgQmlkaVJ1bkxpc3Q8
UnVuPiYgcnVucygpIHsgcmV0dXJuIG1fcnVuczsgfQogCi0gICAgdm9pZCBhZGRSdW4oUnVuKik7
Ci0gICAgdm9pZCBwcmVwZW5kUnVuKFJ1biopOwotCi0gICAgdm9pZCBtb3ZlUnVuVG9FbmQoUnVu
Kik7Ci0gICAgdm9pZCBtb3ZlUnVuVG9CZWdpbm5pbmcoUnVuKik7Ci0KLSAgICB2b2lkIGRlbGV0
ZVJ1bnMoKTsKKyAgICAvLyBGSVhNRTogVGhpcyB1c2VkIHRvIGJlIHBhcnQgb2YgZGVsZXRlUnVu
cygpIGJ1dCB3YXMgYSBsYXllcmluZyB2aW9sYXRpb24uCisgICAgLy8gSXQncyB1bmNsZWFyIGlm
IHRoaXMgaXMgc3RpbGwgbmVlZGVkLgorICAgIHZvaWQgbWFya0N1cnJlbnRSdW5FbXB0eSgpIHsg
bV9lbXB0eVJ1biA9IHRydWU7IH0KIAogcHJvdGVjdGVkOgorICAgIC8vIEZJWE1FOiBJbnN0ZWFk
IG9mIElubGluZUJpZGlSZXNvbHZlcnMgc3ViY2xhc3NpbmcgdGhpcyBtZXRob2QsIHdlIHNob3Vs
ZAorICAgIC8vIHBhc3MgaW4gc29tZSBzb3J0IG9mIFRyYWl0cyBvYmplY3Qgd2hpY2gga25vd3Mg
aG93IHRvIGNyZWF0ZSBydW5zIGZvciBhcHBlbmRpbmcuCiAgICAgdm9pZCBhcHBlbmRSdW4oKTsK
LSAgICB2b2lkIHJldmVyc2VSdW5zKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpOwogCiAg
ICAgSXRlcmF0b3IgbV9jdXJyZW50OwogICAgIC8vIHNvciBhbmQgZW9yIGFyZSAic3RhcnQgb2Yg
cnVuIiBhbmQgImVuZCBvZiBydW4iIHJlc3BlY3RpdmVseSBhbmQgY29ycmVwb25kCkBAIC0yMTYs
MTAgKzIwOSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgSXRlcmF0b3IgbV9sYXN0QmVmb3JlRVQ7IC8v
IEJlZm9yZSBhIEV1cm9wZWFuTnVtYmVyVGVybWluYXRvcgogICAgIGJvb2wgbV9lbXB0eVJ1bjsK
IAotICAgIFJ1biogbV9maXJzdFJ1bjsKLSAgICBSdW4qIG1fbGFzdFJ1bjsKLSAgICBSdW4qIG1f
bG9naWNhbGx5TGFzdFJ1bjsKLSAgICB1bnNpZ25lZCBtX3J1bkNvdW50OworICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBub3QgYmVsb25nIHRvIHRoZSByZXNvbHZlciwgYnV0IHJhdGhlciBiZSBw
YXNzZWQKKyAgICAvLyBpbnRvIGNyZWF0ZUJpZGlSdW5zRm9yTGluZSBieSB0aGUgY2FsbGVyLgor
ICAgIEJpZGlSdW5MaXN0PFJ1bj4gbV9ydW5zOworCiAgICAgTWlkcG9pbnRTdGF0ZTxJdGVyYXRv
cj4gbV9taWRwb2ludFN0YXRlOwogCiBwcml2YXRlOgpAQCAtMjM0LDc2ICsyMjcsNiBAQCBwcml2
YXRlOgogfTsKIAogdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+Ci1pbmxpbmUg
dm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmFkZFJ1bihSdW4qIHJ1bikKLXsKLSAg
ICBpZiAoIW1fZmlyc3RSdW4pCi0gICAgICAgIG1fZmlyc3RSdW4gPSBydW47Ci0gICAgZWxzZQot
ICAgICAgICBtX2xhc3RSdW4tPm1fbmV4dCA9IHJ1bjsKLSAgICBtX2xhc3RSdW4gPSBydW47Ci0g
ICAgbV9ydW5Db3VudCsrOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1
bj4KLWlubGluZSB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6cHJlcGVuZFJ1bihS
dW4qIHJ1bikKLXsKLSAgICBBU1NFUlQoIXJ1bi0+bV9uZXh0KTsKLQotICAgIGlmICghbV9sYXN0
UnVuKQotICAgICAgICBtX2xhc3RSdW4gPSBydW47Ci0gICAgZWxzZQotICAgICAgICBydW4tPm1f
bmV4dCA9IG1fZmlyc3RSdW47Ci0gICAgbV9maXJzdFJ1biA9IHJ1bjsKLSAgICBtX3J1bkNvdW50
Kys7Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xhc3MgUnVuPgotaW5saW5lIHZv
aWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+Ojptb3ZlUnVuVG9FbmQoUnVuKiBydW4pCi17
Ci0gICAgQVNTRVJUKG1fZmlyc3RSdW4pOwotICAgIEFTU0VSVChtX2xhc3RSdW4pOwotICAgIEFT
U0VSVChydW4tPm1fbmV4dCk7Ci0KLSAgICBSdW4qIGN1cnJlbnQgPSAwOwotICAgIFJ1biogbmV4
dCA9IG1fZmlyc3RSdW47Ci0gICAgd2hpbGUgKG5leHQgIT0gcnVuKSB7Ci0gICAgICAgIGN1cnJl
bnQgPSBuZXh0OwotICAgICAgICBuZXh0ID0gY3VycmVudC0+bmV4dCgpOwotICAgIH0KLQotICAg
IGlmICghY3VycmVudCkKLSAgICAgICAgbV9maXJzdFJ1biA9IHJ1bi0+bmV4dCgpOwotICAgIGVs
c2UKLSAgICAgICAgY3VycmVudC0+bV9uZXh0ID0gcnVuLT5tX25leHQ7Ci0KLSAgICBydW4tPm1f
bmV4dCA9IDA7Ci0gICAgbV9sYXN0UnVuLT5tX25leHQgPSBydW47Ci0gICAgbV9sYXN0UnVuID0g
cnVuOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4KLWlubGluZSB2
b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6bW92ZVJ1blRvQmVnaW5uaW5nKFJ1biog
cnVuKQotewotICAgIEFTU0VSVChtX2ZpcnN0UnVuKTsKLSAgICBBU1NFUlQobV9sYXN0UnVuKTsK
LSAgICBBU1NFUlQocnVuICE9IG1fZmlyc3RSdW4pOwotCi0gICAgUnVuKiBjdXJyZW50ID0gbV9m
aXJzdFJ1bjsKLSAgICBSdW4qIG5leHQgPSBjdXJyZW50LT5uZXh0KCk7Ci0gICAgd2hpbGUgKG5l
eHQgIT0gcnVuKSB7Ci0gICAgICAgIGN1cnJlbnQgPSBuZXh0OwotICAgICAgICBuZXh0ID0gY3Vy
cmVudC0+bmV4dCgpOwotICAgIH0KLQotICAgIGN1cnJlbnQtPm1fbmV4dCA9IHJ1bi0+bV9uZXh0
OwotICAgIGlmIChydW4gPT0gbV9sYXN0UnVuKQotICAgICAgICBtX2xhc3RSdW4gPSBjdXJyZW50
OwotCi0gICAgcnVuLT5tX25leHQgPSBtX2ZpcnN0UnVuOwotICAgIG1fZmlyc3RSdW4gPSBydW47
Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xhc3MgUnVuPgogdm9pZCBCaWRpUmVz
b2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmFwcGVuZFJ1bigpCiB7CiAgICAgaWYgKCFtX2VtcHR5UnVu
ICYmICFtX2Vvci5hdEVuZCgpKSB7CkBAIC0zMTYsNyArMjM5LDcgQEAgdm9pZCBCaWRpUmVzb2x2
ZXI8SXRlcmF0b3IsIFJ1bj46OmFwcGVuZFJ1bigpCiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
ZW5kT2Zmc2V0ID49IHN0YXJ0T2Zmc2V0KQotICAgICAgICAgICAgYWRkUnVuKG5ldyBSdW4oc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCArIDEsIGNvbnRleHQoKSwgbV9kaXJlY3Rpb24pKTsKKyAgICAg
ICAgICAgIG1fcnVucy5hZGRSdW4obmV3IFJ1bihzdGFydE9mZnNldCwgZW5kT2Zmc2V0ICsgMSwg
Y29udGV4dCgpLCBtX2RpcmVjdGlvbikpOwogCiAgICAgICAgIG1fZW9yLmluY3JlbWVudCgpOwog
ICAgICAgICBtX3NvciA9IG1fZW9yOwpAQCAtMzgwLDggKzMwMywxMCBAQCB2b2lkIEJpZGlSZXNv
bHZlcjxJdGVyYXRvciwgUnVuPjo6bG93ZXJFeHBsaWNpdEVtYmVkZGluZ0xldmVsKFdURjo6VW5p
Y29kZTo6RGlyZQogICAgICAgICB9CiAgICAgICAgIG1fZW9yID0gbV9sYXN0OwogICAgIH0KKwog
ICAgIGFwcGVuZFJ1bigpOwogICAgIG1fZW1wdHlSdW4gPSB0cnVlOworCiAgICAgLy8gc29yIGZv
ciB0aGUgbmV3IHJ1biBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBoaWdoZXIgbGV2ZWwgKHJ1bGUgWDEw
KQogICAgIHNldExhc3REaXIoZnJvbSk7CiAgICAgc2V0TGFzdFN0cm9uZ0Rpcihmcm9tKTsKQEAg
LTQxOCw4ICszNDMsMTAgQEAgdm9pZCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OnJhaXNl
RXhwbGljaXRFbWJlZGRpbmdMZXZlbChXVEY6OlVuaWNvZGU6OkRpcmUKICAgICAgICAgfQogICAg
ICAgICBtX2VvciA9IG1fbGFzdDsKICAgICB9CisKICAgICBhcHBlbmRSdW4oKTsKICAgICBtX2Vt
cHR5UnVuID0gdHJ1ZTsKKwogICAgIHNldExhc3REaXIodG8pOwogICAgIHNldExhc3RTdHJvbmdE
aXIodG8pOwogICAgIG1fZW9yID0gSXRlcmF0b3IoKTsKQEAgLTQ2Niw3NSArMzkzLDYgQEAgYm9v
bCBCaWRpUmVzb2x2ZXI8SXRlcmF0b3IsIFJ1bj46OmNvbW1pdEV4cGxpY2l0RW1iZWRkaW5nKCkK
IH0KIAogdGVtcGxhdGUgPGNsYXNzIEl0ZXJhdG9yLCBjbGFzcyBSdW4+Ci12b2lkIEJpZGlSZXNv
bHZlcjxJdGVyYXRvciwgUnVuPjo6ZGVsZXRlUnVucygpCi17Ci0gICAgbV9lbXB0eVJ1biA9IHRy
dWU7Ci0gICAgaWYgKCFtX2ZpcnN0UnVuKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSdW4qIGN1
cnIgPSBtX2ZpcnN0UnVuOwotICAgIHdoaWxlIChjdXJyKSB7Ci0gICAgICAgIFJ1biogcyA9IGN1
cnItPm5leHQoKTsKLSAgICAgICAgY3Vyci0+ZGVzdHJveSgpOwotICAgICAgICBjdXJyID0gczsK
LSAgICB9Ci0KLSAgICBtX2ZpcnN0UnVuID0gMDsKLSAgICBtX2xhc3RSdW4gPSAwOwotICAgIG1f
cnVuQ291bnQgPSAwOwotfQotCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3IsIGNsYXNzIFJ1bj4K
LXZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpyZXZlcnNlUnVucyh1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgZW5kKQotewotICAgIGlmIChzdGFydCA+PSBlbmQpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIEFTU0VSVChlbmQgPCBtX3J1bkNvdW50KTsKLSAgICAKLSAgICAvLyBHZXQg
dGhlIGl0ZW0gYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgcnVucyB0byByZXZlcnNlIGFuZCBwdXQg
aXQgaW4KLSAgICAvLyB8YmVmb3JlU3RhcnR8LiAgfGN1cnJ8IHNob3VsZCBwb2ludCB0byB0aGUg
Zmlyc3QgcnVuIHRvIHJldmVyc2UuCi0gICAgUnVuKiBjdXJyID0gbV9maXJzdFJ1bjsKLSAgICBS
dW4qIGJlZm9yZVN0YXJ0ID0gMDsKLSAgICB1bnNpZ25lZCBpID0gMDsKLSAgICB3aGlsZSAoaSA8
IHN0YXJ0KSB7Ci0gICAgICAgIGkrKzsKLSAgICAgICAgYmVmb3JlU3RhcnQgPSBjdXJyOwotICAg
ICAgICBjdXJyID0gY3Vyci0+bmV4dCgpOwotICAgIH0KLQotICAgIFJ1biogc3RhcnRSdW4gPSBj
dXJyOwotICAgIHdoaWxlIChpIDwgZW5kKSB7Ci0gICAgICAgIGkrKzsKLSAgICAgICAgY3VyciA9
IGN1cnItPm5leHQoKTsKLSAgICB9Ci0gICAgUnVuKiBlbmRSdW4gPSBjdXJyOwotICAgIFJ1biog
YWZ0ZXJFbmQgPSBjdXJyLT5uZXh0KCk7Ci0KLSAgICBpID0gc3RhcnQ7Ci0gICAgY3VyciA9IHN0
YXJ0UnVuOwotICAgIFJ1biogbmV3TmV4dCA9IGFmdGVyRW5kOwotICAgIHdoaWxlIChpIDw9IGVu
ZCkgewotICAgICAgICAvLyBEbyB0aGUgcmV2ZXJzYWwuCi0gICAgICAgIFJ1biogbmV4dCA9IGN1
cnItPm5leHQoKTsKLSAgICAgICAgY3Vyci0+bV9uZXh0ID0gbmV3TmV4dDsKLSAgICAgICAgbmV3
TmV4dCA9IGN1cnI7Ci0gICAgICAgIGN1cnIgPSBuZXh0OwotICAgICAgICBpKys7Ci0gICAgfQot
Ci0gICAgLy8gTm93IGhvb2sgdXAgYmVmb3JlU3RhcnQgYW5kIGFmdGVyRW5kIHRvIHRoZSBzdGFy
dFJ1biBhbmQgZW5kUnVuLgotICAgIGlmIChiZWZvcmVTdGFydCkKLSAgICAgICAgYmVmb3JlU3Rh
cnQtPm1fbmV4dCA9IGVuZFJ1bjsKLSAgICBlbHNlCi0gICAgICAgIG1fZmlyc3RSdW4gPSBlbmRS
dW47Ci0KLSAgICBzdGFydFJ1bi0+bV9uZXh0ID0gYWZ0ZXJFbmQ7Ci0gICAgaWYgKCFhZnRlckVu
ZCkKLSAgICAgICAgbV9sYXN0UnVuID0gc3RhcnRSdW47Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBJ
dGVyYXRvciwgY2xhc3MgUnVuPgogaW5saW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBS
dW4+Ojp1cGRhdGVTdGF0dXNMYXN0RnJvbUN1cnJlbnREaXJlY3Rpb24oV1RGOjpVbmljb2RlOjpE
aXJlY3Rpb24gZGlyQ3VycmVudCkKIHsKICAgICB1c2luZyBuYW1lc3BhY2UgV1RGOjpVbmljb2Rl
OwpAQCAtNTgxLDcgKzQzOSw3IEBAIGlubGluZSB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwg
UnVuPjo6cmVvcmRlclJ1bnNGcm9tTGV2ZWxzKCkKIHsKICAgICB1bnNpZ25lZCBjaGFyIGxldmVs
TG93ID0gMTI4OwogICAgIHVuc2lnbmVkIGNoYXIgbGV2ZWxIaWdoID0gMDsKLSAgICBmb3IgKFJ1
biogcnVuID0gZmlyc3RSdW4oKTsgcnVuOyBydW4gPSBydW4tPm5leHQoKSkgeworICAgIGZvciAo
UnVuKiBydW4gPSBtX3J1bnMuZmlyc3RSdW4oKTsgcnVuOyBydW4gPSBydW4tPm5leHQoKSkgewog
ICAgICAgICBsZXZlbEhpZ2ggPSBzdGQ6Om1heChydW4tPmxldmVsKCksIGxldmVsSGlnaCk7CiAg
ICAgICAgIGxldmVsTG93ID0gc3RkOjptaW4ocnVuLT5sZXZlbCgpLCBsZXZlbExvdyk7CiAgICAg
fQpAQCAtNTk1LDExICs0NTMsMTEgQEAgaW5saW5lIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9y
LCBSdW4+OjpyZW9yZGVyUnVuc0Zyb21MZXZlbHMoKQogICAgIGlmICghKGxldmVsTG93ICUgMikp
CiAgICAgICAgIGxldmVsTG93Kys7CiAKLSAgICB1bnNpZ25lZCBjb3VudCA9IHJ1bkNvdW50KCkg
LSAxOworICAgIHVuc2lnbmVkIGNvdW50ID0gbV9ydW5zLnJ1bkNvdW50KCkgLSAxOwogCiAgICAg
d2hpbGUgKGxldmVsSGlnaCA+PSBsZXZlbExvdykgewogICAgICAgICB1bnNpZ25lZCBpID0gMDsK
LSAgICAgICAgUnVuKiBydW4gPSBmaXJzdFJ1bigpOworICAgICAgICBSdW4qIHJ1biA9IG1fcnVu
cy5maXJzdFJ1bigpOwogICAgICAgICB3aGlsZSAoaSA8IGNvdW50KSB7CiAgICAgICAgICAgICBm
b3IgKDtpIDwgY291bnQgJiYgcnVuICYmIHJ1bi0+bGV2ZWwoKSA8IGxldmVsSGlnaDsgaSsrKQog
ICAgICAgICAgICAgICAgIHJ1biA9IHJ1bi0+bmV4dCgpOwpAQCAtNjA3LDcgKzQ2NSw3IEBAIGlu
bGluZSB2b2lkIEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6cmVvcmRlclJ1bnNGcm9tTGV2
ZWxzKCkKICAgICAgICAgICAgIGZvciAoO2kgPD0gY291bnQgJiYgcnVuICYmIHJ1bi0+bGV2ZWwo
KSA+PSBsZXZlbEhpZ2g7IGkrKykKICAgICAgICAgICAgICAgICBydW4gPSBydW4tPm5leHQoKTsK
ICAgICAgICAgICAgIHVuc2lnbmVkIGVuZCA9IGkgLSAxOwotICAgICAgICAgICAgcmV2ZXJzZVJ1
bnMoc3RhcnQsIGVuZCk7CisgICAgICAgICAgICBtX3J1bnMucmV2ZXJzZVJ1bnMoc3RhcnQsIGVu
ZCk7CiAgICAgICAgIH0KICAgICAgICAgbGV2ZWxIaWdoLS07CiAgICAgfQpAQCAtNjMwLDkgKzQ4
OCw5IEBAIHZvaWQgQmlkaVJlc29sdmVyPEl0ZXJhdG9yLCBSdW4+OjpjcmVhdGVCaWRpUnVuc0Zv
ckxpbmUoY29uc3QgSXRlcmF0b3ImIGVuZCwgVmlzCiAgICAgICAgIH0KICAgICAgICAgbV9kaXJl
Y3Rpb24gPSBvdmVycmlkZSA9PSBWaXN1YWxMZWZ0VG9SaWdodE92ZXJyaWRlID8gTGVmdFRvUmln
aHQgOiBSaWdodFRvTGVmdDsKICAgICAgICAgYXBwZW5kUnVuKCk7Ci0gICAgICAgIG1fbG9naWNh
bGx5TGFzdFJ1biA9IG1fbGFzdFJ1bjsKKyAgICAgICAgbV9ydW5zLnNldExvZ2ljYWxseUxhc3RS
dW4obV9ydW5zLmxhc3RSdW4oKSk7CiAgICAgICAgIGlmIChvdmVycmlkZSA9PSBWaXN1YWxSaWdo
dFRvTGVmdE92ZXJyaWRlKQotICAgICAgICAgICAgcmV2ZXJzZVJ1bnMoMCwgcnVuQ291bnQoKSAt
IDEpOworICAgICAgICAgICAgbV9ydW5zLnJldmVyc2VSdW5zKDAsIG1fcnVucy5ydW5Db3VudCgp
IC0gMSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk5Nyw3ICs4NTUsNyBAQCB2b2lk
IEJpZGlSZXNvbHZlcjxJdGVyYXRvciwgUnVuPjo6Y3JlYXRlQmlkaVJ1bnNGb3JMaW5lKGNvbnN0
IEl0ZXJhdG9yJiBlbmQsIFZpcwogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9sb2dpY2FsbHlM
YXN0UnVuID0gbV9sYXN0UnVuOworICAgIG1fcnVucy5zZXRMb2dpY2FsbHlMYXN0UnVuKG1fcnVu
cy5sYXN0UnVuKCkpOwogICAgIHJlb3JkZXJSdW5zRnJvbUxldmVscygpOwogICAgIGVuZE9mTGlu
ZSA9IEl0ZXJhdG9yKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0JpZGlSdW5MaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0JpZGlSdW5M
aXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTRhYTNjMmM5ZWVlYThhN2JkNDZjMGM0ZTdlNTkyZTg3ZmM3ZDBi
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmlkaVJ1
bkxpc3QuaApAQCAtMCwwICsxLDIwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwMCBMYXJz
IEtub2xsIChrbm9sbEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA2
LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gIEFsbCByaWdodCByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVm
IEJpZGlSdW5MaXN0X2gKKyNkZWZpbmUgQmlkaVJ1bkxpc3RfaAorCisjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGUgPGNsYXNzIFJ1
bj4KK2NsYXNzIEJpZGlSdW5MaXN0IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCaWRpUnVu
TGlzdCk7CitwdWJsaWM6CisgICAgQmlkaVJ1bkxpc3QoKQorICAgICAgICA6IG1fZmlyc3RSdW4o
MCkKKyAgICAgICAgLCBtX2xhc3RSdW4oMCkKKyAgICAgICAgLCBtX2xvZ2ljYWxseUxhc3RSdW4o
MCkKKyAgICAgICAgLCBtX3J1bkNvdW50KDApCisgICAgeworICAgIH0KKworICAgIC8vIEZJWE1F
OiBPbmNlIEJpZGlSZXNvbHZlciBubyBsb25nZXIgb3ducyB0aGUgQmlkaVJ1bkxpc3QsCisgICAg
Ly8gdGhlbiB+QmlkaVJ1bkxpc3Qgc2hvdWxkIGNhbGwgZGVsZXRlUnVucygpIGF1dG9tYXRpY2Fs
bHkuCisKKyAgICBSdW4qIGZpcnN0UnVuKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdFJ1bjsgfQor
ICAgIFJ1biogbGFzdFJ1bigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFJ1bjsgfQorICAgIFJ1biog
bG9naWNhbGx5TGFzdFJ1bigpIGNvbnN0IHsgcmV0dXJuIG1fbG9naWNhbGx5TGFzdFJ1bjsgfQor
ICAgIHVuc2lnbmVkIHJ1bkNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9ydW5Db3VudDsgfQorCisg
ICAgdm9pZCBhZGRSdW4oUnVuKik7CisgICAgdm9pZCBwcmVwZW5kUnVuKFJ1biopOworCisgICAg
dm9pZCBtb3ZlUnVuVG9FbmQoUnVuKik7CisgICAgdm9pZCBtb3ZlUnVuVG9CZWdpbm5pbmcoUnVu
Kik7CisKKyAgICB2b2lkIGRlbGV0ZVJ1bnMoKTsKKyAgICB2b2lkIHJldmVyc2VSdW5zKHVuc2ln
bmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpOworICAgIHZvaWQgcmVvcmRlclJ1bnNGcm9tTGV2ZWxz
KCk7CisKKyAgICB2b2lkIHNldExvZ2ljYWxseUxhc3RSdW4oUnVuKiBydW4pIHsgbV9sb2dpY2Fs
bHlMYXN0UnVuID0gcnVuOyB9CisKK3ByaXZhdGU6CisgICAgUnVuKiBtX2ZpcnN0UnVuOworICAg
IFJ1biogbV9sYXN0UnVuOworICAgIFJ1biogbV9sb2dpY2FsbHlMYXN0UnVuOworICAgIHVuc2ln
bmVkIG1fcnVuQ291bnQ7Cit9OworCit0ZW1wbGF0ZSA8Y2xhc3MgUnVuPgoraW5saW5lIHZvaWQg
QmlkaVJ1bkxpc3Q8UnVuPjo6YWRkUnVuKFJ1biogcnVuKQoreworICAgIGlmICghbV9maXJzdFJ1
bikKKyAgICAgICAgbV9maXJzdFJ1biA9IHJ1bjsKKyAgICBlbHNlCisgICAgICAgIG1fbGFzdFJ1
bi0+bV9uZXh0ID0gcnVuOworICAgIG1fbGFzdFJ1biA9IHJ1bjsKKyAgICBtX3J1bkNvdW50Kys7
Cit9CisKK3RlbXBsYXRlIDxjbGFzcyBSdW4+CitpbmxpbmUgdm9pZCBCaWRpUnVuTGlzdDxSdW4+
OjpwcmVwZW5kUnVuKFJ1biogcnVuKQoreworICAgIEFTU0VSVCghcnVuLT5tX25leHQpOworCisg
ICAgaWYgKCFtX2xhc3RSdW4pCisgICAgICAgIG1fbGFzdFJ1biA9IHJ1bjsKKyAgICBlbHNlCisg
ICAgICAgIHJ1bi0+bV9uZXh0ID0gbV9maXJzdFJ1bjsKKyAgICBtX2ZpcnN0UnVuID0gcnVuOwor
ICAgIG1fcnVuQ291bnQrKzsKK30KKwordGVtcGxhdGUgPGNsYXNzIFJ1bj4KK2lubGluZSB2b2lk
IEJpZGlSdW5MaXN0PFJ1bj46Om1vdmVSdW5Ub0VuZChSdW4qIHJ1bikKK3sKKyAgICBBU1NFUlQo
bV9maXJzdFJ1bik7CisgICAgQVNTRVJUKG1fbGFzdFJ1bik7CisgICAgQVNTRVJUKHJ1bi0+bV9u
ZXh0KTsKKworICAgIFJ1biogY3VycmVudCA9IDA7CisgICAgUnVuKiBuZXh0ID0gbV9maXJzdFJ1
bjsKKyAgICB3aGlsZSAobmV4dCAhPSBydW4pIHsKKyAgICAgICAgY3VycmVudCA9IG5leHQ7Cisg
ICAgICAgIG5leHQgPSBjdXJyZW50LT5uZXh0KCk7CisgICAgfQorCisgICAgaWYgKCFjdXJyZW50
KQorICAgICAgICBtX2ZpcnN0UnVuID0gcnVuLT5uZXh0KCk7CisgICAgZWxzZQorICAgICAgICBj
dXJyZW50LT5tX25leHQgPSBydW4tPm1fbmV4dDsKKworICAgIHJ1bi0+bV9uZXh0ID0gMDsKKyAg
ICBtX2xhc3RSdW4tPm1fbmV4dCA9IHJ1bjsKKyAgICBtX2xhc3RSdW4gPSBydW47Cit9CisKK3Rl
bXBsYXRlIDxjbGFzcyBSdW4+CitpbmxpbmUgdm9pZCBCaWRpUnVuTGlzdDxSdW4+Ojptb3ZlUnVu
VG9CZWdpbm5pbmcoUnVuKiBydW4pCit7CisgICAgQVNTRVJUKG1fZmlyc3RSdW4pOworICAgIEFT
U0VSVChtX2xhc3RSdW4pOworICAgIEFTU0VSVChydW4gIT0gbV9maXJzdFJ1bik7CisKKyAgICBS
dW4qIGN1cnJlbnQgPSBtX2ZpcnN0UnVuOworICAgIFJ1biogbmV4dCA9IGN1cnJlbnQtPm5leHQo
KTsKKyAgICB3aGlsZSAobmV4dCAhPSBydW4pIHsKKyAgICAgICAgY3VycmVudCA9IG5leHQ7Cisg
ICAgICAgIG5leHQgPSBjdXJyZW50LT5uZXh0KCk7CisgICAgfQorCisgICAgY3VycmVudC0+bV9u
ZXh0ID0gcnVuLT5tX25leHQ7CisgICAgaWYgKHJ1biA9PSBtX2xhc3RSdW4pCisgICAgICAgIG1f
bGFzdFJ1biA9IGN1cnJlbnQ7CisKKyAgICBydW4tPm1fbmV4dCA9IG1fZmlyc3RSdW47CisgICAg
bV9maXJzdFJ1biA9IHJ1bjsKK30KKwordGVtcGxhdGUgPGNsYXNzIFJ1bj4KK3ZvaWQgQmlkaVJ1
bkxpc3Q8UnVuPjo6ZGVsZXRlUnVucygpCit7CisgICAgaWYgKCFtX2ZpcnN0UnVuKQorICAgICAg
ICByZXR1cm47CisKKyAgICBSdW4qIGN1cnIgPSBtX2ZpcnN0UnVuOworICAgIHdoaWxlIChjdXJy
KSB7CisgICAgICAgIFJ1biogcyA9IGN1cnItPm5leHQoKTsKKyAgICAgICAgY3Vyci0+ZGVzdHJv
eSgpOworICAgICAgICBjdXJyID0gczsKKyAgICB9CisKKyAgICBtX2ZpcnN0UnVuID0gMDsKKyAg
ICBtX2xhc3RSdW4gPSAwOworICAgIG1fcnVuQ291bnQgPSAwOworfQorCit0ZW1wbGF0ZSA8Y2xh
c3MgUnVuPgordm9pZCBCaWRpUnVuTGlzdDxSdW4+OjpyZXZlcnNlUnVucyh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgZW5kKQoreworICAgIGlmIChzdGFydCA+PSBlbmQpCisgICAgICAgIHJldHVy
bjsKKworICAgIEFTU0VSVChlbmQgPCBtX3J1bkNvdW50KTsKKworICAgIC8vIEdldCB0aGUgaXRl
bSBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBydW5zIHRvIHJldmVyc2UgYW5kIHB1dCBpdCBpbgor
ICAgIC8vIHxiZWZvcmVTdGFydHwuIHxjdXJyfCBzaG91bGQgcG9pbnQgdG8gdGhlIGZpcnN0IHJ1
biB0byByZXZlcnNlLgorICAgIFJ1biogY3VyciA9IG1fZmlyc3RSdW47CisgICAgUnVuKiBiZWZv
cmVTdGFydCA9IDA7CisgICAgdW5zaWduZWQgaSA9IDA7CisgICAgd2hpbGUgKGkgPCBzdGFydCkg
eworICAgICAgICBpKys7CisgICAgICAgIGJlZm9yZVN0YXJ0ID0gY3VycjsKKyAgICAgICAgY3Vy
ciA9IGN1cnItPm5leHQoKTsKKyAgICB9CisKKyAgICBSdW4qIHN0YXJ0UnVuID0gY3VycjsKKyAg
ICB3aGlsZSAoaSA8IGVuZCkgeworICAgICAgICBpKys7CisgICAgICAgIGN1cnIgPSBjdXJyLT5u
ZXh0KCk7CisgICAgfQorICAgIFJ1biogZW5kUnVuID0gY3VycjsKKyAgICBSdW4qIGFmdGVyRW5k
ID0gY3Vyci0+bmV4dCgpOworCisgICAgaSA9IHN0YXJ0OworICAgIGN1cnIgPSBzdGFydFJ1bjsK
KyAgICBSdW4qIG5ld05leHQgPSBhZnRlckVuZDsKKyAgICB3aGlsZSAoaSA8PSBlbmQpIHsKKyAg
ICAgICAgLy8gRG8gdGhlIHJldmVyc2FsLgorICAgICAgICBSdW4qIG5leHQgPSBjdXJyLT5uZXh0
KCk7CisgICAgICAgIGN1cnItPm1fbmV4dCA9IG5ld05leHQ7CisgICAgICAgIG5ld05leHQgPSBj
dXJyOworICAgICAgICBjdXJyID0gbmV4dDsKKyAgICAgICAgaSsrOworICAgIH0KKworICAgIC8v
IE5vdyBob29rIHVwIGJlZm9yZVN0YXJ0IGFuZCBhZnRlckVuZCB0byB0aGUgc3RhcnRSdW4gYW5k
IGVuZFJ1bi4KKyAgICBpZiAoYmVmb3JlU3RhcnQpCisgICAgICAgIGJlZm9yZVN0YXJ0LT5tX25l
eHQgPSBlbmRSdW47CisgICAgZWxzZQorICAgICAgICBtX2ZpcnN0UnVuID0gZW5kUnVuOworCisg
ICAgc3RhcnRSdW4tPm1fbmV4dCA9IGFmdGVyRW5kOworICAgIGlmICghYWZ0ZXJFbmQpCisgICAg
ICAgIG1fbGFzdFJ1biA9IHN0YXJ0UnVuOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBCaWRpUnVuTGlzdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0lubGluZUl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRl
cmF0b3IuaAppbmRleCAyYzZhYWFmNmRmMTAzYWM1ZjhmZjY0ZWM3MGNkYjg0Yjc5NGJmNzc4Li4x
ZjZiMjFjYjA2MmUwMDljNmY0NmEyZDUyODMyMjVkNmY0NGVhYjE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvSW5saW5lSXRlcmF0b3IuaApAQCAtMjY4LDcgKzI2OCw3IEBAIGlubGluZSB2
b2lkIElubGluZUJpZGlSZXNvbHZlcjo6YXBwZW5kUnVuKCkKICAgICAgICAgaW50IHN0YXJ0ID0g
bV9zb3IubV9wb3M7CiAgICAgICAgIFJlbmRlck9iamVjdCogb2JqID0gbV9zb3IubV9vYmo7CiAg
ICAgICAgIHdoaWxlIChvYmogJiYgb2JqICE9IG1fZW9yLm1fb2JqICYmIG9iaiAhPSBlbmRPZkxp
bmUubV9vYmopIHsKLSAgICAgICAgICAgIFJlbmRlckJsb2NrOjphcHBlbmRSdW5zRm9yT2JqZWN0
KHN0YXJ0LCBvYmotPmxlbmd0aCgpLCBvYmosICp0aGlzKTsgICAgICAgIAorICAgICAgICAgICAg
UmVuZGVyQmxvY2s6OmFwcGVuZFJ1bnNGb3JPYmplY3QobV9ydW5zLCBzdGFydCwgb2JqLT5sZW5n
dGgoKSwgb2JqLCAqdGhpcyk7CiAgICAgICAgICAgICBzdGFydCA9IDA7CiAgICAgICAgICAgICBv
YmogPSBiaWRpTmV4dChtX3Nvci5yb290KCksIG9iaik7CiAgICAgICAgIH0KQEAgLTI4MCw5ICsy
ODAsOSBAQCBpbmxpbmUgdm9pZCBJbmxpbmVCaWRpUmVzb2x2ZXI6OmFwcGVuZFJ1bigpCiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAvLyBJdCdzIE9LIHRvIGFkZCBydW5zIGZvciB6ZXJvLWxl
bmd0aCBSZW5kZXJPYmplY3RzLCBqdXN0IGRvbid0IG1ha2UgdGhlIHJ1biBsYXJnZXIgdGhhbiBp
dCBzaG91bGQgYmUKICAgICAgICAgICAgIGludCBlbmQgPSBvYmotPmxlbmd0aCgpID8gcG9zICsg
MSA6IDA7Ci0gICAgICAgICAgICBSZW5kZXJCbG9jazo6YXBwZW5kUnVuc0Zvck9iamVjdChzdGFy
dCwgZW5kLCBvYmosICp0aGlzKTsKKyAgICAgICAgICAgIFJlbmRlckJsb2NrOjphcHBlbmRSdW5z
Rm9yT2JqZWN0KG1fcnVucywgc3RhcnQsIGVuZCwgb2JqLCAqdGhpcyk7CiAgICAgICAgIH0KLSAg
ICAgICAgCisKICAgICAgICAgbV9lb3IuaW5jcmVtZW50KCk7CiAgICAgICAgIG1fc29yID0gbV9l
b3I7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAppbmRleCBiNmVm
ODAxYmVkZDExNGJhMWUwMmM5MDFmZTk4ZjRjMjY3OWI1YTg4Li44MDYxMDcwMDM2YjczOTYyYjY0
M2MxMTUzOTM0YjQ3ZGUxYWQxMWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxv
Y2suaApAQCAtMzIsNiArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEJp
ZGlDb250ZXh0OwogY2xhc3MgQ29sdW1uSW5mbzsKIGNsYXNzIElubGluZUl0ZXJhdG9yOwogY2xh
c3MgTGF5b3V0U3RhdGVNYWludGFpbmVyOwpAQCAtNDMsNiArNDQsNyBAQCBzdHJ1Y3QgQmlkaVJ1
bjsKIHN0cnVjdCBQYWludEluZm87CiAKIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvciwgY2xhc3Mg
UnVuPiBjbGFzcyBCaWRpUmVzb2x2ZXI7Cit0ZW1wbGF0ZSA8Y2xhc3MgUnVuPiBjbGFzcyBCaWRp
UnVuTGlzdDsKIHRlbXBsYXRlIDxjbGFzcyBJdGVyYXRvcj4gc3RydWN0IE1pZHBvaW50U3RhdGU7
CiB0eXBlZGVmIEJpZGlSZXNvbHZlcjxJbmxpbmVJdGVyYXRvciwgQmlkaVJ1bj4gSW5saW5lQmlk
aVJlc29sdmVyOwogdHlwZWRlZiBNaWRwb2ludFN0YXRlPElubGluZUl0ZXJhdG9yPiBMaW5lTWlk
cG9pbnRTdGF0ZTsKQEAgLTE1Miw3ICsxNTQsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyQmxvY2sq
IGNyZWF0ZUFub255bW91c0NvbHVtblNwYW5CbG9jaygpIGNvbnN0OwogICAgIFJlbmRlckJsb2Nr
KiBjcmVhdGVBbm9ueW1vdXNCbG9ja1dpdGhTYW1lVHlwZUFzKFJlbmRlckJsb2NrKiBvdGhlckFu
b255bW91c0Jsb2NrKSBjb25zdDsKICAgICAKLSAgICBzdGF0aWMgdm9pZCBhcHBlbmRSdW5zRm9y
T2JqZWN0KGludCBzdGFydCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0KiwgSW5saW5lQmlkaVJlc29s
dmVyJik7ICAgIAorICAgIHN0YXRpYyB2b2lkIGFwcGVuZFJ1bnNGb3JPYmplY3QoQmlkaVJ1bkxp
c3Q8QmlkaVJ1bj4mLCBpbnQgc3RhcnQsIGludCBlbmQsIFJlbmRlck9iamVjdCosIElubGluZUJp
ZGlSZXNvbHZlciYpOwogICAgIHN0YXRpYyBib29sIHJlcXVpcmVzTGluZUJveChjb25zdCBJbmxp
bmVJdGVyYXRvciYsIGJvb2wgaXNMaW5lRW1wdHkgPSB0cnVlLCBib29sIHByZXZpb3VzTGluZUJy
b2tlQ2xlYW5seSA9IHRydWUpOwogCiAgICAgQ29sdW1uSW5mbyogY29sdW1uSW5mbygpIGNvbnN0
OwpAQCAtMzUwLDcgKzM1Miw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGxheW91dEJsb2NrQ2hp
bGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBpbnQmIG1heEZsb2F0TG9naWNhbEJvdHRvbSk7
CiAgICAgdm9pZCBsYXlvdXRJbmxpbmVDaGlsZHJlbihib29sIHJlbGF5b3V0Q2hpbGRyZW4sIGlu
dCYgcmVwYWludExvZ2ljYWxUb3AsIGludCYgcmVwYWludExvZ2ljYWxCb3R0b20pOwotICAgIEJp
ZGlSdW4qIGhhbmRsZVRyYWlsaW5nU3BhY2VzKElubGluZUJpZGlSZXNvbHZlciYpOworICAgIEJp
ZGlSdW4qIGhhbmRsZVRyYWlsaW5nU3BhY2VzKEJpZGlSdW5MaXN0PEJpZGlSdW4+JiwgQmlkaUNv
bnRleHQqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBib3JkZXJGaXRBZGp1c3QoaW50JiB4LCBpbnQm
IHcpIGNvbnN0OyAvLyBTaHJpbmsgdGhlIGJveCBpbiB3aGljaCB0aGUgYm9yZGVyIHBhaW50cyBp
ZiBib3JkZXItZml0IGlzIHNldC4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQmxvY2tMaW5lTGF5b3V0LmNwcAppbmRleCBjMDk1ZmQxNTI1NDI4YmQ3OGI3MjUyNzk2
OTg1OTRmNTc3MjY3YjMwLi4yNDlhMmUyN2I0ZWNmZTg4MjA2NDQ2MjkzNTdkOTM4ZTUxMWYxMDg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tMaW5lTGF5
b3V0LmNwcApAQCAtMTE3LDcgKzExNywxMiBAQCBzdGF0aWMgdm9pZCBhZGRNaWRwb2ludChMaW5l
TWlkcG9pbnRTdGF0ZSYgbGluZU1pZHBvaW50U3RhdGUsIGNvbnN0IElubGluZUl0ZXJhdAogICAg
IG1pZHBvaW50c1tsaW5lTWlkcG9pbnRTdGF0ZS5udW1NaWRwb2ludHMrK10gPSBtaWRwb2ludDsK
IH0KIAotdm9pZCBSZW5kZXJCbG9jazo6YXBwZW5kUnVuc0Zvck9iamVjdChpbnQgc3RhcnQsIGlu
dCBlbmQsIFJlbmRlck9iamVjdCogb2JqLCBJbmxpbmVCaWRpUmVzb2x2ZXImIHJlc29sdmVyKQor
c3RhdGljIGlubGluZSBCaWRpUnVuKiBjcmVhdGVSdW4oaW50IHN0YXJ0LCBpbnQgZW5kLCBSZW5k
ZXJPYmplY3QqIG9iaiwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikKK3sKKyAgICByZXR1
cm4gbmV3IChvYmotPnJlbmRlckFyZW5hKCkpIEJpZGlSdW4oc3RhcnQsIGVuZCwgb2JqLCByZXNv
bHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKTsKK30KKwordm9pZCBSZW5kZXJCbG9jazo6
YXBwZW5kUnVuc0Zvck9iamVjdChCaWRpUnVuTGlzdDxCaWRpUnVuPiYgcnVucywgaW50IHN0YXJ0
LCBpbnQgZW5kLCBSZW5kZXJPYmplY3QqIG9iaiwgSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZl
cikKIHsKICAgICBpZiAoc3RhcnQgPiBlbmQgfHwgb2JqLT5pc0Zsb2F0aW5nKCkgfHwKICAgICAg
ICAgKG9iai0+aXNQb3NpdGlvbmVkKCkgJiYgIW9iai0+c3R5bGUoKS0+aGFzQXV0b0xlZnRBbmRS
aWdodCgpICYmICFvYmotPnN0eWxlKCktPmhhc0F1dG9Ub3BBbmRCb3R0b20oKSAmJiAhb2JqLT5j
b250YWluZXIoKS0+aXNSZW5kZXJJbmxpbmUoKSkpCkBAIC0xMzcsMTAgKzE0MiwxMCBAQCB2b2lk
IFJlbmRlckJsb2NrOjphcHBlbmRSdW5zRm9yT2JqZWN0KGludCBzdGFydCwgaW50IGVuZCwgUmVu
ZGVyT2JqZWN0KiBvYmosIElubAogICAgICAgICBzdGFydCA9IG5leHRNaWRwb2ludC5tX3BvczsK
ICAgICAgICAgbGluZU1pZHBvaW50U3RhdGUuY3VycmVudE1pZHBvaW50Kys7CiAgICAgICAgIGlm
IChzdGFydCA8IGVuZCkKLSAgICAgICAgICAgIHJldHVybiBhcHBlbmRSdW5zRm9yT2JqZWN0KHN0
YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIpOworICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFJ1bnNG
b3JPYmplY3QocnVucywgc3RhcnQsIGVuZCwgb2JqLCByZXNvbHZlcik7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaWYgKCFoYXZlTmV4dE1pZHBvaW50IHx8IChvYmogIT0gbmV4dE1pZHBvaW50Lm1f
b2JqKSkgewotICAgICAgICAgICAgcmVzb2x2ZXIuYWRkUnVuKG5ldyAob2JqLT5yZW5kZXJBcmVu
YSgpKSBCaWRpUnVuKHN0YXJ0LCBlbmQsIG9iaiwgcmVzb2x2ZXIuY29udGV4dCgpLCByZXNvbHZl
ci5kaXIoKSkpOworICAgICAgICAgICAgcnVucy5hZGRSdW4oY3JlYXRlUnVuKHN0YXJ0LCBlbmQs
IG9iaiwgcmVzb2x2ZXIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0x
NTEsMTIgKzE1NiwxMSBAQCB2b2lkIFJlbmRlckJsb2NrOjphcHBlbmRSdW5zRm9yT2JqZWN0KGlu
dCBzdGFydCwgaW50IGVuZCwgUmVuZGVyT2JqZWN0KiBvYmosIElubAogICAgICAgICAgICAgbGlu
ZU1pZHBvaW50U3RhdGUuY3VycmVudE1pZHBvaW50Kys7CiAgICAgICAgICAgICBpZiAobmV4dE1p
ZHBvaW50Lm1fcG9zICE9IFVJTlRfTUFYKSB7IC8vIFVJTlRfTUFYIG1lYW5zIHN0b3AgYXQgdGhl
IG9iamVjdCBhbmQgZG9uJ3QgaW5jbHVkZSBhbnkgb2YgaXQuCiAgICAgICAgICAgICAgICAgaWYg
KHN0YXRpY19jYXN0PGludD4obmV4dE1pZHBvaW50Lm1fcG9zICsgMSkgPiBzdGFydCkKLSAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZXIuYWRkUnVuKG5ldyAob2JqLT5yZW5kZXJBcmVuYSgpKQot
ICAgICAgICAgICAgICAgICAgICAgICAgQmlkaVJ1bihzdGFydCwgbmV4dE1pZHBvaW50Lm1fcG9z
ICsgMSwgb2JqLCByZXNvbHZlci5jb250ZXh0KCksIHJlc29sdmVyLmRpcigpKSk7Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGFwcGVuZFJ1bnNGb3JPYmplY3QobmV4dE1pZHBvaW50Lm1fcG9zICsg
MSwgZW5kLCBvYmosIHJlc29sdmVyKTsKKyAgICAgICAgICAgICAgICAgICAgcnVucy5hZGRSdW4o
Y3JlYXRlUnVuKHN0YXJ0LCBuZXh0TWlkcG9pbnQubV9wb3MgKyAxLCBvYmosIHJlc29sdmVyKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGFwcGVuZFJ1bnNGb3JPYmplY3QocnVucywgbmV4dE1p
ZHBvaW50Lm1fcG9zICsgMSwgZW5kLCBvYmosIHJlc29sdmVyKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgIHJlc29sdmVyLmFkZFJ1bihuZXcgKG9iai0+cmVuZGVy
QXJlbmEoKSkgQmlkaVJ1bihzdGFydCwgZW5kLCBvYmosIHJlc29sdmVyLmNvbnRleHQoKSwgcmVz
b2x2ZXIuZGlyKCkpKTsKKyAgICAgICAgICAgcnVucy5hZGRSdW4oY3JlYXRlUnVuKHN0YXJ0LCBl
bmQsIG9iaiwgcmVzb2x2ZXIpKTsKICAgICB9CiB9CiAKQEAgLTYzNSw5ICs2MzksOSBAQCBzdGF0
aWMgdm9pZCBzZXRTdGF0aWNQb3NpdGlvbnMoUmVuZGVyQmxvY2sqIGJsb2NrLCBSZW5kZXJCb3gq
IGNoaWxkKQogICAgIGNoaWxkLT5sYXllcigpLT5zZXRTdGF0aWNCbG9ja1Bvc2l0aW9uKGJsb2Nr
SGVpZ2h0KTsKIH0KIAotc3RhdGljIGJvb2wgcmVhY2hlZEVuZE9mVGV4dFJlbmRlcmVyKElubGlu
ZUJpZGlSZXNvbHZlciYgcmVzb2x2ZXIpCitzdGF0aWMgYm9vbCByZWFjaGVkRW5kT2ZUZXh0UmVu
ZGVyZXIoY29uc3QgQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zKQogewotICAgIEJpZGlS
dW4qIHJ1biA9IHJlc29sdmVyLmxvZ2ljYWxseUxhc3RSdW4oKTsKKyAgICBCaWRpUnVuKiBydW4g
PSBiaWRpUnVucy5sb2dpY2FsbHlMYXN0UnVuKCk7CiAgICAgaWYgKCFydW4pCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIHVuc2lnbmVkIGludCBwb3MgPSBydW4tPnN0b3AoKTsKQEAgLTY1Niwx
NCArNjYwLDE0IEBAIHN0YXRpYyBib29sIHJlYWNoZWRFbmRPZlRleHRSZW5kZXJlcihJbmxpbmVC
aWRpUmVzb2x2ZXImIHJlc29sdmVyKQogICAgIHJldHVybiBmYWxzZTsKIH0KICAgICAKLWlubGlu
ZSBCaWRpUnVuKiBSZW5kZXJCbG9jazo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoSW5saW5lQmlkaVJl
c29sdmVyJiByZXNvbHZlcikKK2lubGluZSBCaWRpUnVuKiBSZW5kZXJCbG9jazo6aGFuZGxlVHJh
aWxpbmdTcGFjZXMoQmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zLCBCaWRpQ29udGV4dCog
Y3VycmVudENvbnRleHQpCiB7Ci0gICAgaWYgKCFyZXNvbHZlci5ydW5Db3VudCgpCi0gICAgICAg
IHx8ICFyZXNvbHZlci5sb2dpY2FsbHlMYXN0UnVuKCktPm1fb2JqZWN0LT5zdHlsZSgpLT5icmVh
a09ubHlBZnRlcldoaXRlU3BhY2UoKQotICAgICAgICB8fCAhcmVzb2x2ZXIubG9naWNhbGx5TGFz
dFJ1bigpLT5tX29iamVjdC0+c3R5bGUoKS0+YXV0b1dyYXAoKSkKKyAgICBpZiAoIWJpZGlSdW5z
LnJ1bkNvdW50KCkKKyAgICAgICAgfHwgIWJpZGlSdW5zLmxvZ2ljYWxseUxhc3RSdW4oKS0+bV9v
YmplY3QtPnN0eWxlKCktPmJyZWFrT25seUFmdGVyV2hpdGVTcGFjZSgpCisgICAgICAgIHx8ICFi
aWRpUnVucy5sb2dpY2FsbHlMYXN0UnVuKCktPm1fb2JqZWN0LT5zdHlsZSgpLT5hdXRvV3JhcCgp
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEJpZGlSdW4qIHRyYWlsaW5nU3BhY2VSdW4gPSBy
ZXNvbHZlci5sb2dpY2FsbHlMYXN0UnVuKCk7CisgICAgQmlkaVJ1biogdHJhaWxpbmdTcGFjZVJ1
biA9IGJpZGlSdW5zLmxvZ2ljYWxseUxhc3RSdW4oKTsKICAgICBSZW5kZXJPYmplY3QqIGxhc3RP
YmplY3QgPSB0cmFpbGluZ1NwYWNlUnVuLT5tX29iamVjdDsKICAgICBpZiAoIWxhc3RPYmplY3Qt
PmlzVGV4dCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTY4MSwxOCArNjg1LDE4IEBAIGlubGlu
ZSBCaWRpUnVuKiBSZW5kZXJCbG9jazo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoSW5saW5lQmlkaVJl
c29sdmVyJiByZXNvbHZlcikKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBUZXh0RGlyZWN0aW9u
IGRpcmVjdGlvbiA9IHN0eWxlKCktPmRpcmVjdGlvbigpOwotICAgIGJvb2wgc2hvdWxkUmVvcmRl
ciA9IHRyYWlsaW5nU3BhY2VSdW4gIT0gKGRpcmVjdGlvbiA9PSBMVFIgPyByZXNvbHZlci5sYXN0
UnVuKCkgOiByZXNvbHZlci5maXJzdFJ1bigpKTsKKyAgICBib29sIHNob3VsZFJlb3JkZXIgPSB0
cmFpbGluZ1NwYWNlUnVuICE9IChkaXJlY3Rpb24gPT0gTFRSID8gYmlkaVJ1bnMubGFzdFJ1bigp
IDogYmlkaVJ1bnMuZmlyc3RSdW4oKSk7CiAgICAgaWYgKGZpcnN0U3BhY2UgIT0gdHJhaWxpbmdT
cGFjZVJ1bi0+c3RhcnQoKSkgewotICAgICAgICBCaWRpQ29udGV4dCogYmFzZUNvbnRleHQgPSBy
ZXNvbHZlci5jb250ZXh0KCk7CisgICAgICAgIEJpZGlDb250ZXh0KiBiYXNlQ29udGV4dCA9IGN1
cnJlbnRDb250ZXh0OwogICAgICAgICB3aGlsZSAoQmlkaUNvbnRleHQqIHBhcmVudCA9IGJhc2VD
b250ZXh0LT5wYXJlbnQoKSkKICAgICAgICAgICAgIGJhc2VDb250ZXh0ID0gcGFyZW50OwogCiAg
ICAgICAgIEJpZGlSdW4qIG5ld1RyYWlsaW5nUnVuID0gbmV3IChyZW5kZXJBcmVuYSgpKSBCaWRp
UnVuKGZpcnN0U3BhY2UsIHRyYWlsaW5nU3BhY2VSdW4tPm1fc3RvcCwgdHJhaWxpbmdTcGFjZVJ1
bi0+bV9vYmplY3QsIGJhc2VDb250ZXh0LCBPdGhlck5ldXRyYWwpOwogICAgICAgICB0cmFpbGlu
Z1NwYWNlUnVuLT5tX3N0b3AgPSBmaXJzdFNwYWNlOwogICAgICAgICBpZiAoZGlyZWN0aW9uID09
IExUUikKLSAgICAgICAgICAgIHJlc29sdmVyLmFkZFJ1bihuZXdUcmFpbGluZ1J1bik7CisgICAg
ICAgICAgICBiaWRpUnVucy5hZGRSdW4obmV3VHJhaWxpbmdSdW4pOwogICAgICAgICBlbHNlCi0g
ICAgICAgICAgICByZXNvbHZlci5wcmVwZW5kUnVuKG5ld1RyYWlsaW5nUnVuKTsKKyAgICAgICAg
ICAgIGJpZGlSdW5zLnByZXBlbmRSdW4obmV3VHJhaWxpbmdSdW4pOwogICAgICAgICB0cmFpbGlu
Z1NwYWNlUnVuID0gbmV3VHJhaWxpbmdSdW47CiAgICAgICAgIHJldHVybiB0cmFpbGluZ1NwYWNl
UnVuOwogICAgIH0KQEAgLTcwMCwxMCArNzA0LDEwIEBAIGlubGluZSBCaWRpUnVuKiBSZW5kZXJC
bG9jazo6aGFuZGxlVHJhaWxpbmdTcGFjZXMoSW5saW5lQmlkaVJlc29sdmVyJiByZXNvbHZlcikK
ICAgICAgICAgcmV0dXJuIHRyYWlsaW5nU3BhY2VSdW47CiAKICAgICBpZiAoZGlyZWN0aW9uID09
IExUUikgewotICAgICAgICByZXNvbHZlci5tb3ZlUnVuVG9FbmQodHJhaWxpbmdTcGFjZVJ1bik7
CisgICAgICAgIGJpZGlSdW5zLm1vdmVSdW5Ub0VuZCh0cmFpbGluZ1NwYWNlUnVuKTsKICAgICAg
ICAgdHJhaWxpbmdTcGFjZVJ1bi0+bV9sZXZlbCA9IDA7CiAgICAgfSBlbHNlIHsKLSAgICAgICAg
cmVzb2x2ZXIubW92ZVJ1blRvQmVnaW5uaW5nKHRyYWlsaW5nU3BhY2VSdW4pOworICAgICAgICBi
aWRpUnVucy5tb3ZlUnVuVG9CZWdpbm5pbmcodHJhaWxpbmdTcGFjZVJ1bik7CiAgICAgICAgIHRy
YWlsaW5nU3BhY2VSdW4tPm1fbGV2ZWwgPSAxOwogICAgIH0KICAgICByZXR1cm4gdHJhaWxpbmdT
cGFjZVJ1bjsKQEAgLTg2OCw3ICs4NzIsMTAgQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0SW5s
aW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBpbnQmIHJlcGFpbnRMb2dpY2EKICAg
ICAgICAgICAgIEZsb2F0aW5nT2JqZWN0KiBsYXN0RmxvYXRGcm9tUHJldmlvdXNMaW5lID0gKG1f
ZmxvYXRpbmdPYmplY3RzICYmICFtX2Zsb2F0aW5nT2JqZWN0cy0+c2V0KCkuaXNFbXB0eSgpKSA/
IG1fZmxvYXRpbmdPYmplY3RzLT5zZXQoKS5sYXN0KCkgOiAwOwogICAgICAgICAgICAgZW5kID0g
ZmluZE5leHRMaW5lQnJlYWsocmVzb2x2ZXIsIGZpcnN0TGluZSwgaXNMaW5lRW1wdHksIGxpbmVC
cmVha0l0ZXJhdG9ySW5mbywgcHJldmlvdXNMaW5lQnJva2VDbGVhbmx5LCBoeXBoZW5hdGVkLCAm
Y2xlYXIsIGxhc3RGbG9hdEZyb21QcmV2aW91c0xpbmUsIHBvc2l0aW9uZWRPYmplY3RzKTsKICAg
ICAgICAgICAgIGlmIChyZXNvbHZlci5wb3NpdGlvbigpLmF0RW5kKCkpIHsKLSAgICAgICAgICAg
ICAgICByZXNvbHZlci5kZWxldGVSdW5zKCk7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdl
IHNob3VsZG4ndCBiZSBjcmVhdGluZyBhbnkgcnVucyBpbiBmaW5kTmV4dExpbmVCcmVhayB0byBi
ZWdpbiB3aXRoIQorICAgICAgICAgICAgICAgIC8vIE9uY2UgQmlkaVJ1bkxpc3QgaXMgc2VwYXJh
dGVkIGZyb20gQmlkaVJlc29sdmVyIHRoaXMgd2lsbCBub3QgYmUgbmVlZGVkLgorICAgICAgICAg
ICAgICAgIHJlc29sdmVyLnJ1bnMoKS5kZWxldGVSdW5zKCk7CisgICAgICAgICAgICAgICAgcmVz
b2x2ZXIubWFya0N1cnJlbnRSdW5FbXB0eSgpOyAvLyBGSVhNRTogVGhpcyBjYW4gcHJvYmFibHkg
YmUgcmVwbGFjZWQgYnkgYW4gQVNTRVJUIChvciBqdXN0IHJlbW92ZWQpLgogICAgICAgICAgICAg
ICAgIGNoZWNrRm9yRmxvYXRzRnJvbUxhc3RMaW5lID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgIH0KQEAgLTg3OSwxMCArODg2LDEyIEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmxheW91dElubGluZUNoaWxkcmVuKGJvb2wgcmVsYXlvdXRDaGlsZHJlbiwgaW50JiByZXBh
aW50TG9naWNhCiAgICAgICAgICAgICAgICAgICAgIGxhc3RSb290Qm94KCktPnNldExpbmVCcmVh
a0luZm8oZW5kLm1fb2JqLCBlbmQubV9wb3MsIHJlc29sdmVyLnN0YXR1cygpKTsKICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgVmlzdWFsRGlyZWN0aW9uT3ZlcnJpZGUgb3Zl
cnJpZGUgPSAoc3R5bGUoKS0+dmlzdWFsbHlPcmRlcmVkKCkgPyAoc3R5bGUoKS0+ZGlyZWN0aW9u
KCkgPT0gTFRSID8gVmlzdWFsTGVmdFRvUmlnaHRPdmVycmlkZSA6IFZpc3VhbFJpZ2h0VG9MZWZ0
T3ZlcnJpZGUpIDogTm9WaXN1YWxPdmVycmlkZSk7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFRoaXMgb3duZXJzaGlwIGlzIHJldmVyc2VkLiBXZSBzaG91bGQgb3duIHRoZSBCaWRpUnVuTGlz
dCBhbmQgcGFzcyBpdCB0byBjcmVhdGVCaWRpUnVuc0ZvckxpbmUuCisgICAgICAgICAgICAgICAg
QmlkaVJ1bkxpc3Q8QmlkaVJ1bj4mIGJpZGlSdW5zID0gcmVzb2x2ZXIucnVucygpOwogICAgICAg
ICAgICAgICAgIHJlc29sdmVyLmNyZWF0ZUJpZGlSdW5zRm9yTGluZShlbmQsIG92ZXJyaWRlLCBw
cmV2aW91c0xpbmVCcm9rZUNsZWFubHkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXNvbHZl
ci5wb3NpdGlvbigpID09IGVuZCk7CiAKLSAgICAgICAgICAgICAgICBCaWRpUnVuKiB0cmFpbGlu
Z1NwYWNlUnVuID0gIXByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSA/IGhhbmRsZVRyYWlsaW5nU3Bh
Y2VzKHJlc29sdmVyKSA6IDA7CisgICAgICAgICAgICAgICAgQmlkaVJ1biogdHJhaWxpbmdTcGFj
ZVJ1biA9ICFwcmV2aW91c0xpbmVCcm9rZUNsZWFubHkgPyBoYW5kbGVUcmFpbGluZ1NwYWNlcyhi
aWRpUnVucywgcmVzb2x2ZXIuY29udGV4dCgpKSA6IDA7CiAKICAgICAgICAgICAgICAgICAvLyBO
b3cgdGhhdCB0aGUgcnVucyBoYXZlIGJlZW4gb3JkZXJlZCwgd2UgY3JlYXRlIHRoZSBsaW5lIGJv
eGVzLgogICAgICAgICAgICAgICAgIC8vIEF0IHRoZSBzYW1lIHRpbWUgd2UgZmlndXJlIG91dCB3
aGVyZSBib3JkZXIvcGFkZGluZy9tYXJnaW4gc2hvdWxkIGJlIGFwcGxpZWQgZm9yCkBAIC04OTAs
MTEgKzg5OSwxMiBAQCB2b2lkIFJlbmRlckJsb2NrOjpsYXlvdXRJbmxpbmVDaGlsZHJlbihib29s
IHJlbGF5b3V0Q2hpbGRyZW4sIGludCYgcmVwYWludExvZ2ljYQogCiAgICAgICAgICAgICAgICAg
Um9vdElubGluZUJveCogbGluZUJveCA9IDA7CiAgICAgICAgICAgICAgICAgaW50IG9sZExvZ2lj
YWxIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc29sdmVy
LnJ1bkNvdW50KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYmlkaVJ1bnMucnVuQ291bnQoKSkg
ewogICAgICAgICAgICAgICAgICAgICBpZiAoaHlwaGVuYXRlZCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJlc29sdmVyLmxvZ2ljYWxseUxhc3RSdW4oKS0+bV9oYXNIeXBoZW4gPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICBib29sIGxhc3RMaW5lID0gZW5kLm1fb2JqICYmIGVuZC5tX29i
ai0+aXNUZXh0KCkgPyByZWFjaGVkRW5kT2ZUZXh0UmVuZGVyZXIocmVzb2x2ZXIpIDogIWVuZC5t
X29iajsKLSAgICAgICAgICAgICAgICAgICAgbGluZUJveCA9IGNvbnN0cnVjdExpbmUocmVzb2x2
ZXIucnVuQ291bnQoKSwgcmVzb2x2ZXIuZmlyc3RSdW4oKSwgcmVzb2x2ZXIubGFzdFJ1bigpLCBm
aXJzdExpbmUsIGxhc3RMaW5lLCBlbmQubV9vYmogJiYgIWVuZC5tX3BvcyA/IGVuZC5tX29iaiA6
IDAsIHJlc29sdmVyLmxvZ2ljYWxseUxhc3RSdW4oKS0+bV9vYmplY3QpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYmlkaVJ1bnMubG9naWNhbGx5TGFzdFJ1bigpLT5tX2hhc0h5cGhlbiA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgIGJvb2wgbGFzdExpbmUgPSBlbmQubV9vYmogJiYgZW5k
Lm1fb2JqLT5pc1RleHQoKSA/IHJlYWNoZWRFbmRPZlRleHRSZW5kZXJlcihiaWRpUnVucykgOiAh
ZW5kLm1fb2JqOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogQ2xlYXJseSBjb25zdHJ1
Y3RMaW5lIHNob3VsZCBqdXN0IHRha2UgYSBiaWRpUnVucyBvYmplY3QuCisgICAgICAgICAgICAg
ICAgICAgIGxpbmVCb3ggPSBjb25zdHJ1Y3RMaW5lKGJpZGlSdW5zLnJ1bkNvdW50KCksIGJpZGlS
dW5zLmZpcnN0UnVuKCksIGJpZGlSdW5zLmxhc3RSdW4oKSwgZmlyc3RMaW5lLCBsYXN0TGluZSwg
ZW5kLm1fb2JqICYmICFlbmQubV9wb3MgPyBlbmQubV9vYmogOiAwLCBiaWRpUnVucy5sb2dpY2Fs
bHlMYXN0UnVuKCktPm1fb2JqZWN0KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGxpbmVCb3gp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVCb3gtPnNldEVuZHNXaXRoQnJlYWsocHJl
dmlvdXNMaW5lQnJva2VDbGVhbmx5KTsKIApAQCAtOTA4LDEwICs5MTgsMTAgQEAgdm9pZCBSZW5k
ZXJCbG9jazo6bGF5b3V0SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBpbnQm
IHJlcGFpbnRMb2dpY2EKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAvLyBOb3cgd2UgcG9zaXRpb24gYWxsIG9mIG91ciB0ZXh0IHJ1bnMgaG9yaXpvbnRhbGx5
LgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpc1NWR1Jvb3RJbmxpbmVCb3gpCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZUlubGluZURpcmVjdGlvblBvc2l0aW9uc0Zv
ckxpbmUobGluZUJveCwgZmlyc3RMaW5lLCByZXNvbHZlci5maXJzdFJ1bigpLCB0cmFpbGluZ1Nw
YWNlUnVuLCBlbmQuYXRFbmQoKSwgdGV4dEJveERhdGFNYXAsIHZlcnRpY2FsUG9zaXRpb25DYWNo
ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZUlubGluZURpcmVjdGlvblBv
c2l0aW9uc0ZvckxpbmUobGluZUJveCwgZmlyc3RMaW5lLCBiaWRpUnVucy5maXJzdFJ1bigpLCB0
cmFpbGluZ1NwYWNlUnVuLCBlbmQuYXRFbmQoKSwgdGV4dEJveERhdGFNYXAsIHZlcnRpY2FsUG9z
aXRpb25DYWNoZSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdyBwb3NpdGlvbiBv
dXIgdGV4dCBydW5zIHZlcnRpY2FsbHkuCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRl
QmxvY2tEaXJlY3Rpb25Qb3NpdGlvbnNGb3JMaW5lKGxpbmVCb3gsIHJlc29sdmVyLmZpcnN0UnVu
KCksIHRleHRCb3hEYXRhTWFwLCB2ZXJ0aWNhbFBvc2l0aW9uQ2FjaGUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgY29tcHV0ZUJsb2NrRGlyZWN0aW9uUG9zaXRpb25zRm9yTGluZShsaW5lQm94
LCBiaWRpUnVucy5maXJzdFJ1bigpLCB0ZXh0Qm94RGF0YU1hcCwgdmVydGljYWxQb3NpdGlvbkNh
Y2hlKTsKIAogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTVkcg
dGV4dCBsYXlvdXQgY29kZSBjb21wdXRlcyB2ZXJ0aWNhbCAmIGhvcml6b250YWwgcG9zaXRpb25z
IG9uIGl0cyBvd24uCkBAIC05MzYsNyArOTQ2LDggQEAgdm9pZCBSZW5kZXJCbG9jazo6bGF5b3V0
SW5saW5lQ2hpbGRyZW4oYm9vbCByZWxheW91dENoaWxkcmVuLCBpbnQmIHJlcGFpbnRMb2dpY2EK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ICAgIHJlc29sdmVyLmRlbGV0ZVJ1bnMoKTsKKyAgICAgICAgICAgICAgICBiaWRpUnVucy5kZWxl
dGVSdW5zKCk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZXIubWFya0N1cnJlbnRSdW5FbXB0eSgp
OyAvLyBGSVhNRTogVGhpcyBjYW4gcHJvYmFibHkgYmUgcmVwbGFjZWQgYnkgYW4gQVNTRVJUIChv
ciBqdXN0IHJlbW92ZWQpLgogCiAgICAgICAgICAgICAgICAgaWYgKGxpbmVCb3gpIHsKICAgICAg
ICAgICAgICAgICAgICAgbGluZUJveC0+c2V0TGluZUJyZWFrSW5mbyhlbmQubV9vYmosIGVuZC5t
X3BvcywgcmVzb2x2ZXIuc3RhdHVzKCkpOwo=
</data>
<flag name="commit-queue"
          id="81208"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>