<?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>92270</bug_id>
          
          <creation_ts>2012-07-25 11:04:52 -0700</creation_ts>
          <short_desc>REGRESSION(r123628): Broke Chrome compile on Mac Debug (Requested by kbr_google on #webkit).</short_desc>
          <delta_ts>2012-07-25 11:06:51 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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>91417</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>enne</cc>
    
    <cc>kbr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>678246</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-25 11:04:52 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/123628 broke the build:
Broke Chrome compile on Mac Debug (Requested by kbr_google on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678248</commentid>
    <comment_count>1</comment_count>
      <attachid>154395</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-25 11:05:33 -0700</bug_when>
    <thetext>Created attachment 154395
ROLLOUT of r123628

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678251</commentid>
    <comment_count>2</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-07-25 11:06:51 -0700</bug_when>
    <thetext>This build failure was patched up. Closing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154395</attachid>
            <date>2012-07-25 11:05:33 -0700</date>
            <delta_ts>2012-07-25 11:06:34 -0700</delta_ts>
            <desc>ROLLOUT of r123628</desc>
            <filename>bug-92270-20120725181106.patch</filename>
            <type>text/plain</type>
            <size>108228</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDc2OGVkMDgyNWQwNGVh
ZWZhZjJmNGZlYTU2NThhNDQyMWQ1ZWFiNC4uMDlhNzYzOTVlZTQ1YmFlM2FmNWI1YzIyYTlhNWNi
Y2FlM2I3ODY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA3LTI1ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTIzNjI4LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMjM2MjgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkyMjcwCisKKyAgICAgICAgQnJva2UgQ2hyb21lIGNvbXBpbGUgb24gTWFjIERl
YnVnIChSZXF1ZXN0ZWQgYnkga2JyX2dvb2dsZSBvbgorICAgICAgICAjd2Via2l0KS4KKworICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSZW5kZXJQ
YXNzUXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3Vy
ZmFjZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1
bTo6ZHJhd2FibGVDb250ZW50UmVjdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDRGFtYWdl
VHJhY2tlcjo6ZXh0ZW5kRGFtYWdlRm9yTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5
ZXJJbXBsOjpjcmVhdGVTaGFyZWRRdWFkU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXll
ckltcGw6OmdldERyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmg6CisgICAgICAgIChDQ0xheWVy
SW1wbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNv
cnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyU29ydGVyOjpMYXllclNoYXBlOjpM
YXllclNoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJTb3J0ZXI6OmNyZWF0ZUdyYXBo
Tm9kZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJU
cmVlSG9zdENvbW1vbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYWxjdWxhdGVWaXNpYmxlQ29u
dGVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRl
cm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNp
b25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjo6Om1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6b2NjbHVkZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Ojp1bm9jY2x1ZGVkQ29udGVudFJlY3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzVG9GaWxsU2NyZWVuKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpkcmF3YWJsZUNvbnRlbnRSZWN0KToKKwogMjAx
Mi0wNy0yNSAgS29ucmFkIFBpYXNjaWsgIDxrcGlhc2Npa0ByaW0uY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IEdlb2xvY2F0aW9uIG92ZXJyaWRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IGYxYjQzZmUyYjI3YjQzMDAyYWEwZmVmNDhhMzAyNDk3NjVlMjkyY2MuLmZkNmM5NmFm
YjhkMDQ4ZGYxMGE1ZDFhMDZjMzJlNDVhZDE1MjYzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTItMDctMjUgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJl
dmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIx
MjM2MjguCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEyMzYyOAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIyNzAKKwor
ICAgICAgICBCcm9rZSBDaHJvbWUgY29tcGlsZSBvbiBNYWMgRGVidWcgKFJlcXVlc3RlZCBieSBr
YnJfZ29vZ2xlIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgICogdGVzdHMvQ0NEYW1h
Z2VUcmFja2VyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6Y3JlYXRlVGVzdFRyZWVX
aXRoT25lU3VyZmFjZSk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Y3JlYXRlVGVzdFRyZWVXaXRo
VHdvU3VyZmFjZXMpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OlRFU1RfRik6CisgICAgICAgICog
dGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVl
SG9zdENvbW1vblRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxU
ZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAg
ICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdERldmljZVNjYWxlRmFjdG9yU2NhbGVzVmlld3Bv
cnRBbmRMYXllcnM6OmNvbW1pdENvbXBsZXRlT25DQ1RocmVhZCk6CisgICAgICAgICogdGVzdHMv
Q0NRdWFkQ3VsbGVyVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVt
VGVzdC5jcHA6CisKIDIwMTItMDctMjUgIEFkcmllbm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBbY2hyb21pdW1dIFVuaWZ5IGNvbXBvc2l0b3IgcXVhZFRyYW5zZm9ybS9k
cmF3VHJhbnNmb3JtL29yaWdpblRyYW5zZm9ybQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5jcHAKaW5kZXggOTZiNTBhNGY1YjdjZjM3MWUyNmUyYzZmZTY5NDIyNWQ0OTM3NjNkOS4u
ZTU2MzdhMGZjYTcwNWRiZDFkMWYwNzNhYWQ4MDNhMjZmNzZiZDE4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC02MzQsMTEgKzYzNCwxMCBAQCB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclBhc3NRdWFkKGNvbnN0IENDUmVuZGVyUGFzc0Ry
YXdRdWFkKiBxdWFkKQogICAgIGlmICghY29udGVudHNUZXh0dXJlIHx8ICFjb250ZW50c1RleHR1
cmUtPmlkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
IHJlbmRlck1hdHJpeCA9IHF1YWQtPnF1YWRUcmFuc2Zvcm0oKTsKLSAgICByZW5kZXJNYXRyaXgu
dHJhbnNsYXRlKDAuNSAqIHF1YWQtPnF1YWRSZWN0KCkud2lkdGgoKSArIHF1YWQtPnF1YWRSZWN0
KCkueCgpLCAwLjUgKiBxdWFkLT5xdWFkUmVjdCgpLmhlaWdodCgpICsgcXVhZC0+cXVhZFJlY3Qo
KS55KCkpOwotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGRldmljZU1hdHJpeCA9IHJlbmRl
ck1hdHJpeDsKLSAgICBkZXZpY2VNYXRyaXguc2NhbGVOb25Vbmlmb3JtKHF1YWQtPnF1YWRSZWN0
KCkud2lkdGgoKSwgcXVhZC0+cXVhZFJlY3QoKS5oZWlnaHQoKSk7Ci0gICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggY29udGVudHNEZXZpY2VUcmFuc2Zvcm0gPSBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCh3aW5kb3dNYXRyaXgoKSAqIHByb2plY3Rpb25NYXRyaXgoKSAqIGRldmljZU1hdHJpeCku
dG8yZFRyYW5zZm9ybSgpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlclRyYW5z
Zm9ybSA9IHF1YWQtPmRyYXdUcmFuc2Zvcm0oKTsKKyAgICAvLyBBcHBseSBhIHNjYWxpbmcgZmFj
dG9yIHRvIHNpemUgdGhlIHF1YWQgZnJvbSAxeDEgdG8gaXRzIGludGVuZGVkIHNpemUuCisgICAg
cmVuZGVyVHJhbnNmb3JtLnNjYWxlM2QocXVhZC0+cXVhZFJlY3QoKS53aWR0aCgpLCBxdWFkLT5x
dWFkUmVjdCgpLmhlaWdodCgpLCAxKTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250
ZW50c0RldmljZVRyYW5zZm9ybSA9IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KHdpbmRvd01hdHJp
eCgpICogcHJvamVjdGlvbk1hdHJpeCgpICogcmVuZGVyVHJhbnNmb3JtKS50bzJkVHJhbnNmb3Jt
KCk7CiAKICAgICAvLyBDYW4gb25seSBkcmF3IHN1cmZhY2UgaWYgZGV2aWNlIG1hdHJpeCBpcyBp
bnZlcnRpYmxlLgogICAgIGlmICghY29udGVudHNEZXZpY2VUcmFuc2Zvcm0uaXNJbnZlcnRpYmxl
KCkpCkBAIC02NjMsNyArNjYyLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdS
ZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCkKICAgICBpZiAo
YmFja2dyb3VuZFRleHR1cmUpIHsKICAgICAgICAgQVNTRVJUKGJhY2tncm91bmRUZXh0dXJlLT5z
aXplKCkgPT0gcXVhZC0+cXVhZFJlY3QoKS5zaXplKCkpOwogICAgICAgICBDQ1Njb3BlZExvY2tS
ZXNvdXJjZUZvclJlYWQgbG9jayhtX3Jlc291cmNlUHJvdmlkZXIsIGJhY2tncm91bmRUZXh0dXJl
LT5pZCgpKTsKLSAgICAgICAgY29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKGxvY2sudGV4dHVyZUlk
KCksIHF1YWQtPnF1YWRSZWN0KCkuc2l6ZSgpLCByZW5kZXJNYXRyaXgpOworICAgICAgICBjb3B5
VGV4dHVyZVRvRnJhbWVidWZmZXIobG9jay50ZXh0dXJlSWQoKSwgcXVhZC0+cXVhZFJlY3QoKS5z
aXplKCksIHF1YWQtPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgfQogCiAgICAgYm9vbCBjbGlwcGVk
ID0gZmFsc2U7CkBAIC03NTAsNyArNzQ5LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OmRyYXdSZW5kZXJQYXNzUXVhZChjb25zdCBDQ1JlbmRlclBhc3NEcmF3UXVhZCogcXVhZCkKICAg
ICBGbG9hdFF1YWQgc3VyZmFjZVF1YWQgPSBDQ01hdGhVdGlsOjptYXBRdWFkKGNvbnRlbnRzRGV2
aWNlVHJhbnNmb3JtLmludmVyc2UoKSwgZGV2aWNlTGF5ZXJFZGdlcy5mbG9hdFF1YWQoKSwgY2xp
cHBlZCk7CiAgICAgQVNTRVJUKCFjbGlwcGVkKTsKIAotICAgIGRyYXdUZXh0dXJlZFF1YWQocmVu
ZGVyTWF0cml4LCBxdWFkLT5xdWFkUmVjdCgpLndpZHRoKCksIHF1YWQtPnF1YWRSZWN0KCkuaGVp
Z2h0KCksIHF1YWQtPm9wYWNpdHkoKSwgc3VyZmFjZVF1YWQsCisgICAgZHJhd1RleHR1cmVkUXVh
ZChxdWFkLT5kcmF3VHJhbnNmb3JtKCksIHF1YWQtPnF1YWRSZWN0KCkud2lkdGgoKSwgcXVhZC0+
cXVhZFJlY3QoKS5oZWlnaHQoKSwgcXVhZC0+b3BhY2l0eSgpLCBzdXJmYWNlUXVhZCwKICAgICAg
ICAgICAgICAgICAgICAgIHNoYWRlck1hdHJpeExvY2F0aW9uLCBzaGFkZXJBbHBoYUxvY2F0aW9u
LCBzaGFkZXJRdWFkTG9jYXRpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUmVuZGVyU3VyZmFjZUNocm9t
aXVtLmNwcAppbmRleCA3YzI4MGEwYWVjYjkxZDY2NGRkMjY1ZmE5NDRhNjI5ZjE1ZjFiMTYzLi5m
N2FlYmVlZTg1YjE1NzQxODJjNGIyODEyYzQ2ZGU2ZDY4ODRjMjU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Jl
bmRlclN1cmZhY2VDaHJvbWl1bS5jcHAKQEAgLTU0LDkgKzU0LDEyIEBAIFJlbmRlclN1cmZhY2VD
aHJvbWl1bTo6flJlbmRlclN1cmZhY2VDaHJvbWl1bSgpCiAKIEZsb2F0UmVjdCBSZW5kZXJTdXJm
YWNlQ2hyb21pdW06OmRyYXdhYmxlQ29udGVudFJlY3QoKSBjb25zdAogewotICAgIEZsb2F0UmVj
dCBkcmF3YWJsZUNvbnRlbnRSZWN0ID0gQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QobV9kcmF3
VHJhbnNmb3JtLCBtX2NvbnRlbnRSZWN0KTsKLSAgICBpZiAobV9vd25pbmdMYXllci0+aGFzUmVw
bGljYSgpKQotICAgICAgICBkcmF3YWJsZUNvbnRlbnRSZWN0LnVuaXRlKENDTWF0aFV0aWw6Om1h
cENsaXBwZWRSZWN0KG1fcmVwbGljYURyYXdUcmFuc2Zvcm0sIG1fY29udGVudFJlY3QpKTsKKyAg
ICBGbG9hdFJlY3QgbG9jYWxDb250ZW50UmVjdCgtMC41ICogbV9jb250ZW50UmVjdC53aWR0aCgp
LCAtMC41ICogbV9jb250ZW50UmVjdC5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2NvbnRlbnRSZWN0LndpZHRoKCksIG1fY29udGVudFJlY3QuaGVpZ2h0KCkpOwor
ICAgIEZsb2F0UmVjdCBkcmF3YWJsZUNvbnRlbnRSZWN0ID0gQ0NNYXRoVXRpbDo6bWFwQ2xpcHBl
ZFJlY3QobV9kcmF3VHJhbnNmb3JtLCBsb2NhbENvbnRlbnRSZWN0KTsKKyAgICBpZiAobV9vd25p
bmdMYXllci0+cmVwbGljYUxheWVyKCkpCisgICAgICAgIGRyYXdhYmxlQ29udGVudFJlY3QudW5p
dGUoQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QobV9yZXBsaWNhRHJhd1RyYW5zZm9ybSwgbG9j
YWxDb250ZW50UmVjdCkpOworCiAgICAgcmV0dXJuIGRyYXdhYmxlQ29udGVudFJlY3Q7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGFtYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwCmluZGV4IDk3Yzk5ZGEzNzMxM2JlNzYzYTQ1
Yzk3OTNmMzQwZjVmYTJiOWIxNWIuLmRhOTk0MjY2MzVkNWQ1NGIxYWRhNDAwY2RlMDZhM2UwNTUz
ZmEwMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcApAQCAtMjcwLDI4ICsyNzAs
MjcgQEAgdm9pZCBDQ0RhbWFnZVRyYWNrZXI6OmV4dGVuZERhbWFnZUZvckxheWVyKENDTGF5ZXJJ
bXBsKiBsYXllciwgRmxvYXRSZWN0JiB0YXJnZXQKICAgICAvLyBUbyBjb25zaWRlciBob3cgYSBs
YXllcidzIHRhcmdldFN1cmZhY2UgY29udHJpYnV0ZXMgdG8gdGhlIGFuY2VzdG9yU3VyZmFjZSwK
ICAgICAvLyBleHRlbmREYW1hZ2VGb3JSZW5kZXJTdXJmYWNlKCkgbXVzdCBiZSBjYWxsZWQgaW5z
dGVhZC4KIAorICAgIC8vIENvbXB1dGUgdGhlIGxheWVyJ3MgIm9yaWdpblRyYW5zZm9ybSIgYnkg
dHJhbnNsYXRpbmcgdGhlIGRyYXdUcmFuc2Zvcm0uCisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggb3JpZ2luVHJhbnNmb3JtID0gbGF5ZXItPmRyYXdUcmFuc2Zvcm0oKTsKKyAgICBvcmlnaW5U
cmFuc2Zvcm0udHJhbnNsYXRlKC0wLjUgKiBsYXllci0+Ym91bmRzKCkud2lkdGgoKSwgLTAuNSAq
IGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSk7CisKICAgICBib29sIGxheWVySXNOZXcgPSBmYWxz
ZTsKLSAgICBGbG9hdFJlY3Qgb2xkUmVjdEluVGFyZ2V0U3BhY2UgPSByZW1vdmVSZWN0RnJvbUN1
cnJlbnRGcmFtZShsYXllci0+aWQoKSwgbGF5ZXJJc05ldyk7CisgICAgRmxvYXRSZWN0IG9sZExh
eWVyUmVjdCA9IHJlbW92ZVJlY3RGcm9tQ3VycmVudEZyYW1lKGxheWVyLT5pZCgpLCBsYXllcklz
TmV3KTsKIAotICAgIEZsb2F0UmVjdCByZWN0SW5UYXJnZXRTcGFjZSA9IENDTWF0aFV0aWw6Om1h
cENsaXBwZWRSZWN0KGxheWVyLT5kcmF3VHJhbnNmb3JtKCksIEZsb2F0UmVjdChGbG9hdFBvaW50
Ojp6ZXJvKCksIGxheWVyLT5jb250ZW50Qm91bmRzKCkpKTsKLSAgICBzYXZlUmVjdEZvck5leHRG
cmFtZShsYXllci0+aWQoKSwgcmVjdEluVGFyZ2V0U3BhY2UpOworICAgIEZsb2F0UmVjdCBsYXll
clJlY3RJblRhcmdldFNwYWNlID0gQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3Qob3JpZ2luVHJh
bnNmb3JtLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCBsYXllci0+Ym91bmRzKCkpKTsK
KyAgICBzYXZlUmVjdEZvck5leHRGcmFtZShsYXllci0+aWQoKSwgbGF5ZXJSZWN0SW5UYXJnZXRT
cGFjZSk7CiAKICAgICBpZiAobGF5ZXJJc05ldyB8fCBsYXllck5lZWRzVG9SZWRyYXdPbnRvSXRz
VGFyZ2V0U3VyZmFjZShsYXllcikpIHsKICAgICAgICAgLy8gSWYgYSBsYXllciBpcyBuZXcgb3Ig
aGFzIGNoYW5nZWQsIHRoZW4gaXRzIGVudGlyZSBsYXllciByZWN0IGFmZmVjdHMgdGhlIHRhcmdl
dCBzdXJmYWNlLgotICAgICAgICB0YXJnZXREYW1hZ2VSZWN0LnVuaXRlSWZOb25aZXJvKHJlY3RJ
blRhcmdldFNwYWNlKTsKKyAgICAgICAgdGFyZ2V0RGFtYWdlUmVjdC51bml0ZUlmTm9uWmVybyhs
YXllclJlY3RJblRhcmdldFNwYWNlKTsKIAogICAgICAgICAvLyBUaGUgbGF5ZXIncyBvbGQgcmVn
aW9uIGlzIG5vdyBleHBvc2VkIG9uIHRoZSB0YXJnZXQgc3VyZmFjZSwgdG9vLgotICAgICAgICAv
LyBOb3RlIG9sZFJlY3RJblRhcmdldFNwYWNlIGlzIGFscmVhZHkgaW4gdGFyZ2V0IHNwYWNlLgot
ICAgICAgICB0YXJnZXREYW1hZ2VSZWN0LnVuaXRlSWZOb25aZXJvKG9sZFJlY3RJblRhcmdldFNw
YWNlKTsKKyAgICAgICAgLy8gTm90ZSBvbGRMYXllclJlY3QgaXMgYWxyZWFkeSBpbiB0YXJnZXQg
c3BhY2UuCisgICAgICAgIHRhcmdldERhbWFnZVJlY3QudW5pdGVJZk5vblplcm8ob2xkTGF5ZXJS
ZWN0KTsKICAgICB9IGVsc2UgaWYgKCFsYXllci0+dXBkYXRlUmVjdCgpLmlzRW1wdHkoKSkgewog
ICAgICAgICAvLyBJZiB0aGUgbGF5ZXIgcHJvcGVydGllcyBoYXZlbnQgY2hhbmdlZCwgdGhlbiB0
aGUgdGhlIHRhcmdldCBzdXJmYWNlIGlzIG9ubHkKICAgICAgICAgLy8gYWZmZWN0ZWQgYnkgdGhl
IGxheWVyJ3MgdXBkYXRlIGFyZWEsIHdoaWNoIGNvdWxkIGJlIGVtcHR5LgotICAgICAgICBGbG9h
dFJlY3QgdXBkYXRlQ29udGVudFJlY3QgPSBsYXllci0+dXBkYXRlUmVjdCgpOwotICAgICAgICBm
bG9hdCB3aWR0aFNjYWxlID0gbGF5ZXItPmNvbnRlbnRCb3VuZHMoKS53aWR0aCgpIC8gc3RhdGlj
X2Nhc3Q8ZmxvYXQ+KGxheWVyLT5ib3VuZHMoKS53aWR0aCgpKTsKLSAgICAgICAgZmxvYXQgaGVp
Z2h0U2NhbGUgPSBsYXllci0+Y29udGVudEJvdW5kcygpLmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8
ZmxvYXQ+KGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSk7Ci0gICAgICAgIHVwZGF0ZUNvbnRlbnRS
ZWN0LnNjYWxlKHdpZHRoU2NhbGUsIGhlaWdodFNjYWxlKTsKLQotICAgICAgICBGbG9hdFJlY3Qg
dXBkYXRlUmVjdEluVGFyZ2V0U3BhY2UgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChsYXll
ci0+ZHJhd1RyYW5zZm9ybSgpLCB1cGRhdGVDb250ZW50UmVjdCk7CisgICAgICAgIEZsb2F0UmVj
dCB1cGRhdGVSZWN0SW5UYXJnZXRTcGFjZSA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KG9y
aWdpblRyYW5zZm9ybSwgbGF5ZXItPnVwZGF0ZVJlY3QoKSk7CiAgICAgICAgIHRhcmdldERhbWFn
ZVJlY3QudW5pdGVJZk5vblplcm8odXBkYXRlUmVjdEluVGFyZ2V0U3BhY2UpOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCAyM2EzOGEyMGQyNzMwYTZiYmEwMDExODFiOGU2
MDJlZjhjMmFhY2VmLi44YTA1YTg4MDcwZjJmNWFlMjE1NDgzODdkODJkYTdiMDMzMDMzYjc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0xNDYsNyArMTQ2LDE0IEBAIGJvb2wgQ0NMYXll
ckltcGw6OmRlc2NlbmRhbnREcmF3c0NvbnRlbnQoKQogCiBQYXNzT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiBDQ0xheWVySW1wbDo6Y3JlYXRlU2hhcmVkUXVhZFN0YXRlKGludCBpZCkgY29uc3QK
IHsKLSAgICByZXR1cm4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShpZCwgbV9kcmF3VHJhbnNm
b3JtLCBtX3Zpc2libGVDb250ZW50UmVjdCwgbV9zY2lzc29yUmVjdCwgbV9kcmF3T3BhY2l0eSwg
bV9vcGFxdWUpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHF1YWRUcmFuc2Zvcm1hdGlv
biA9IGRyYXdUcmFuc2Zvcm0oKTsKKyAgICBpZiAoIWNvbnRlbnRCb3VuZHMoKS5pc0VtcHR5KCkg
JiYgIWJvdW5kcygpLmlzRW1wdHkoKSkgeworICAgICAgICBxdWFkVHJhbnNmb3JtYXRpb24uc2Nh
bGVOb25Vbmlmb3JtKGJvdW5kcygpLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGNvbnRl
bnRCb3VuZHMoKS53aWR0aCgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib3VuZHMoKS5oZWlnaHQoKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4oY29udGVudEJv
dW5kcygpLmhlaWdodCgpKSk7CisgICAgICAgIHF1YWRUcmFuc2Zvcm1hdGlvbi50cmFuc2xhdGUo
LWNvbnRlbnRCb3VuZHMoKS53aWR0aCgpIC8gMi4wLCAtY29udGVudEJvdW5kcygpLmhlaWdodCgp
IC8gMi4wKTsKKyAgICB9CisKKyAgICByZXR1cm4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShp
ZCwgcXVhZFRyYW5zZm9ybWF0aW9uLCBtX3Zpc2libGVDb250ZW50UmVjdCwgbV9zY2lzc29yUmVj
dCwgbV9kcmF3T3BhY2l0eSwgbV9vcGFxdWUpOwogfQogCiB2b2lkIENDTGF5ZXJJbXBsOjp3aWxs
RHJhdyhDQ1Jlc291cmNlUHJvdmlkZXIqKQpAQCAtMjI1LDYgKzIzMiwxNSBAQCBDQ0lucHV0SGFu
ZGxlckNsaWVudDo6U2Nyb2xsU3RhdHVzIENDTGF5ZXJJbXBsOjp0cnlTY3JvbGwoY29uc3QgSW50
UG9pbnQmIHZpZXdwbwogICAgIHJldHVybiBDQ0lucHV0SGFuZGxlckNsaWVudDo6U2Nyb2xsU3Rh
cnRlZDsKIH0KIAorY29uc3QgSW50UmVjdCBDQ0xheWVySW1wbDo6Z2V0RHJhd1JlY3QoKSBjb25z
dAoreworICAgIC8vIEZvcm0gdGhlIG1hdHJpeCB1c2VkIGJ5IHRoZSBzaGFkZXIgdG8gbWFwIHRo
ZSBjb3JuZXJzIG9mIHRoZSBsYXllcidzCisgICAgLy8gYm91bmRzIGludG8gdGhlIHZpZXcgc3Bh
Y2UuCisgICAgRmxvYXRSZWN0IGxheWVyUmVjdCgtMC41ICogYm91bmRzKCkud2lkdGgoKSwgLTAu
NSAqIGJvdW5kcygpLmhlaWdodCgpLCBib3VuZHMoKS53aWR0aCgpLCBib3VuZHMoKS5oZWlnaHQo
KSk7CisgICAgSW50UmVjdCBtYXBwZWRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChDQ01hdGhVdGls
OjptYXBDbGlwcGVkUmVjdChkcmF3VHJhbnNmb3JtKCksIGxheWVyUmVjdCkpOworICAgIHJldHVy
biBtYXBwZWRSZWN0OworfQorCiB2b2lkIENDTGF5ZXJJbXBsOjp3cml0ZUluZGVudChUZXh0U3Ry
ZWFtJiB0cywgaW50IGluZGVudCkKIHsKICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBpbmRlbnQ7
ICsraSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IGEyNjIyZWFiZTEyM2MwNmJlYzRiNmNkYTE4
OWQyOTFlNGVmZjVkZGMuLjI1YmVkYzIyMDdlNzI5MGNlYjdhZjliODU1ZmRiMmM1NzU3N2Y2YzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMjMwLDYgKzIzMCw5IEBAIHB1YmxpYzoKICAgICBi
b29sIGRvdWJsZVNpZGVkKCkgY29uc3QgeyByZXR1cm4gbV9kb3VibGVTaWRlZDsgfQogICAgIHZv
aWQgc2V0RG91YmxlU2lkZWQoYm9vbCk7CiAKKyAgICAvLyBSZXR1cm5zIHRoZSByZWN0IGNvbnRh
aW50YWluaW5nIHRoaXMgbGF5ZXIgaW4gdGhlIGN1cnJlbnQgdmlldydzIGNvb3JkaW5hdGUgc3lz
dGVtLgorICAgIGNvbnN0IEludFJlY3QgZ2V0RHJhd1JlY3QoKSBjb25zdDsKKwogICAgIHZvaWQg
c2V0VHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKICAg
ICBib29sIHRyYW5zZm9ybUlzQW5pbWF0aW5nKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNv
cnRlci5jcHAKaW5kZXggNDg4MDJkNjY3ZjQ2MjRkYjBlNDRjZjU5ZjViMTlmZDYzNmVkY2Y0ZC4u
ZmRmM2M3YmIyNzVjMTY3MTMzZmExMDhkMTFhMzBkMWY4MzJhZTBmMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclNvcnRlci5jcHAKQEAgLTE1NCw3ICsxNTQsMTAgQEAgQ0NMYXllclNvcnRlcjo6QUJDb21w
YXJlUmVzdWx0IENDTGF5ZXJTb3J0ZXI6OmNoZWNrT3ZlcmxhcChMYXllclNoYXBlKiBhLCBMYXll
clMKIAogQ0NMYXllclNvcnRlcjo6TGF5ZXJTaGFwZTo6TGF5ZXJTaGFwZShmbG9hdCB3aWR0aCwg
ZmxvYXQgaGVpZ2h0LCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9y
bSkKIHsKLSAgICBGbG9hdFF1YWQgbGF5ZXJRdWFkKEZsb2F0UmVjdCgwLCAwLCB3aWR0aCwgaGVp
Z2h0KSk7CisgICAgRmxvYXRRdWFkIGxheWVyUXVhZChGbG9hdFBvaW50KC13aWR0aCAqIDAuNSwg
aGVpZ2h0ICogMC41KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQod2lkdGgg
KiAwLjUsIGhlaWdodCAqIDAuNSksCisgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdFBvaW50
KHdpZHRoICogMC41LCAtaGVpZ2h0ICogMC41KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEZs
b2F0UG9pbnQoLXdpZHRoICogMC41LCAtaGVpZ2h0ICogMC41KSk7CiAKICAgICAvLyBDb21wdXRl
IHRoZSBwcm9qZWN0aW9uIG9mIHRoZSBsYXllciBxdWFkIG9udG8gdGhlIHogPSAwIHBsYW5lLgog
CkBAIC0yNDIsOCArMjQ1LDggQEAgdm9pZCBDQ0xheWVyU29ydGVyOjpjcmVhdGVHcmFwaE5vZGVz
KExheWVyTGlzdDo6aXRlcmF0b3IgZmlyc3QsIExheWVyTGlzdDo6aXRlcmEKICAgICAgICAgICAg
IGxheWVySGVpZ2h0ID0gcmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKS5oZWlnaHQoKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGRyYXdUcmFuc2Zvcm0gPSBub2RlLmxheWVyLT5k
cmF3VHJhbnNmb3JtKCk7Ci0gICAgICAgICAgICBsYXllcldpZHRoID0gbm9kZS5sYXllci0+Y29u
dGVudEJvdW5kcygpLndpZHRoKCk7Ci0gICAgICAgICAgICBsYXllckhlaWdodCA9IG5vZGUubGF5
ZXItPmNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKTsKKyAgICAgICAgICAgIGxheWVyV2lkdGggPSBu
b2RlLmxheWVyLT5ib3VuZHMoKS53aWR0aCgpOworICAgICAgICAgICAgbGF5ZXJIZWlnaHQgPSBu
b2RlLmxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKTsKICAgICAgICAgfQogCiAgICAgICAgIG5vZGUu
c2hhcGUgPSBMYXllclNoYXBlKGxheWVyV2lkdGgsIGxheWVySGVpZ2h0LCBkcmF3VHJhbnNmb3Jt
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCmluZGV4IDUzZDI2
NWMyOWQ4MDdiZjc1ZDY0MmE2OGVmNmUzYTFjZjE5MGIwZDYuLjIwNTI2YmQ0YjE2ZjE4NWI2NDkw
MjcyZmQzZTZmMWJhNzBkZjMwOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
Q29tbW9uLmNwcApAQCAtMTc3LDggKzE3NywxOCBAQCBzdGF0aWMgSW50UmVjdCBjYWxjdWxhdGVW
aXNpYmxlQ29udGVudFJlY3QoTGF5ZXJUeXBlKiBsYXllcikKICAgICBpZiAodGFyZ2V0U3VyZmFj
ZVJlY3QuaXNFbXB0eSgpIHx8IGxheWVyLT5jb250ZW50Qm91bmRzKCkuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gSW50UmVjdCgpOwogCi0gICAgY29uc3QgSW50UmVjdCBjb250ZW50UmVjdCA9
IEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmNvbnRlbnRCb3VuZHMoKSk7Ci0gICAgSW50UmVj
dCB2aXNpYmxlQ29udGVudFJlY3QgPSBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZVZp
c2libGVSZWN0KHRhcmdldFN1cmZhY2VSZWN0LCBjb250ZW50UmVjdCwgbGF5ZXItPmRyYXdUcmFu
c2Zvcm0oKSk7CisgICAgLy8gTm90ZSBjYXJlZnVsbHkgdGhlc2UgYXJlIGFsaWFzZXMKKyAgICBj
b25zdCBJbnRTaXplJiBib3VuZHMgPSBsYXllci0+Ym91bmRzKCk7CisgICAgY29uc3QgSW50U2l6
ZSYgY29udGVudEJvdW5kcyA9IGxheWVyLT5jb250ZW50Qm91bmRzKCk7CisKKyAgICBjb25zdCBJ
bnRSZWN0IGxheWVyQm91bmRSZWN0ID0gSW50UmVjdChJbnRQb2ludCgpLCBjb250ZW50Qm91bmRz
KTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBsYXllci0+ZHJhd1Ry
YW5zZm9ybSgpOworCisgICAgdHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShib3VuZHMud2lkdGgo
KSAvIHN0YXRpY19jYXN0PGRvdWJsZT4oY29udGVudEJvdW5kcy53aWR0aCgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvdW5kcy5oZWlnaHQoKSAvIHN0YXRpY19jYXN0PGRvdWJs
ZT4oY29udGVudEJvdW5kcy5oZWlnaHQoKSkpOworICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLWNv
bnRlbnRCb3VuZHMud2lkdGgoKSAvIDIuMCwgLWNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkgLyAyLjAp
OworCisgICAgSW50UmVjdCB2aXNpYmxlQ29udGVudFJlY3QgPSBDQ0xheWVyVHJlZUhvc3RDb21t
b246OmNhbGN1bGF0ZVZpc2libGVSZWN0KHRhcmdldFN1cmZhY2VSZWN0LCBsYXllckJvdW5kUmVj
dCwgdHJhbnNmb3JtKTsKICAgICByZXR1cm4gdmlzaWJsZUNvbnRlbnRSZWN0OwogfQogCkBAIC00
MjMsNyArNDMzLDYgQEAgc3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5h
bChMYXllclR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RMYXkKICAgICAvLyAgICAgICAgTVts
YXllcl0gaXMgdGhlIGxheWVyJ3MgbWF0cml4IChhcHBsaWVkIGF0IHRoZSBhbmNob3IgcG9pbnQp
CiAgICAgLy8gICAgICAgIE1bc3VibGF5ZXJdIGlzIHRoZSBsYXllcidzIHN1YmxheWVyIHRyYW5z
Zm9ybSAoYXBwbGllZCBhdCB0aGUgbGF5ZXIncyBjZW50ZXIpCiAgICAgLy8gICAgICAgIFRyW2Fu
Y2hvcjJjZW50ZXJdIGlzIHRoZSB0cmFuc2xhdGlvbiBvZmZzZXQgZnJvbSB0aGUgYW5jaG9yIHBv
aW50IGFuZCB0aGUgY2VudGVyIG9mIHRoZSBsYXllcgotICAgIC8vICAgICAgICBTW2NvbnRlbnQy
bGF5ZXJdIGlzIHRoZSByYXRpbyBvZiBhIGxheWVyJ3MgY29udGVudEJvdW5kcygpIHRvIGl0cyBi
b3VuZHMoKS4KICAgICAvLwogICAgIC8vICAgIFNvbWUgc2hvcnRjdXRzIGFuZCBzdWJzdGl0dXRp
b25zIGFyZSB1c2VkIGluIHRoZSBjb2RlIHRvIHJlZHVjZSBtYXRyaXggbXVsdGlwbGljYXRpb25z
OgogICAgIC8vICAgICAgICBUclthbmNob3IyY2VudGVyXSA9IFRyW29yaWdpbjJhbmNob3JdLmlu
dmVyc2UoKSAqIFRyW29yaWdpbjJjZW50ZXJdCkBAIC00NDQsMTYgKzQ1MywxNiBAQCBzdGF0aWMg
dm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExh
eWVyVHlwZSogcm9vdExheQogICAgIC8vIFVzaW5nIHRoZXNlIGRlZmluaXRpb25zLCB0aGVuOgog
ICAgIC8vCiAgICAgLy8gVGhlIGRyYXcgdHJhbnNmb3JtIGZvciB0aGUgbGF5ZXIgaXM6Ci0gICAg
Ly8gICAgICAgIE1bZHJhd10gPSBNW3BhcmVudF0gKiBUcltvcmlnaW5dICogY29tcG9zaXRlTGF5
ZXJUcmFuc2Zvcm0gKiBTW2NvbnRlbnQybGF5ZXJdCi0gICAgLy8gICAgICAgICAgICAgICAgPSBN
W3BhcmVudF0gKiBUcltsYXllci0+cG9zaXRpb24oKV0gKiBNW2xheWVyXSAqIFRyW2FuY2hvcjJv
cmlnaW5dICogU1tjb250ZW50MmxheWVyXQorICAgIC8vICAgICAgICBNW2RyYXddID0gTVtwYXJl
bnRdICogVHJbb3JpZ2luXSAqIGNvbXBvc2l0ZUxheWVyVHJhbnNmb3JtICogVHJbb3JpZ2luMmNl
bnRlcl0KKyAgICAvLyAgICAgICAgICAgICAgICA9IE1bcGFyZW50XSAqIFRyW2xheWVyLT5wb3Np
dGlvbigpXSAqIE1bbGF5ZXJdICogVHJbYW5jaG9yMmNlbnRlcl0KICAgICAvLwotICAgIC8vICAg
ICAgICBJbnRlcnByZXRpbmcgdGhlIG1hdGggbGVmdC10by1yaWdodCwgdGhpcyB0cmFuc2Zvcm1z
IGZyb20gdGhlIGxheWVyJ3MgcmVuZGVyIHN1cmZhY2UgdG8gdGhlIG9yaWdpbiBvZiB0aGUgbGF5
ZXIgaW4gY29udGVudCBzcGFjZS4KKyAgICAvLyAgICAgICAgSW50ZXJwcmV0aW5nIHRoZSBtYXRo
IGxlZnQtdG8tcmlnaHQsIHRoaXMgdHJhbnNmb3JtcyBmcm9tIHRoZSBsYXllcidzIHJlbmRlciBz
dXJmYWNlIHRvIHRoZSBjZW50ZXIgb2YgdGhlIGxheWVyLgogICAgIC8vCiAgICAgLy8gVGhlIHNj
cmVlbiBzcGFjZSB0cmFuc2Zvcm0gaXM6CiAgICAgLy8gICAgICAgIE1bc2NyZWVuc3BhY2VdID0g
TVtyb290XSAqIFRyW29yaWdpbl0gKiBjb21wb3NpdGVMYXllclRyYW5zZm9ybQogICAgIC8vICAg
ICAgICAgICAgICAgICAgICAgICA9IE1bcm9vdF0gKiBUcltsYXllci0+cG9zaXRpb24oKV0gKiBN
W2xheWVyXSAqIFRyW29yaWdpbjJhbmNob3JdLmludmVyc2UoKQogICAgIC8vCi0gICAgLy8gICAg
ICAgIEludGVycHJldGluZyB0aGUgbWF0aCBsZWZ0LXRvLXJpZ2h0LCB0aGlzIHRyYW5zZm9ybXMg
ZnJvbSB0aGUgcm9vdCByZW5kZXIgc3VyZmFjZSdzIGNvbnRlbnQgc3BhY2UgdG8gdGhlIGxvY2Fs
IGxheWVyJ3Mgb3JpZ2luIGluIGxheWVyIHNwYWNlLgorICAgIC8vICAgICAgICBJbnRlcnByZXRp
bmcgdGhlIG1hdGggbGVmdC10by1yaWdodCwgdGhpcyB0cmFuc2Zvcm1zIGZyb20gdGhlIHJvb3Qg
bGF5ZXIgc3BhY2UgdG8gdGhlIGxvY2FsIGxheWVyJ3Mgb3JpZ2luLgogICAgIC8vCiAgICAgLy8g
VGhlIHRyYW5zZm9ybSBoaWVyYXJjaHkgdGhhdCBpcyBwYXNzZWQgb24gdG8gY2hpbGRyZW4gKGku
ZS4gdGhlIGNoaWxkJ3MgcGFyZW50TWF0cml4KSBpczoKICAgICAvLyAgICAgICAgTVtwYXJlbnRd
X2Zvcl9jaGlsZCA9IE1bcGFyZW50XSAqIFRyW29yaWdpbl0gKiBjb21wb3NpdGVMYXllclRyYW5z
Zm9ybSAqIGNvbXBvc2l0ZVN1YmxheWVyVHJhbnNmb3JtCkBAIC00NzIsMTQgKzQ4MSwxOCBAQCBz
dGF0aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSogbGF5
ZXIsIExheWVyVHlwZSogcm9vdExheQogICAgIC8vCiAgICAgLy8gV2Ugd2lsbCBkZW5vdGUgYSBz
Y2FsZSBieSBjb250ZW50cyBzY2FsZSBTW2NvbnRlbnRzU2NhbGVdCiAgICAgLy8KLSAgICAvLyBU
aGUgcmVuZGVyIHN1cmZhY2Ugb3JpZ2luL2RyYXcgdHJhbnNmb3JtIHRvIGl0cyB0YXJnZXQgc3Vy
ZmFjZSBvcmlnaW4gaXM6Ci0gICAgLy8gICAgICAgIE1bc3VyZmFjZU9yaWdpbl0gPSBNW293bmlu
Z0xheWVyLT5EcmF3XQorICAgIC8vIFRoZSByZW5kZXIgc3VyZmFjZSBvcmlnaW4gdHJhbnNmb3Jt
IHRvIGl0cyB0YXJnZXQgc3VyZmFjZSBvcmlnaW4gaXM6CisgICAgLy8gICAgICAgIE1bc3VyZmFj
ZU9yaWdpbl0gPSBNW293bmluZ0xheWVyLT5EcmF3XSAqIFNbY29udGVudHNTY2FsZV0uaW52ZXJz
ZSgpICogVHJbb3JpZ2luMmNlbnRlckluU2NyZWVuU3BhY2VdLmludmVyc2UoKQogICAgIC8vCiAg
ICAgLy8gVGhlIHJlbmRlciBzdXJmYWNlIG9yaWdpbiB0cmFuc2Zvcm0gdG8gaXRzIHRoZSByb290
IChzY3JlZW4gc3BhY2UpIG9yaWdpbiBpczoKICAgICAvLyAgICAgICAgTVtzdXJmYWNlMnJvb3Rd
ID0gIE1bb3duaW5nTGF5ZXItPnNjcmVlbnNwYWNlXSAqIFNbY29udGVudHNTY2FsZV0uaW52ZXJz
ZSgpCiAgICAgLy8KLSAgICAvLyBUaGUgcmVwbGljYSBvcmlnaW4vZHJhdyB0cmFuc2Zvcm0gdG8g
aXRzIHRhcmdldCBzdXJmYWNlIG9yaWdpbiBpczoKLSAgICAvLyAgICAgICAgTVtyZXBsaWNhT3Jp
Z2luXSA9IFNbY29udGVudHNTY2FsZV0gKiBNW3N1cmZhY2VPcmlnaW5dICogVHJbcmVwbGljYS0+
cG9zaXRpb24oKSArIHJlcGxpY2EtPmFuY2hvcigpXSAqIFRyW3JlcGxpY2FdICogVHJbb3JpZ2lu
MmFuY2hvcl0uaW52ZXJzZSgpICogU1tjb250ZW50c1NjYWxlXS5pbnZlcnNlKCkKKyAgICAvLyBU
aGUgcmVwbGljYSBkcmF3IHRyYW5zZm9ybSBpczoKKyAgICAvLyAgICAgICAgTVtyZXBsaWNhRHJh
d10gPSBNW3N1cmZhY2VPcmlnaW5dICogU1tjb250ZW50c1NjYWxlXSAqIFRyW3JlcGxpY2EtPnBv
c2l0aW9uKCkgKyByZXBsaWNhLT5hbmNob3IoKV0gKiBUcltyZXBsaWNhXSAqIFRyW2FuY2hvcjJj
ZW50ZXJdICogU1tjb250ZW50c1NjYWxlXS5pbnZlcnNlKCkKKyAgICAvLyAgICAgICAgICAgICAg
ICAgICAgICAgPSBNW293bmluZ0xheWVyLT5kcmF3XSAqIFRyW29yaWdpbjJjZW50ZXJdLmludmVy
c2UoKSAqIFNbY29udGVudHNTY2FsZV0gKiBUcltyZXBsaWNhLT5wb3NpdGlvbigpICsgcmVwbGlj
YS0+YW5jaG9yKCldICogVHJbcmVwbGljYV0gKiBUclthbmNob3IyY2xpcHBlZENlbnRlcl0gKiBT
W2NvbnRlbnRzU2NhbGVdLmludmVyc2UoKQorICAgIC8vCisgICAgLy8gVGhlIHJlcGxpY2Egb3Jp
Z2luIHRyYW5zZm9ybSB0byBpdHMgdGFyZ2V0IHN1cmZhY2Ugb3JpZ2luIGlzOgorICAgIC8vICAg
ICAgICBNW3JlcGxpY2FPcmlnaW5dID0gU1tjb250ZW50c1NjYWxlXSAqIE1bc3VyZmFjZU9yaWdp
bl0gKiBUcltyZXBsaWNhLT5wb3NpdGlvbigpICsgcmVwbGljYS0+YW5jaG9yKCldICogVHJbcmVw
bGljYV0gKiBUcltvcmlnaW4yYW5jaG9yXS5pbnZlcnNlKCkgKiBTW2NvbnRlbnRzU2NhbGVdLmlu
dmVycygpCiAgICAgLy8KICAgICAvLyBUaGUgcmVwbGljYSBvcmlnaW4gdHJhbnNmb3JtIHRvIHRo
ZSByb290IChzY3JlZW4gc3BhY2UpIG9yaWdpbiBpczoKICAgICAvLyAgICAgICAgTVtyZXBsaWNh
MnJvb3RdID0gTVtzdXJmYWNlMnJvb3RdICogVHJbcmVwbGljYS0+cG9zaXRpb24oKV0gKiBUclty
ZXBsaWNhXSAqIFRyW29yaWdpbjJhbmNob3JdLmludmVyc2UoKQpAQCAtNTE5LDYgKzUzMiw4IEBA
IHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBs
YXllciwgTGF5ZXJUeXBlKiByb290TGF5CiAgICAgLy8gTFQgPSBTW3BhZ2VTY2FsZURlbHRhXSAq
IFRyW29yaWdpbl0gKiBUcltvcmlnaW4yYW5jaG9yXSAqIE1bbGF5ZXJdICogVHJbYW5jaG9yMmNl
bnRlcl0KICAgICBsYXllckxvY2FsVHJhbnNmb3JtLnRyYW5zbGF0ZTNkKGNlbnRlck9mZnNldFgs
IGNlbnRlck9mZnNldFksIC1sYXllci0+YW5jaG9yUG9pbnRaKCkpOwogCisgICAgLy8gVGhlIGNv
bWJpbmVkVHJhbnNmb3JtIHRoYXQgZ2V0cyBjb21wdXRlZCBiZWxvdyBpcyBlZmZlY3RpdmVseSB0
aGUgbGF5ZXIncyBkcmF3VHJhbnNmb3JtLCB1bmxlc3MKKyAgICAvLyB0aGUgbGF5ZXIgaXRzZWxm
IGNyZWF0ZXMgYSByZW5kZXJTdXJmYWNlLiBJbiB0aGF0IGNhc2UsIHRoZSByZW5kZXJTdXJmYWNl
IHJlLXBhcmVudHMgdGhlIHRyYW5zZm9ybXMuCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
Y29tYmluZWRUcmFuc2Zvcm0gPSBwYXJlbnRNYXRyaXg7CiAgICAgY29tYmluZWRUcmFuc2Zvcm0u
bXVsdGlwbHkobGF5ZXJMb2NhbFRyYW5zZm9ybSk7CiAKQEAgLTUyOSwyOCArNTQ0LDYgQEAgc3Rh
dGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbChMYXllclR5cGUqIGxheWVy
LCBMYXllclR5cGUqIHJvb3RMYXkKICAgICAgICAgY29tYmluZWRUcmFuc2Zvcm0gPSBjdXJyZW50
U2Nyb2xsQ29tcGVuc2F0aW9uTWF0cml4ICogY29tYmluZWRUcmFuc2Zvcm07CiAgICAgfQogCi0g
ICAgLy8gVGhlIGRyYXdUcmFuc2Zvcm0gdGhhdCBnZXRzIGNvbXB1dGVkIGJlbG93IGlzIGVmZmVj
dGl2ZWx5IHRoZSBsYXllcidzIGRyYXdUcmFuc2Zvcm0sIHVubGVzcwotICAgIC8vIHRoZSBsYXll
ciBpdHNlbGYgY3JlYXRlcyBhIHJlbmRlclN1cmZhY2UuIEluIHRoYXQgY2FzZSwgdGhlIHJlbmRl
clN1cmZhY2UgcmUtcGFyZW50cyB0aGUgdHJhbnNmb3Jtcy4KLSAgICBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBkcmF3VHJhbnNmb3JtID0gY29tYmluZWRUcmFuc2Zvcm07Ci0gICAgaWYgKCFsYXll
ci0+Y29udGVudEJvdW5kcygpLmlzRW1wdHkoKSAmJiAhbGF5ZXItPmJvdW5kcygpLmlzRW1wdHko
KSkgewotICAgICAgICAvLyBNW2RyYXddID0gTVtwYXJlbnRdICogTFQgKiBUclthbmNob3IyY2Vu
dGVyXSAqIFRyW2NlbnRlcjJhbmNob3JdCi0gICAgICAgIGRyYXdUcmFuc2Zvcm0udHJhbnNsYXRl
KC1sYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgLWxheWVyLT5ib3VuZHMoKS5oZWlnaHQo
KSAvIDIuMCk7Ci0gICAgICAgIC8vIE1bZHJhd10gPSBNW3BhcmVudF0gKiBMVCAqIFRyW2FuY2hv
cjJvcmlnaW5dICogU1tjb250ZW50MmxheWVyXQotICAgICAgICBkcmF3VHJhbnNmb3JtLnNjYWxl
Tm9uVW5pZm9ybShsYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4o
bGF5ZXItPmNvbnRlbnRCb3VuZHMoKS53aWR0aCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8ZG91
YmxlPihsYXllci0+Y29udGVudEJvdW5kcygpLmhlaWdodCgpKSk7Ci0gICAgfQotCi0gICAgLy8g
bGF5ZXJTY3JlZW5TcGFjZVRyYW5zZm9ybSByZXByZXNlbnRzIHRoZSB0cmFuc2Zvcm0gYmV0d2Vl
biByb290IGxheWVyJ3MgInNjcmVlbiBzcGFjZSIgYW5kIGxvY2FsIGxheWVyIHNwYWNlLgotICAg
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyU2NyZWVuU3BhY2VUcmFuc2Zvcm0gPSBmdWxs
SGllcmFyY2h5TWF0cml4OwotICAgIGxheWVyU2NyZWVuU3BhY2VUcmFuc2Zvcm0ubXVsdGlwbHko
ZHJhd1RyYW5zZm9ybSk7Ci0gICAgLy8gVGhlIGRyYXcgdHJhbnNmb3JtIG9wZXJhdGVzIG9uIGNv
bnRlbnQgc3BhY2UgcmVjdHMuIFRoaXMgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIHRyYW5zZm9y
bSBsYXllciBzcGFjZSByZWN0cy4KLSAgICAvLyBGSVhNRTogTWFrZSBsYXllciBzY3JlZW4gc3Bh
Y2UgdHJhbnNmb3JtcyBvcGVyYXRlIG9uIGNvbnRlbnQgc3BhY2UgcmVjdHMuCi0gICAgaWYgKCFs
YXllci0+Y29udGVudEJvdW5kcygpLmlzRW1wdHkoKSAmJiAhbGF5ZXItPmJvdW5kcygpLmlzRW1w
dHkoKSkgewotICAgICAgICBsYXllclNjcmVlblNwYWNlVHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9y
bShsYXllci0+Y29udGVudEJvdW5kcygpLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGxh
eWVyLT5ib3VuZHMoKS53aWR0aCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbGF5ZXItPmNvbnRlbnRCb3VuZHMoKS5oZWlnaHQoKSAvIHN0YXRp
Y19jYXN0PGRvdWJsZT4obGF5ZXItPmJvdW5kcygpLmhlaWdodCgpKSk7Ci0gICAgfQotICAgIGxh
eWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShsYXllclNjcmVlblNwYWNlVHJhbnNmb3JtKTsK
LQogICAgIGJvb2wgYW5pbWF0aW5nVHJhbnNmb3JtVG9UYXJnZXQgPSBsYXllci0+dHJhbnNmb3Jt
SXNBbmltYXRpbmcoKTsKICAgICBib29sIGFuaW1hdGluZ1RyYW5zZm9ybVRvU2NyZWVuID0gYW5p
bWF0aW5nVHJhbnNmb3JtVG9UYXJnZXQ7CiAgICAgaWYgKGxheWVyLT5wYXJlbnQoKSkgewpAQCAt
NTU5LDEyICs1NTIsMTMgQEAgc3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRl
cm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RMYXkKICAgICB9CiAKICAgICBm
bG9hdCBjb250ZW50c1NjYWxlID0gbGF5ZXItPmNvbnRlbnRzU2NhbGUoKTsKLSAgICBGbG9hdFJl
Y3QgY29udGVudFJlY3QoRmxvYXRQb2ludCgpLCBsYXllci0+Y29udGVudEJvdW5kcygpKTsKKwor
ICAgIEZsb2F0UmVjdCBsYXllclJlY3QoLTAuNSAqIGxheWVyLT5ib3VuZHMoKS53aWR0aCgpLCAt
MC41ICogbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSwg
bGF5ZXItPmJvdW5kcygpLmhlaWdodCgpKTsKKyAgICBJbnRSZWN0IHRyYW5zZm9ybWVkTGF5ZXJS
ZWN0OwogCiAgICAgLy8gZnVsbEhpZXJhcmNoeU1hdHJpeCBpcyB0aGUgbWF0cml4IHRoYXQgdHJh
bnNmb3JtcyBvYmplY3RzIGJldHdlZW4gc2NyZWVuIHNwYWNlIChleGNlcHQgcHJvamVjdGlvbiBt
YXRyaXgpIGFuZCB0aGUgbW9zdCByZWNlbnQgUmVuZGVyU3VyZmFjZSdzIHNwYWNlLgogICAgIC8v
IG5leHRIaWVyYXJjaHlNYXRyaXggd2lsbCBvbmx5IGNoYW5nZSBpZiB0aGlzIGxheWVyIHVzZXMg
YSBuZXcgUmVuZGVyU3VyZmFjZSwgb3RoZXJ3aXNlIHJlbWFpbnMgdGhlIHNhbWUuCiAgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggbmV4dEhpZXJhcmNoeU1hdHJpeCA9IGZ1bGxIaWVyYXJjaHlN
YXRyaXg7Ci0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggc3VibGF5ZXJNYXRyaXg7CiAKICAg
ICBpZiAoc3VidHJlZVNob3VsZFJlbmRlclRvU2VwYXJhdGVTdXJmYWNlKGxheWVyLCBpc1NjYWxl
T3JUcmFuc2xhdGlvbihjb21iaW5lZFRyYW5zZm9ybSkpKSB7CiAgICAgICAgIC8vIENoZWNrIGJh
Y2stZmFjZSB2aXNpYmlsaXR5IGJlZm9yZSBjb250aW51aW5nIHdpdGggdGhpcyBzdXJmYWNlIGFu
ZCBpdHMgc3VidHJlZQpAQCAtNTc4LDIxICs1NzIsMTIgQEAgc3RhdGljIHZvaWQgY2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RM
YXkKICAgICAgICAgcmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxpc3QoKTsKIAogICAgICAgICAv
LyBUaGUgb3JpZ2luIG9mIHRoZSBuZXcgc3VyZmFjZSBpcyB0aGUgdXBwZXIgbGVmdCBjb3JuZXIg
b2YgdGhlIGxheWVyLgotICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXRPcmlnaW5UcmFuc2Zvcm0o
ZHJhd1RyYW5zZm9ybSk7Ci0gICAgICAgIHJlbmRlclN1cmZhY2UtPnNldERyYXdUcmFuc2Zvcm0o
ZHJhd1RyYW5zZm9ybSk7Ci0gICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyRHJh
d1RyYW5zZm9ybTsKLSAgICAgICAgbGF5ZXJEcmF3VHJhbnNmb3JtLnNjYWxlKGNvbnRlbnRzU2Nh
bGUpOwotICAgICAgICBpZiAoIWxheWVyLT5jb250ZW50Qm91bmRzKCkuaXNFbXB0eSgpICYmICFs
YXllci0+Ym91bmRzKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBsYXllckRyYXdUcmFuc2Zv
cm0uc2NhbGVOb25Vbmlmb3JtKGxheWVyLT5ib3VuZHMoKS53aWR0aCgpIC8gc3RhdGljX2Nhc3Q8
ZG91YmxlPihsYXllci0+Y29udGVudEJvdW5kcygpLndpZHRoKCkpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkg
LyBzdGF0aWNfY2FzdDxkb3VibGU+KGxheWVyLT5jb250ZW50Qm91bmRzKCkuaGVpZ2h0KCkpKTsK
LSAgICAgICAgfQotICAgICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShsYXllckRyYXdUcmFu
c2Zvcm0pOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkcmF3VHJhbnNmb3JtOwor
ICAgICAgICBkcmF3VHJhbnNmb3JtLnNjYWxlKGNvbnRlbnRzU2NhbGUpOworICAgICAgICBkcmF3
VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKDAuNSAqIGJvdW5kcy53aWR0aCgpLCAwLjUgKiBib3VuZHMu
aGVpZ2h0KCksIDApOworICAgICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJhbnNm
b3JtKTsKIAotICAgICAgICAvLyBUaGUgc3VibGF5ZXIgbWF0cml4IHRyYW5zZm9ybXMgY2VudGVy
ZWQgbGF5ZXIgcmVjdHMgaW50byB0YXJnZXQKLSAgICAgICAgLy8gc3VyZmFjZSBjb250ZW50IHNw
YWNlLgotICAgICAgICBzdWJsYXllck1hdHJpeC5tYWtlSWRlbnRpdHkoKTsKLSAgICAgICAgc3Vi
bGF5ZXJNYXRyaXguc2NhbGUoY29udGVudHNTY2FsZSk7Ci0gICAgICAgIHN1YmxheWVyTWF0cml4
LnRyYW5zbGF0ZSgwLjUgKiBib3VuZHMud2lkdGgoKSwgMC41ICogYm91bmRzLmhlaWdodCgpKTsK
KyAgICAgICAgdHJhbnNmb3JtZWRMYXllclJlY3QgPSBJbnRSZWN0KDAsIDAsIGNvbnRlbnRzU2Nh
bGUgKiBib3VuZHMud2lkdGgoKSwgY29udGVudHNTY2FsZSAqIGJvdW5kcy5oZWlnaHQoKSk7CiAK
ICAgICAgICAgLy8gVGhlIG9wYWNpdHkgdmFsdWUgaXMgbW92ZWQgZnJvbSB0aGUgbGF5ZXIgdG8g
aXRzIHN1cmZhY2UsIHNvIHRoYXQgdGhlIGVudGlyZSBzdWJ0cmVlIHByb3Blcmx5IGluaGVyaXRz
IG9wYWNpdHkuCiAgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldERyYXdPcGFjaXR5KGRyYXdPcGFj
aXR5KTsKQEAgLTYwMCwxNSArNTg1LDI3IEBAIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290TGF5CiAgICAg
ICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eSgxKTsKICAgICAgICAgbGF5ZXItPnNldERyYXdPcGFj
aXR5SXNBbmltYXRpbmcoZmFsc2UpOwogCisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
IHN1cmZhY2VPcmlnaW5UcmFuc2Zvcm0gPSBjb21iaW5lZFRyYW5zZm9ybTsKKyAgICAgICAgLy8g
VGhlIHN1cmZhY2VPcmlnaW5UcmFuc2Zvcm0gdHJhbnNmb3JtcyBwb2ludHMgaW4gdGhlIHN1cmZh
Y2UncyBjb250ZW50IHNwYWNlCisgICAgICAgIC8vIHRvIGl0cyBwYXJlbnQncyBjb250ZW50IHNw
YWNlLiBEaXN0YW5jZXMgaW4gdGhlc2Ugc3BhY2VzIGFyZSBib3RoIGluIHBoeXNpY2FsCisgICAg
ICAgIC8vIHBpeGVscywgc28gd2UgbmVlZCB0byAndW5kbycgdGhlIHNjYWxlIGJ5IGNvbnRlbnRz
U2NhbGUuIFVsdGltYXRlbHksIHRoZQorICAgICAgICAvLyB0cmFuc2Zvcm0gc2hvdWxkIG1hcCAo
MCwgMCkgdG8gY29udGVudHNTY2FsZSAqIHBvc2l0aW9uLCBhbmQgcHJlc2VydmUgZGlzdGFuY2Vz
LgorICAgICAgICAvLyBOb3RlLCB0aGUgZm9sbG93aW5nIHR3byBsaW5lcyBhcmUgbm90IGVxdWl2
YWxlbnQgdG8gdHJhbnNsYXRpbmcgYnkgKGJvdW5kcy53aWR0aCgpLAorICAgICAgICAvLyBib3Vu
ZHMuaGVpZ2h0KS4gVGhlIGVmZmVjdCBvbiBtNDEgYW5kIG00MiB3b3VsZCBiZSBpZGVudGljYWws
IGJ1dCB0aGUgc2NhbGUKKyAgICAgICAgLy8gYWZmZWN0cyB0aGUgZW50aXJlIG1hdHJpeC4gV2Ug
bmVlZCB0byBzY2FsZSB0aGVzZSBvdGhlciBlbnRyaWVzIHRvIGF2b2lkCisgICAgICAgIC8vIGRv
dWJsZSBzY2FsaW5nOyB3ZSBtdXN0IHJlbWFpbiBpbiBwaHlzaWNhbCBwaXhlbHMuCisgICAgICAg
IHN1cmZhY2VPcmlnaW5UcmFuc2Zvcm0uc2NhbGUoMSAvIGNvbnRlbnRzU2NhbGUpOworICAgICAg
ICBzdXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC0wLjUgKiB0cmFuc2Zvcm1lZExh
eWVyUmVjdC53aWR0aCgpLCAtMC41ICogdHJhbnNmb3JtZWRMYXllclJlY3QuaGVpZ2h0KCksIDAp
OworICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXRPcmlnaW5UcmFuc2Zvcm0oc3VyZmFjZU9yaWdp
blRyYW5zZm9ybSk7CisKICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0VGFyZ2V0U3VyZmFjZVRy
YW5zZm9ybXNBcmVBbmltYXRpbmcoYW5pbWF0aW5nVHJhbnNmb3JtVG9UYXJnZXQpOwogICAgICAg
ICByZW5kZXJTdXJmYWNlLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmcoYW5p
bWF0aW5nVHJhbnNmb3JtVG9TY3JlZW4pOwogICAgICAgICBhbmltYXRpbmdUcmFuc2Zvcm1Ub1Rh
cmdldCA9IGZhbHNlOwogICAgICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybUlzQW5pbWF0aW5n
KGFuaW1hdGluZ1RyYW5zZm9ybVRvVGFyZ2V0KTsKICAgICAgICAgbGF5ZXItPnNldFNjcmVlblNw
YWNlVHJhbnNmb3JtSXNBbmltYXRpbmcoYW5pbWF0aW5nVHJhbnNmb3JtVG9TY3JlZW4pOwogCi0g
ICAgICAgIC8vIFVwZGF0ZSB0aGUgYWdncmVnYXRlIGhpZXJhcmNoeSBtYXRyaXggdG8gaW5jbHVk
ZSB0aGUgdHJhbnNmb3JtIG9mIHRoZQotICAgICAgICAvLyBuZXdseSBjcmVhdGVkIFJlbmRlclN1
cmZhY2UuCi0gICAgICAgIG5leHRIaWVyYXJjaHlNYXRyaXgubXVsdGlwbHkocmVuZGVyU3VyZmFj
ZS0+b3JpZ2luVHJhbnNmb3JtKCkpOworICAgICAgICAvLyBVcGRhdGUgdGhlIGFnZ3JlZ2F0ZSBo
aWVyYXJjaHkgbWF0cml4IHRvIGluY2x1ZGUgdGhlIHRyYW5zZm9ybSBvZiB0aGUgbmV3bHkgY3Jl
YXRlZCBSZW5kZXJTdXJmYWNlLgorICAgICAgICBuZXh0SGllcmFyY2h5TWF0cml4Lm11bHRpcGx5
KHN1cmZhY2VPcmlnaW5UcmFuc2Zvcm0pOwogCiAgICAgICAgIC8vIFRoZSBuZXcgcmVuZGVyU3Vy
ZmFjZSBoZXJlIHdpbGwgY29ycmVjdGx5IGNsaXAgdGhlIGVudGlyZSBzdWJ0cmVlLiBTbywgd2Ug
ZG8KICAgICAgICAgLy8gbm90IG5lZWQgdG8gY29udGludWUgcHJvcGFnYXRpbmcgdGhlIGNsaXBw
aW5nIHN0YXRlIGZ1cnRoZXIgZG93biB0aGUgdHJlZS4gVGhpcwpAQCAtNjI5LDEwICs2MjYsMTAg
QEAgc3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNJbnRlcm5hbChMYXllclR5cGUq
IGxheWVyLCBMYXllclR5cGUqIHJvb3RMYXkKIAogICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LmFwcGVuZChsYXllcik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbGF5ZXItPnNldERyYXdU
cmFuc2Zvcm0oZHJhd1RyYW5zZm9ybSk7CisgICAgICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3Jt
KGNvbWJpbmVkVHJhbnNmb3JtKTsKICAgICAgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm1Jc0Fu
aW1hdGluZyhhbmltYXRpbmdUcmFuc2Zvcm1Ub1RhcmdldCk7CiAgICAgICAgIGxheWVyLT5zZXRT
Y3JlZW5TcGFjZVRyYW5zZm9ybUlzQW5pbWF0aW5nKGFuaW1hdGluZ1RyYW5zZm9ybVRvU2NyZWVu
KTsKLSAgICAgICAgc3VibGF5ZXJNYXRyaXggPSBjb21iaW5lZFRyYW5zZm9ybTsKKyAgICAgICAg
dHJhbnNmb3JtZWRMYXllclJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KENDTWF0aFV0aWw6Om1hcENs
aXBwZWRSZWN0KGxheWVyLT5kcmF3VHJhbnNmb3JtKCksIGxheWVyUmVjdCkpOwogCiAgICAgICAg
IGxheWVyLT5zZXREcmF3T3BhY2l0eShkcmF3T3BhY2l0eSk7CiAgICAgICAgIGxheWVyLT5zZXRE
cmF3T3BhY2l0eUlzQW5pbWF0aW5nKGRyYXdPcGFjaXR5SXNBbmltYXRpbmcpOwpAQCAtNjQ1LDcg
KzY0Miw3IEBAIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zSW50ZXJuYWwoTGF5
ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290TGF5CiAgICAgICAgICAgICBzdWJ0cmVlU2hv
dWxkQmVDbGlwcGVkID0gYW5jZXN0b3JDbGlwc1N1YnRyZWU7CiAgICAgICAgICAgICBpZiAoYW5j
ZXN0b3JDbGlwc1N1YnRyZWUpCiAgICAgICAgICAgICAgICAgY2xpcFJlY3RGb3JTdWJ0cmVlID0g
Y2xpcFJlY3RGcm9tQW5jZXN0b3I7Ci0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gTGF5
ZXJzIHRoYXQgYXJlIG5vdCB0aGVpciBvd24gcmVuZGVyVGFyZ2V0IHdpbGwgcmVuZGVyIGludG8g
dGhlIHRhcmdldCBvZiB0aGVpciBuZWFyZXN0IGFuY2VzdG9yLgogICAgICAgICAgICAgbGF5ZXIt
PnNldFJlbmRlclRhcmdldChsYXllci0+cGFyZW50KCktPnJlbmRlclRhcmdldCgpKTsKICAgICAg
ICAgfSBlbHNlIHsKQEAgLTY2MSwxNyArNjU4LDI0IEBAIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURy
YXdUcmFuc2Zvcm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290TGF5
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBJbnRSZWN0IHJlY3RJblRhcmdldFNwYWNlID0gZW5j
bG9zaW5nSW50UmVjdChDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChsYXllci0+ZHJhd1RyYW5z
Zm9ybSgpLCBjb250ZW50UmVjdCkpOwotCiAgICAgaWYgKGxheWVyQ2xpcHNTdWJ0cmVlKGxheWVy
KSkgewogICAgICAgICBzdWJ0cmVlU2hvdWxkQmVDbGlwcGVkID0gdHJ1ZTsKICAgICAgICAgaWYg
KGFuY2VzdG9yQ2xpcHNTdWJ0cmVlICYmICFsYXllci0+cmVuZGVyU3VyZmFjZSgpKSB7CiAgICAg
ICAgICAgICBjbGlwUmVjdEZvclN1YnRyZWUgPSBjbGlwUmVjdEZyb21BbmNlc3RvcjsKLSAgICAg
ICAgICAgIGNsaXBSZWN0Rm9yU3VidHJlZS5pbnRlcnNlY3QocmVjdEluVGFyZ2V0U3BhY2UpOwor
ICAgICAgICAgICAgY2xpcFJlY3RGb3JTdWJ0cmVlLmludGVyc2VjdCh0cmFuc2Zvcm1lZExheWVy
UmVjdCk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgY2xpcFJlY3RGb3JTdWJ0cmVlID0g
cmVjdEluVGFyZ2V0U3BhY2U7CisgICAgICAgICAgICBjbGlwUmVjdEZvclN1YnRyZWUgPSB0cmFu
c2Zvcm1lZExheWVyUmVjdDsKICAgICB9CiAKKyAgICAvLyBOb3RlIHRoYXQgYXQgdGhpcyBwb2lu
dCwgbGF5ZXItPmRyYXdUcmFuc2Zvcm0oKSBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMg
bG9jYWwgdmFyaWFibGUgZHJhd1RyYW5zZm9ybS4KKyAgICAvLyBsYXllclNjcmVlblNwYWNlVHJh
bnNmb3JtIHJlcHJlc2VudHMgdGhlIHRyYW5zZm9ybSBiZXR3ZWVuIHJvb3QgbGF5ZXIncyAic2Ny
ZWVuIHNwYWNlIiBhbmQgbG9jYWwgbGF5ZXIgc3BhY2UuCisgICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggbGF5ZXJTY3JlZW5TcGFjZVRyYW5zZm9ybSA9IG5leHRIaWVyYXJjaHlNYXRyaXg7Cisg
ICAgbGF5ZXJTY3JlZW5TcGFjZVRyYW5zZm9ybS5tdWx0aXBseShsYXllci0+ZHJhd1RyYW5zZm9y
bSgpKTsKKyAgICBsYXllclNjcmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC0wLjUgKiBi
b3VuZHMud2lkdGgoKSwgLTAuNSAqIGJvdW5kcy5oZWlnaHQoKSwgMCk7CisgICAgbGF5ZXItPnNl
dFNjcmVlblNwYWNlVHJhbnNmb3JtKGxheWVyU2NyZWVuU3BhY2VUcmFuc2Zvcm0pOworCisgICAg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggc3VibGF5ZXJNYXRyaXggPSBsYXllci0+ZHJhd1RyYW5z
Zm9ybSgpOworCiAgICAgLy8gRmxhdHRlbiB0byAyRCBpZiB0aGUgbGF5ZXIgZG9lc24ndCBwcmVz
ZXJ2ZSAzRC4KICAgICBpZiAoIWxheWVyLT5wcmVzZXJ2ZXMzRCgpKSB7CiAgICAgICAgIHN1Ymxh
eWVyTWF0cml4LnNldE0xMygwKTsKQEAgLTcxNiwxMiArNzIwLDEyIEBAIHN0YXRpYyB2b2lkIGNh
bGN1bGF0ZURyYXdUcmFuc2Zvcm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBl
KiByb290TGF5CiAgICAgLy8gQ29tcHV0ZSB0aGUgdG90YWwgZHJhd2FibGVDb250ZW50UmVjdCBm
b3IgdGhpcyBzdWJ0cmVlICh0aGUgcmVjdCBpcyBpbiB0YXJnZXRTdXJmYWNlIHNwYWNlKQogICAg
IEludFJlY3QgbG9jYWxEcmF3YWJsZUNvbnRlbnRSZWN0T2ZTdWJ0cmVlID0gYWNjdW11bGF0ZWRE
cmF3YWJsZUNvbnRlbnRSZWN0T2ZDaGlsZHJlbjsKICAgICBpZiAobGF5ZXItPmRyYXdzQ29udGVu
dCgpKQotICAgICAgICBsb2NhbERyYXdhYmxlQ29udGVudFJlY3RPZlN1YnRyZWUudW5pdGUocmVj
dEluVGFyZ2V0U3BhY2UpOworICAgICAgICBsb2NhbERyYXdhYmxlQ29udGVudFJlY3RPZlN1YnRy
ZWUudW5pdGUodHJhbnNmb3JtZWRMYXllclJlY3QpOwogICAgIGlmIChzdWJ0cmVlU2hvdWxkQmVD
bGlwcGVkKQogICAgICAgICBsb2NhbERyYXdhYmxlQ29udGVudFJlY3RPZlN1YnRyZWUuaW50ZXJz
ZWN0KGNsaXBSZWN0Rm9yU3VidHJlZSk7CiAKICAgICAvLyBDb21wdXRlIHRoZSBsYXllcidzIGRy
YXdhYmxlIGNvbnRlbnQgcmVjdCAodGhlIHJlY3QgaXMgaW4gdGFyZ2V0U3VyZmFjZSBzcGFjZSkK
LSAgICBJbnRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3RPZkxheWVyID0gcmVjdEluVGFyZ2V0U3Bh
Y2U7CisgICAgSW50UmVjdCBkcmF3YWJsZUNvbnRlbnRSZWN0T2ZMYXllciA9IHRyYW5zZm9ybWVk
TGF5ZXJSZWN0OwogICAgIGlmIChzdWJ0cmVlU2hvdWxkQmVDbGlwcGVkKQogICAgICAgICBkcmF3
YWJsZUNvbnRlbnRSZWN0T2ZMYXllci5pbnRlcnNlY3QoY2xpcFJlY3RGb3JTdWJ0cmVlKTsKICAg
ICBsYXllci0+c2V0RHJhd2FibGVDb250ZW50UmVjdChkcmF3YWJsZUNvbnRlbnRSZWN0T2ZMYXll
cik7CkBAIC03MzcsNiArNzQxLDkgQEAgc3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RMYXkKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0Q2xpcFJlY3QoSW50UmVjdCgpKTsK
IAorICAgICAgICAvLyBSZXN0cmljdCB0aGUgUmVuZGVyU3VyZmFjZSBzaXplIHRvIHRoZSBwb3J0
aW9uIHRoYXQncyB2aXNpYmxlLgorICAgICAgICBGbG9hdFNpemUgY2VudGVyT2Zmc2V0RHVlVG9D
bGlwcGluZzsKKwogICAgICAgICAvLyBEb24ndCBjbGlwIGlmIHRoZSBsYXllciBpcyByZWZsZWN0
ZWQgYXMgdGhlIHJlZmxlY3Rpb24gc2hvdWxkbid0IGJlCiAgICAgICAgIC8vIGNsaXBwZWQuIElm
IHRoZSBsYXllciBpcyBhbmltYXRpbmcsIHRoZW4gdGhlIHN1cmZhY2UncyB0cmFuc2Zvcm0gdG8K
ICAgICAgICAgLy8gaXRzIHRhcmdldCBpcyBub3Qga25vd24gb24gdGhlIG1haW4gdGhyZWFkLCBh
bmQgd2Ugc2hvdWxkIG5vdCB1c2UgaXQKQEAgLTc0Nyw2ICs3NTQsOCBAQCBzdGF0aWMgdm9pZCBj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0ludGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyVHlw
ZSogcm9vdExheQogICAgICAgICAgICAgICAgIEludFJlY3Qgc3VyZmFjZUNsaXBSZWN0ID0gQ0NM
YXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlUmVjdChyZW5kZXJTdXJmYWNlLT5j
bGlwUmVjdCgpLCBjbGlwcGVkQ29udGVudFJlY3QsIHJlbmRlclN1cmZhY2UtPm9yaWdpblRyYW5z
Zm9ybSgpKTsKICAgICAgICAgICAgICAgICBjbGlwcGVkQ29udGVudFJlY3QuaW50ZXJzZWN0KHN1
cmZhY2VDbGlwUmVjdCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBGbG9hdFBvaW50IGNs
aXBwZWRTdXJmYWNlQ2VudGVyID0gRmxvYXRSZWN0KGNsaXBwZWRDb250ZW50UmVjdCkuY2VudGVy
KCk7CisgICAgICAgICAgICBjZW50ZXJPZmZzZXREdWVUb0NsaXBwaW5nID0gY2xpcHBlZFN1cmZh
Y2VDZW50ZXIgLSBzdXJmYWNlQ2VudGVyOwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlIFJl
bmRlclN1cmZhY2UgYmFja2luZyB0ZXh0dXJlIGNhbm5vdCBleGNlZWQgdGhlIG1heGltdW0gc3Vw
cG9ydGVkCkBAIC03NTksOCArNzY4LDEyIEBAIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290TGF5CiAKICAg
ICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0Q29udGVudFJlY3QoY2xpcHBlZENvbnRlbnRSZWN0KTsK
IAorICAgICAgICAvLyBBZGp1c3QgdGhlIG9yaWdpbiBvZiB0aGUgdHJhbnNmb3JtIHRvIGJlIHRo
ZSBjZW50ZXIgb2YgdGhlIHJlbmRlciBzdXJmYWNlLgorICAgICAgICBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBkcmF3VHJhbnNmb3JtID0gcmVuZGVyU3VyZmFjZS0+b3JpZ2luVHJhbnNmb3JtKCk7
CisgICAgICAgIGRyYXdUcmFuc2Zvcm0udHJhbnNsYXRlM2Qoc3VyZmFjZUNlbnRlci54KCkgKyBj
ZW50ZXJPZmZzZXREdWVUb0NsaXBwaW5nLndpZHRoKCksIHN1cmZhY2VDZW50ZXIueSgpICsgY2Vu
dGVyT2Zmc2V0RHVlVG9DbGlwcGluZy5oZWlnaHQoKSwgMCk7CisgICAgICAgIHJlbmRlclN1cmZh
Y2UtPnNldERyYXdUcmFuc2Zvcm0oZHJhd1RyYW5zZm9ybSk7CisKICAgICAgICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggc2NyZWVuU3BhY2VUcmFuc2Zvcm0gPSBsYXllci0+c2NyZWVuU3BhY2VU
cmFuc2Zvcm0oKTsKLSAgICAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBiZSBjb25zaXN0ZW50
LgogICAgICAgICAvLyBUaGUgbGF5ZXIncyBzY3JlZW4gc3BhY2UgdHJhbnNmb3JtIG9wZXJhdGVz
IG9uIGxheWVyIHJlY3RzLCBidXQgdGhlIHN1cmZhY2VzCiAgICAgICAgIC8vIHNjcmVlbiBzcGFj
ZSB0cmFuc2Zvcm0gb3BlcmF0ZXMgb24gc3VyZmFjZSByZWN0cywgd2hpY2ggYXJlIGluIHBoeXNp
Y2FsIHBpeGVscywKICAgICAgICAgLy8gc28gd2UgaGF2ZSB0byAndW5kbycgdGhlIHNjYWxlIGhl
cmUuCkBAIC03NjgsNiArNzgxLDIwIEBAIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290TGF5CiAgICAgICAg
IHJlbmRlclN1cmZhY2UtPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHNjcmVlblNwYWNlVHJhbnNm
b3JtKTsKIAogICAgICAgICBpZiAobGF5ZXItPnJlcGxpY2FMYXllcigpKSB7CisgICAgICAgICAg
ICAvLyBDb21wdXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggdXNlZCB0byBkcmF3IHRoZSBz
dXJmYWNlJ3MgcmVwbGljYSB0byB0aGUgdGFyZ2V0IHN1cmZhY2UuCisgICAgICAgICAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhRHJhd1RyYW5zZm9ybSA9IHJlbmRlclN1cmZhY2Ut
Pm9yaWdpblRyYW5zZm9ybSgpOworCisgICAgICAgICAgICByZXBsaWNhRHJhd1RyYW5zZm9ybS5z
Y2FsZShjb250ZW50c1NjYWxlKTsKKyAgICAgICAgICAgIHJlcGxpY2FEcmF3VHJhbnNmb3JtLnRy
YW5zbGF0ZShsYXllci0+cmVwbGljYUxheWVyKCktPnBvc2l0aW9uKCkueCgpICsgbGF5ZXItPnJl
cGxpY2FMYXllcigpLT5hbmNob3JQb2ludCgpLngoKSAqIGJvdW5kcy53aWR0aCgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLT5yZXBsaWNhTGF5ZXIo
KS0+cG9zaXRpb24oKS55KCkgKyBsYXllci0+cmVwbGljYUxheWVyKCktPmFuY2hvclBvaW50KCku
eSgpICogYm91bmRzLmhlaWdodCgpKTsKKyAgICAgICAgICAgIHJlcGxpY2FEcmF3VHJhbnNmb3Jt
Lm11bHRpcGx5KGxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+dHJhbnNmb3JtKCkpOworICAgICAgICAg
ICAgRmxvYXRQb2ludCBsYXllclNwYWNlU3VyZmFjZUNlbnRlciA9IHN1cmZhY2VDZW50ZXI7Cisg
ICAgICAgICAgICBsYXllclNwYWNlU3VyZmFjZUNlbnRlci5zY2FsZSgxIC8gY29udGVudHNTY2Fs
ZSwgMSAvIGNvbnRlbnRzU2NhbGUpOworICAgICAgICAgICAgcmVwbGljYURyYXdUcmFuc2Zvcm0u
dHJhbnNsYXRlKGxheWVyU3BhY2VTdXJmYWNlQ2VudGVyLngoKSAtIGxheWVyLT5yZXBsaWNhTGF5
ZXIoKS0+YW5jaG9yUG9pbnQoKS54KCkgKiBib3VuZHMud2lkdGgoKSwgbGF5ZXJTcGFjZVN1cmZh
Y2VDZW50ZXIueSgpIC0gbGF5ZXItPnJlcGxpY2FMYXllcigpLT5hbmNob3JQb2ludCgpLnkoKSAq
IGJvdW5kcy5oZWlnaHQoKSk7CisgICAgICAgICAgICByZXBsaWNhRHJhd1RyYW5zZm9ybS5zY2Fs
ZSgxIC8gY29udGVudHNTY2FsZSk7CisKKyAgICAgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldFJl
cGxpY2FEcmF3VHJhbnNmb3JtKHJlcGxpY2FEcmF3VHJhbnNmb3JtKTsKKwogICAgICAgICAgICAg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggc3VyZmFjZU9yaWdpblRvUmVwbGljYU9yaWdpblRyYW5z
Zm9ybTsKICAgICAgICAgICAgIHN1cmZhY2VPcmlnaW5Ub1JlcGxpY2FPcmlnaW5UcmFuc2Zvcm0u
c2NhbGUoY29udGVudHNTY2FsZSk7CiAgICAgICAgICAgICBzdXJmYWNlT3JpZ2luVG9SZXBsaWNh
T3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZShsYXllci0+cmVwbGljYUxheWVyKCktPnBvc2l0aW9u
KCkueCgpICsgbGF5ZXItPnJlcGxpY2FMYXllcigpLT5hbmNob3JQb2ludCgpLngoKSAqIGJvdW5k
cy53aWR0aCgpLApAQCAtNzc5LDcgKzgwNiw2IEBAIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zSW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXJUeXBlKiByb290TGF5CiAg
ICAgICAgICAgICAvLyBDb21wdXRlIHRoZSByZXBsaWNhJ3MgIm9yaWdpblRyYW5zZm9ybSIgdGhh
dCBtYXBzIGZyb20gdGhlIHJlcGxpY2EncyBvcmlnaW4gc3BhY2UgdG8gdGhlIHRhcmdldCBzdXJm
YWNlIG9yaWdpbiBzcGFjZS4KICAgICAgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJl
cGxpY2FPcmlnaW5UcmFuc2Zvcm0gPSBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5vcmlnaW5UcmFu
c2Zvcm0oKSAqIHN1cmZhY2VPcmlnaW5Ub1JlcGxpY2FPcmlnaW5UcmFuc2Zvcm07CiAgICAgICAg
ICAgICByZW5kZXJTdXJmYWNlLT5zZXRSZXBsaWNhT3JpZ2luVHJhbnNmb3JtKHJlcGxpY2FPcmln
aW5UcmFuc2Zvcm0pOwotICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0UmVwbGljYURyYXdU
cmFuc2Zvcm0ocmVwbGljYU9yaWdpblRyYW5zZm9ybSk7CiAKICAgICAgICAgICAgIC8vIENvbXB1
dGUgdGhlIHJlcGxpY2EncyAic2NyZWVuU3BhY2VUcmFuc2Zvcm0iIHRoYXQgbWFwcyBmcm9tIHRo
ZSByZXBsaWNhJ3Mgb3JpZ2luIHNwYWNlIHRvIHRoZSBzY3JlZW4ncyBvcmlnaW4gc3BhY2UuCiAg
ICAgICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhU2NyZWVuU3BhY2VUcmFu
c2Zvcm0gPSBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpICog
c3VyZmFjZU9yaWdpblRvUmVwbGljYU9yaWdpblRyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09j
Y2x1c2lvblRyYWNrZXIuY3BwCmluZGV4IGMxYTM4Y2EyYzAwZTY0MzkzN2FhYjZiODkwOTlkZDQw
MTc1YWFhYTIuLjM5NDYxNTc4Zjg3MTM1YTZlN2Q0OWEyN2RkMjQ4MzkyYjk0N2Q2NjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2Nj
bHVzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcApAQCAtMjg0LDYgKzI4NCwyOCBAQCBz
dGF0aWMgaW5saW5lIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1NjcmVlblNwYWNl
VHJhbnNmb3JtKGNvbnN0IExheWVyVAogICAgIHJldHVybiB0cmFuc2Zvcm07CiB9CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK3N0YXRpYyBpbmxpbmUgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggY29udGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9ybShjb25zdCBMYXllclR5cGUqIGxh
eWVyKQoreworICAgIEFTU0VSVChsYXllclRyYW5zZm9ybXNUb1RhcmdldEtub3duKGxheWVyKSk7
CisgICAgSW50U2l6ZSBib3VuZHNJbkxheWVyU3BhY2UgPSBsYXllci0+Ym91bmRzKCk7CisgICAg
SW50U2l6ZSBib3VuZHNJbkNvbnRlbnRTcGFjZSA9IGxheWVyLT5jb250ZW50Qm91bmRzKCk7CisK
KyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBsYXllci0+ZHJhd1RyYW5z
Zm9ybSgpOworCisgICAgaWYgKGJvdW5kc0luQ29udGVudFNwYWNlLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIHRyYW5zZm9ybTsKKworICAgIC8vIFNjYWxlIGZyb20gY29udGVudCBzcGFjZSB0
byBsYXllciBzcGFjZQorICAgIHRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oYm91bmRzSW5MYXll
clNwYWNlLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGJvdW5kc0luQ29udGVudFNwYWNl
LndpZHRoKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzSW5MYXllclNw
YWNlLmhlaWdodCgpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihib3VuZHNJbkNvbnRlbnRTcGFjZS5o
ZWlnaHQoKSkpOworCisgICAgLy8gVGhlIGRyYXcgdHJhbnNmb3JtIGV4cGVjdHMgdGhlIG9yaWdp
biB0byBiZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBsYXllci4KKyAgICB0cmFuc2Zvcm0udHJhbnNs
YXRlKC1ib3VuZHNJbkNvbnRlbnRTcGFjZS53aWR0aCgpIC8gMi4wLCAtYm91bmRzSW5Db250ZW50
U3BhY2UuaGVpZ2h0KCkgLyAyLjApOworCisgICAgcmV0dXJuIHRyYW5zZm9ybTsKK30KKwogLy8g
RklYTUU6IFJlbW92ZSB1c2VQYWludFRyYWNraW5nIHdoZW4gcGFpbnQgdHJhY2tpbmcgaXMgb24g
Zm9yIHBhaW50IGN1bGxpbmcuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CiBzdGF0aWMg
aW5saW5lIHZvaWQgYWRkT2NjbHVzaW9uQmVoaW5kTGF5ZXIoUmVnaW9uJiByZWdpb24sIGNvbnN0
IExheWVyVHlwZSogbGF5ZXIsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGNvbnN0IFJlZ2lvbiYgb3BhcXVlQ29udGVudHMsIGNvbnN0IEludFJlY3QmIHNjaXNzb3JS
ZWN0LCBjb25zdCBJbnRTaXplJiBtaW5pbXVtVHJhY2tpbmdTaXplLCBWZWN0b3I8SW50UmVjdD4q
IG9jY2x1ZGluZ1NjcmVlblNwYWNlUmVjdHMpCkBAIC0zMjksNyArMzUxLDcgQEAgdm9pZCBDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjptYXJrT2Nj
bHVkZWRCZWhpbmRMYXkKIAogICAgIEludFJlY3Qgc2Npc3NvckluVGFyZ2V0ID0gbGF5ZXJTY2lz
c29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXllcik7CiAgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1Rv
VGFyZ2V0S25vd24obGF5ZXIpKQotICAgICAgICBhZGRPY2NsdXNpb25CZWhpbmRMYXllcjxMYXll
clR5cGU+KG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0LCBsYXllciwgbGF5ZXItPmRy
YXdUcmFuc2Zvcm0oKSwgb3BhcXVlQ29udGVudHMsIHNjaXNzb3JJblRhcmdldCwgbV9taW5pbXVt
VHJhY2tpbmdTaXplLCAwKTsKKyAgICAgICAgYWRkT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJU
eXBlPihtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCwgbGF5ZXIsIGNvbnRlbnRUb1Rh
cmdldFN1cmZhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG9wYXF1ZUNvbnRlbnRzLCBz
Y2lzc29ySW5UYXJnZXQsIG1fbWluaW11bVRyYWNraW5nU2l6ZSwgMCk7CiAKICAgICAvLyBXZSBt
dXN0IGNsaXAgdGhlIG9jY2x1c2lvbiB3aXRoaW4gdGhlIGxheWVyJ3Mgc2Npc3NvckluVGFyZ2V0
IHdpdGhpbiBzY3JlZW4gc3BhY2UgYXMgd2VsbC4gSWYgdGhlIHNjaXNzb3IgcmVjdCBjYW4ndCBi
ZSBtb3ZlZCB0byBzY3JlZW4gc3BhY2UgYW5kCiAgICAgLy8gcmVtYWluIHJlY3RpbGluZWFyLCB0
aGVuIHdlIGRvbid0IGFkZCBhbnkgb2NjbHVzaW9uIGluIHNjcmVlbiBzcGFjZS4KQEAgLTM2OCw3
ICszOTAsNyBAQCBib29sIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJT
dXJmYWNlVHlwZT46Om9jY2x1ZGVkKGNvbnN0IExheWVyVAogCiAgICAgQVNTRVJUKGxheWVyLT5y
ZW5kZXJUYXJnZXQoKSA9PSBtX3N0YWNrLmxhc3QoKS50YXJnZXQpOwogCi0gICAgaWYgKGxheWVy
VHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24obGF5ZXIpICYmIHRlc3RDb250ZW50UmVjdE9jY2x1ZGVk
KGNvbnRlbnRSZWN0LCBsYXllci0+ZHJhd1RyYW5zZm9ybSgpLCBsYXllclNjaXNzb3JSZWN0SW5U
YXJnZXRTdXJmYWNlKGxheWVyKSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQpKQor
ICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1RhcmdldEtub3duKGxheWVyKSAmJiB0ZXN0Q29udGVu
dFJlY3RPY2NsdWRlZChjb250ZW50UmVjdCwgY29udGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9y
bTxMYXllclR5cGU+KGxheWVyKSwgbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXll
ciksIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0KSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKICAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihsYXllcikgJiYgdGVz
dENvbnRlbnRSZWN0T2NjbHVkZWQoY29udGVudFJlY3QsIGNvbnRlbnRUb1NjcmVlblNwYWNlVHJh
bnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgbV9z
dGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4pKSB7CkBAIC00MjIsNyArNDQ0LDcgQEAgSW50
UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+
Ojp1bm9jY2x1ZGVkQ29udGVudFIKIAogICAgIEludFJlY3QgdW5vY2NsdWRlZEluVGFyZ2V0ID0g
Y29udGVudFJlY3Q7CiAgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24obGF5ZXIp
KQotICAgICAgICB1bm9jY2x1ZGVkSW5UYXJnZXQgPSBjb21wdXRlVW5vY2NsdWRlZENvbnRlbnRS
ZWN0KGNvbnRlbnRSZWN0LCBsYXllci0+ZHJhd1RyYW5zZm9ybSgpLCBsYXllclNjaXNzb3JSZWN0
SW5UYXJnZXRTdXJmYWNlKGxheWVyKSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQp
OworICAgICAgICB1bm9jY2x1ZGVkSW5UYXJnZXQgPSBjb21wdXRlVW5vY2NsdWRlZENvbnRlbnRS
ZWN0KGNvbnRlbnRSZWN0LCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtPExheWVyVHlw
ZT4obGF5ZXIpLCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVyKSwgbV9zdGFj
ay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQpOwogCiAgICAgaWYgKGhhc09jY2x1c2lvbkZyb21P
dXRzaWRlVGFyZ2V0U3VyZmFjZSkKICAgICAgICAgKmhhc09jY2x1c2lvbkZyb21PdXRzaWRlVGFy
Z2V0U3VyZmFjZSA9IChpbnRlcnNlY3Rpb24odW5vY2NsdWRlZEluU2NyZWVuLCB1bm9jY2x1ZGVk
SW5UYXJnZXQpICE9IHVub2NjbHVkZWRJblRhcmdldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNw
cAppbmRleCBjMWFmOWQxNDAwNTdkMTY0NjIyYzk5YTRiNDcxNWYyMzU5MjA5NTZkLi43NWI0ZTJk
NjdiZjRhODllYjEwMGM2ODBjYmY5MjdjZTRhZTA2OWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
cy5jcHAKQEAgLTEwNyw3ICsxMDcsNiBAQCB2b2lkIENDUmVuZGVyUGFzczo6YXBwZW5kUXVhZHNU
b0ZpbGxTY3JlZW4oQ0NMYXllckltcGwqIHJvb3RMYXllciwgU2tDb2xvciBzY3JlZQogICAgIC8v
IE1hbnVhbGx5IGNyZWF0ZSB0aGUgcXVhZCBzdGF0ZSBmb3IgdGhlIGd1dHRlciBxdWFkcywgYXMg
dGhlIHJvb3QgbGF5ZXIKICAgICAvLyBkb2Vzbid0IGhhdmUgYW55IGJvdW5kcyBhbmQgc28gY2Fu
J3QgZ2VuZXJhdGUgdGhpcyBpdHNlbGYuCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBz
aGFyZWRRdWFkU3RhdGUgPSByb290TGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZShtX3NoYXJl
ZFF1YWRTdGF0ZUxpc3Quc2l6ZSgpKTsKLSAgICBBU1NFUlQocm9vdExheWVyLT5zY3JlZW5TcGFj
ZVRyYW5zZm9ybSgpLmlzSW52ZXJ0aWJsZSgpKTsKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCB0cmFuc2Zvcm1Ub0xheWVyU3BhY2UgPSByb290TGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3Jt
KCkuaW52ZXJzZSgpOwogICAgIFZlY3RvcjxJbnRSZWN0PiBmaWxsUmVjdHMgPSBmaWxsUmVnaW9u
LnJlY3RzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWxsUmVjdHMuc2l6ZSgpOyAr
K2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCmluZGV4IDk1ZWYwYjljMjI2MjUw
NDJmNDAzNDU3MDUzYjg5ZTEwYjYzNmRlZTMuLjIyNDM0YzIwM2RiMDgzZDg3MGIwYmY2MGVlZjk3
NGFkOGJjMjZmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcApAQCAtNzUsOSAr
NzUsMTEgQEAgQ0NSZW5kZXJTdXJmYWNlOjp+Q0NSZW5kZXJTdXJmYWNlKCkKIAogRmxvYXRSZWN0
IENDUmVuZGVyU3VyZmFjZTo6ZHJhd2FibGVDb250ZW50UmVjdCgpIGNvbnN0CiB7Ci0gICAgRmxv
YXRSZWN0IGRyYXdhYmxlQ29udGVudFJlY3QgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdCht
X2RyYXdUcmFuc2Zvcm0sIG1fY29udGVudFJlY3QpOworICAgIEZsb2F0UmVjdCBsb2NhbENvbnRl
bnRSZWN0KC0wLjUgKiBtX2NvbnRlbnRSZWN0LndpZHRoKCksIC0wLjUgKiBtX2NvbnRlbnRSZWN0
LmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGVudFJlY3Qu
d2lkdGgoKSwgbV9jb250ZW50UmVjdC5oZWlnaHQoKSk7CisgICAgRmxvYXRSZWN0IGRyYXdhYmxl
Q29udGVudFJlY3QgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChtX2RyYXdUcmFuc2Zvcm0s
IGxvY2FsQ29udGVudFJlY3QpOwogICAgIGlmIChtX293bmluZ0xheWVyLT5oYXNSZXBsaWNhKCkp
Ci0gICAgICAgIGRyYXdhYmxlQ29udGVudFJlY3QudW5pdGUoQ0NNYXRoVXRpbDo6bWFwQ2xpcHBl
ZFJlY3QobV9yZXBsaWNhRHJhd1RyYW5zZm9ybSwgbV9jb250ZW50UmVjdCkpOworICAgICAgICBk
cmF3YWJsZUNvbnRlbnRSZWN0LnVuaXRlKENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KG1fcmVw
bGljYURyYXdUcmFuc2Zvcm0sIGxvY2FsQ29udGVudFJlY3QpKTsKIAogICAgIHJldHVybiBkcmF3
YWJsZUNvbnRlbnRSZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAKaW5kZXggMTRlODNhMDI2NTE5MTQ1MDdmMjI3ZTg0
YmRlZTAzNjFjYzU2YzkxZS4uOWFhNDEyMDkwMTlhMzAxOTk3MzI1NjFmNGM1MWNhMjA2NDQxMDg4
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFnZVRyYWNr
ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRGFtYWdlVHJh
Y2tlclRlc3QuY3BwCkBAIC05OSw3ICs5OSw2IEBAIFBhc3NPd25QdHI8Q0NMYXllckltcGw+IGNy
ZWF0ZVRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKQogICAgIHJvb3QtPnNldFBvc2l0aW9uKEZsb2F0
UG9pbnQ6Onplcm8oKSk7CiAgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVy
bygpKTsKICAgICByb290LT5zZXRCb3VuZHMoSW50U2l6ZSg1MDAsIDUwMCkpOwotICAgIHJvb3Qt
PnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSg1MDAsIDUwMCkpOwogICAgIHJvb3QtPnNldERyYXdz
Q29udGVudCh0cnVlKTsKICAgICByb290LT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAgICAgcm9v
dC0+cmVuZGVyU3VyZmFjZSgpLT5zZXRDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KCksIElu
dFNpemUoNTAwLCA1MDApKSk7CkBAIC0xMDcsNyArMTA2LDYgQEAgUGFzc093blB0cjxDQ0xheWVy
SW1wbD4gY3JlYXRlVGVzdFRyZWVXaXRoT25lU3VyZmFjZSgpCiAgICAgY2hpbGQtPnNldFBvc2l0
aW9uKEZsb2F0UG9pbnQoMTAwLCAxMDApKTsKICAgICBjaGlsZC0+c2V0QW5jaG9yUG9pbnQoRmxv
YXRQb2ludDo6emVybygpKTsKICAgICBjaGlsZC0+c2V0Qm91bmRzKEludFNpemUoMzAsIDMwKSk7
Ci0gICAgY2hpbGQtPnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSgzMCwgMzApKTsKICAgICBjaGls
ZC0+c2V0RHJhd3NDb250ZW50KHRydWUpOwogICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkLnJlbGVh
c2UoKSk7CiAKQEAgLTEyOSw3ICsxMjcsNiBAQCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVh
dGVUZXN0VHJlZVdpdGhUd29TdXJmYWNlcygpCiAgICAgcm9vdC0+c2V0UG9zaXRpb24oRmxvYXRQ
b2ludDo6emVybygpKTsKICAgICByb290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJv
KCkpOwogICAgIHJvb3QtPnNldEJvdW5kcyhJbnRTaXplKDUwMCwgNTAwKSk7Ci0gICAgcm9vdC0+
c2V0Q29udGVudEJvdW5kcyhJbnRTaXplKDUwMCwgNTAwKSk7CiAgICAgcm9vdC0+c2V0RHJhd3ND
b250ZW50KHRydWUpOwogICAgIHJvb3QtPmNyZWF0ZVJlbmRlclN1cmZhY2UoKTsKICAgICByb290
LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgSW50
U2l6ZSg1MDAsIDUwMCkpKTsKQEAgLTEzNywyNiArMTM0LDIyIEBAIFBhc3NPd25QdHI8Q0NMYXll
ckltcGw+IGNyZWF0ZVRlc3RUcmVlV2l0aFR3b1N1cmZhY2VzKCkKICAgICBjaGlsZDEtPnNldFBv
c2l0aW9uKEZsb2F0UG9pbnQoMTAwLCAxMDApKTsKICAgICBjaGlsZDEtPnNldEFuY2hvclBvaW50
KEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAgICAgY2hpbGQxLT5zZXRCb3VuZHMoSW50U2l6ZSgzMCwg
MzApKTsKLSAgICBjaGlsZDEtPnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSgzMCwgMzApKTsKICAg
ICBjaGlsZDEtPnNldE9wYWNpdHkoMC41KTsgLy8gd2l0aCBhIGNoaWxkIHRoYXQgZHJhd3NDb250
ZW50LCB0aGlzIHdpbGwgY2F1c2UgdGhlIGxheWVyIHRvIGNyZWF0ZSBpdHMgb3duIHJlbmRlclN1
cmZhY2UuCiAgICAgY2hpbGQxLT5zZXREcmF3c0NvbnRlbnQoZmFsc2UpOyAvLyB0aGlzIGxheWVy
IGRvZXMgbm90IGRyYXcsIGJ1dCBpcyBpbnRlbmRlZCB0byBjcmVhdGUgaXRzIG93biByZW5kZXJT
dXJmYWNlLgogCiAgICAgY2hpbGQyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDExLCAxMSkpOwog
ICAgIGNoaWxkMi0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAgICBjaGls
ZDItPnNldEJvdW5kcyhJbnRTaXplKDE4LCAxOCkpOwotICAgIGNoaWxkMi0+c2V0Q29udGVudEJv
dW5kcyhJbnRTaXplKDE4LCAxOCkpOwogICAgIGNoaWxkMi0+c2V0RHJhd3NDb250ZW50KHRydWUp
OwogCiAgICAgZ3JhbmRDaGlsZDEtPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMjAwLCAyMDApKTsK
ICAgICBncmFuZENoaWxkMS0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAg
ICBncmFuZENoaWxkMS0+c2V0Qm91bmRzKEludFNpemUoNiwgOCkpOwotICAgIGdyYW5kQ2hpbGQx
LT5zZXRDb250ZW50Qm91bmRzKEludFNpemUoNiwgOCkpOwogICAgIGdyYW5kQ2hpbGQxLT5zZXRE
cmF3c0NvbnRlbnQodHJ1ZSk7CiAKICAgICBncmFuZENoaWxkMi0+c2V0UG9zaXRpb24oRmxvYXRQ
b2ludCgxOTAsIDE5MCkpOwogICAgIGdyYW5kQ2hpbGQyLT5zZXRBbmNob3JQb2ludChGbG9hdFBv
aW50Ojp6ZXJvKCkpOwogICAgIGdyYW5kQ2hpbGQyLT5zZXRCb3VuZHMoSW50U2l6ZSg2LCA4KSk7
Ci0gICAgZ3JhbmRDaGlsZDItPnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSg2LCA4KSk7CiAgICAg
Z3JhbmRDaGlsZDItPnNldERyYXdzQ29udGVudCh0cnVlKTsKIAogICAgIGNoaWxkMS0+YWRkQ2hp
bGQoZ3JhbmRDaGlsZDEucmVsZWFzZSgpKTsKQEAgLTM2Nyw3ICszNjAsNiBAQCBURVNUX0YoQ0NE
YW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUGVyc3BlY3RpdmVDbGlwcGVkTGF5ZXIp
CiAgICAgLy8gU2V0IHVwIHRoZSBjaGlsZAogICAgIGNoaWxkLT5zZXRQb3NpdGlvbihGbG9hdFBv
aW50KDAsIDApKTsKICAgICBjaGlsZC0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAxMDApKTsKLSAg
ICBjaGlsZC0+c2V0Q29udGVudEJvdW5kcyhJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgY2hpbGQt
PnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwogICAgIGVtdWxhdGVEcmF3aW5nT25lRnJhbWUocm9v
dC5nZXQoKSk7CiAKQEAgLTUzNCw3ICs1MjYsNiBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVz
dCwgdmVyaWZ5RGFtYWdlRm9yQWRkaW5nQW5kUmVtb3ZpbmdMYXllcikKICAgICAgICAgY2hpbGQy
LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDQwMCwgMzgwKSk7CiAgICAgICAgIGNoaWxkMi0+c2V0
QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAgICAgICAgY2hpbGQyLT5zZXRCb3Vu
ZHMoSW50U2l6ZSg2LCA4KSk7Ci0gICAgICAgIGNoaWxkMi0+c2V0Q29udGVudEJvdW5kcyhJbnRT
aXplKDYsIDgpKTsKICAgICAgICAgY2hpbGQyLT5zZXREcmF3c0NvbnRlbnQodHJ1ZSk7CiAgICAg
ICAgIHJvb3QtPmFkZENoaWxkKGNoaWxkMi5yZWxlYXNlKCkpOwogICAgIH0KQEAgLTU3NCw3ICs1
NjUsNiBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yTmV3VW5j
aGFuZ2VkTGF5ZXIpCiAgICAgICAgIGNoaWxkMi0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCg0MDAs
IDM4MCkpOwogICAgICAgICBjaGlsZDItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8o
KSk7CiAgICAgICAgIGNoaWxkMi0+c2V0Qm91bmRzKEludFNpemUoNiwgOCkpOwotICAgICAgICBj
aGlsZDItPnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSg2LCA4KSk7CiAgICAgICAgIGNoaWxkMi0+
c2V0RHJhd3NDb250ZW50KHRydWUpOwogICAgICAgICBjaGlsZDItPnJlc2V0QWxsQ2hhbmdlVHJh
Y2tpbmdGb3JTdWJ0cmVlKCk7CiAgICAgICAgIC8vIFNhbml0eSBjaGVjayB0aGUgaW5pdGlhbCBj
b25kaXRpb25zIG9mIHRoZSB0ZXN0LCBpZiB0aGVzZSBhc3NlcnRzIHRyaWdnZXIsIGl0CkBAIC02
MDQsNyArNTk0LDYgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZv
ck11bHRpcGxlTGF5ZXJzKQogICAgICAgICBjaGlsZDItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQo
NDAwLCAzODApKTsKICAgICAgICAgY2hpbGQyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6
ZXJvKCkpOwogICAgICAgICBjaGlsZDItPnNldEJvdW5kcyhJbnRTaXplKDYsIDgpKTsKLSAgICAg
ICAgY2hpbGQyLT5zZXRDb250ZW50Qm91bmRzKEludFNpemUoNiwgOCkpOwogICAgICAgICBjaGls
ZDItPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICAgICAgcm9vdC0+YWRkQ2hpbGQoY2hpbGQy
LnJlbGVhc2UoKSk7CiAgICAgfQpAQCAtODIzLDcgKzgxMiw2IEBAIFRFU1RfRihDQ0RhbWFnZVRy
YWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JSZXBsaWNhKQogICAgICAgICBncmFuZENoaWxkMy0+
c2V0UG9zaXRpb24oRmxvYXRQb2ludCgyNDAsIDI0MCkpOwogICAgICAgICBncmFuZENoaWxkMy0+
c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludDo6emVybygpKTsKICAgICAgICAgZ3JhbmRDaGlsZDMt
PnNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwotICAgICAgICBncmFuZENoaWxkMy0+c2V0Q29u
dGVudEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwogICAgICAgICBncmFuZENoaWxkMy0+c2V0RHJh
d3NDb250ZW50KHRydWUpOwogICAgICAgICBjaGlsZDEtPmFkZENoaWxkKGdyYW5kQ2hpbGQzLnJl
bGVhc2UoKSk7CiAgICAgfQpAQCAtOTA2LDcgKzg5NCw2IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNr
ZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JNYXNrKQogICAgICAgICBtYXNrTGF5ZXItPnNldFBvc2l0
aW9uKGNoaWxkLT5wb3NpdGlvbigpKTsKICAgICAgICAgbWFza0xheWVyLT5zZXRBbmNob3JQb2lu
dChGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgICAgICBtYXNrTGF5ZXItPnNldEJvdW5kcyhjaGls
ZC0+Ym91bmRzKCkpOwotICAgICAgICBtYXNrTGF5ZXItPnNldENvbnRlbnRCb3VuZHMoY2hpbGQt
PmJvdW5kcygpKTsKICAgICAgICAgY2hpbGQtPnNldE1hc2tMYXllcihtYXNrTGF5ZXIucmVsZWFz
ZSgpKTsKICAgICB9CiAgICAgQ0NMYXllckltcGwqIG1hc2tMYXllciA9IGNoaWxkLT5tYXNrTGF5
ZXIoKTsKQEAgLTkxOCw3ICs5MDUsNiBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVy
aWZ5RGFtYWdlRm9yTWFzaykKICAgICAgICAgZ3JhbmRDaGlsZC0+c2V0UG9zaXRpb24oRmxvYXRQ
b2ludCgyLCAyKSk7CiAgICAgICAgIGdyYW5kQ2hpbGQtPnNldEFuY2hvclBvaW50KEZsb2F0UG9p
bnQ6Onplcm8oKSk7CiAgICAgICAgIGdyYW5kQ2hpbGQtPnNldEJvdW5kcyhJbnRTaXplKDIsIDIp
KTsKLSAgICAgICAgZ3JhbmRDaGlsZC0+c2V0Q29udGVudEJvdW5kcyhJbnRTaXplKDIsIDIpKTsK
ICAgICAgICAgZ3JhbmRDaGlsZC0+c2V0RHJhd3NDb250ZW50KHRydWUpOwogICAgICAgICBjaGls
ZC0+YWRkQ2hpbGQoZ3JhbmRDaGlsZC5yZWxlYXNlKCkpOwogICAgIH0KQEAgLTEwMDMsNyArOTg5
LDYgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclJlcGxpY2FN
YXNrKQogICAgICAgICByZXBsaWNhTWFza0xheWVyLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6
ZXJvKCkpOwogICAgICAgICByZXBsaWNhTWFza0xheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBv
aW50Ojp6ZXJvKCkpOwogICAgICAgICByZXBsaWNhTWFza0xheWVyLT5zZXRCb3VuZHMoZ3JhbmRD
aGlsZDEtPmJvdW5kcygpKTsKLSAgICAgICAgcmVwbGljYU1hc2tMYXllci0+c2V0Q29udGVudEJv
dW5kcyhncmFuZENoaWxkMS0+Ym91bmRzKCkpOwogICAgICAgICBncmFuZENoaWxkMVJlcGxpY2Et
PnNldE1hc2tMYXllcihyZXBsaWNhTWFza0xheWVyLnJlbGVhc2UoKSk7CiAgICAgfQogICAgIEND
TGF5ZXJJbXBsKiByZXBsaWNhTWFza0xheWVyID0gZ3JhbmRDaGlsZDFSZXBsaWNhLT5tYXNrTGF5
ZXIoKTsKQEAgLTEwNjUsNyArMTA1MCw2IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2
ZXJpZnlEYW1hZ2VGb3JSZXBsaWNhTWFza1dpdGhBbmNob3IpCiAgICAgICAgIHJlcGxpY2FNYXNr
TGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQ6Onplcm8oKSk7CiAgICAgICAgIHJlcGxpY2FN
YXNrTGF5ZXItPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7IC8vIG5vdGUsIHRo
aXMgaXMgbm90IHRoZSBhbmNob3IgYmVpbmcgdGVzdGVkLgogICAgICAgICByZXBsaWNhTWFza0xh
eWVyLT5zZXRCb3VuZHMoZ3JhbmRDaGlsZDEtPmJvdW5kcygpKTsKLSAgICAgICAgcmVwbGljYU1h
c2tMYXllci0+c2V0Q29udGVudEJvdW5kcyhncmFuZENoaWxkMS0+Ym91bmRzKCkpOwogICAgICAg
ICBncmFuZENoaWxkMVJlcGxpY2EtPnNldE1hc2tMYXllcihyZXBsaWNhTWFza0xheWVyLnJlbGVh
c2UoKSk7CiAgICAgfQogICAgIENDTGF5ZXJJbXBsKiByZXBsaWNhTWFza0xheWVyID0gZ3JhbmRD
aGlsZDFSZXBsaWNhLT5tYXNrTGF5ZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclNvcnRlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHAKaW5kZXggOGZmY2VhMjRmNzQwZTQ3MjBjMGZh
M2UyODVjNmRhYjdmNTk5ZGM5Mi4uZDIzMWUxMjU5NzI2OGYxZjkxOThiNWI4YWEwNGQ1YjVkYzJi
ODcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyU29y
dGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyU29y
dGVyVGVzdC5jcHAKQEAgLTg5LDExICs4OSw5IEBAIFRFU1QoQ0NMYXllclNvcnRlclRlc3QsIFJp
Z2h0QW5nbGVPdmVybGFwKQogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGxlZnRGYWNlTWF0
cml4OwogICAgIGxlZnRGYWNlTWF0cml4LnJvdGF0ZTNkKDAsIDEsIDAsIC05MCk7CiAgICAgbGVm
dEZhY2VNYXRyaXgudHJhbnNsYXRlUmlnaHQzZCgtMSwgMCwgLTUpOwotICAgIGxlZnRGYWNlTWF0
cml4LnRyYW5zbGF0ZSgtMSwgLTEpOwogICAgIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUgbGVm
dEZhY2UoMiwgMiwgcGVyc3BlY3RpdmVNYXRyaXggKiBsZWZ0RmFjZU1hdHJpeCk7CiAgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbnRGYWNlTWF0cml4OwogICAgIGZyb250RmFjZU1hdHJp
eC50cmFuc2xhdGUzZCgwLCAwLCAtNCk7Ci0gICAgZnJvbnRGYWNlTWF0cml4LnRyYW5zbGF0ZSgt
MSwgLTEpOwogICAgIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUgZnJvbnRGYWNlKDIsIDIsIHBl
cnNwZWN0aXZlTWF0cml4ICogZnJvbnRGYWNlTWF0cml4KTsKIAogICAgIG92ZXJsYXBSZXN1bHQg
PSBDQ0xheWVyU29ydGVyOjpjaGVja092ZXJsYXAoJmZyb250RmFjZSwgJmxlZnRGYWNlLCB6VGhy
ZXNob2xkLCB3ZWlnaHQpOwpAQCAtMTEzLDEzICsxMTEsMTEgQEAgVEVTVChDQ0xheWVyU29ydGVy
VGVzdCwgSW50ZXJzZWN0aW5nTGF5ZXJPdmVybGFwKQogICAgIC8vIHZhbHVlcyBhdCB0aGUgb3Zl
cmxhcHBpbmcgZmVhdHVyZXMgYnV0IHRoZSB3ZWlnaHQgcmV0dXJuZWQgc2hvdWxkIGJlIHplcm8u
CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbnRGYWNlTWF0cml4OwogICAgIGZyb250
RmFjZU1hdHJpeC50cmFuc2xhdGUzZCgwLCAwLCAtNCk7Ci0gICAgZnJvbnRGYWNlTWF0cml4LnRy
YW5zbGF0ZSgtMSwgLTEpOwogICAgIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUgZnJvbnRGYWNl
KDIsIDIsIHBlcnNwZWN0aXZlTWF0cml4ICogZnJvbnRGYWNlTWF0cml4KTsKIAogICAgIFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4IHRocm91Z2hNYXRyaXg7CiAgICAgdGhyb3VnaE1hdHJpeC5yb3Rh
dGUzZCgwLCAxLCAwLCA0NSk7CiAgICAgdGhyb3VnaE1hdHJpeC50cmFuc2xhdGVSaWdodDNkKDAs
IDAsIC00KTsKLSAgICB0aHJvdWdoTWF0cml4LnRyYW5zbGF0ZSgtMSwgLTEpOwogICAgIENDTGF5
ZXJTb3J0ZXI6OkxheWVyU2hhcGUgcm90YXRlZEZhY2UoMiwgMiwgcGVyc3BlY3RpdmVNYXRyaXgg
KiB0aHJvdWdoTWF0cml4KTsKICAgICBvdmVybGFwUmVzdWx0ID0gQ0NMYXllclNvcnRlcjo6Y2hl
Y2tPdmVybGFwKCZmcm9udEZhY2UsICZyb3RhdGVkRmFjZSwgelRocmVzaG9sZCwgd2VpZ2h0KTsK
ICAgICBFWFBFQ1RfTkUoQ0NMYXllclNvcnRlcjo6Tm9uZSwgb3ZlcmxhcFJlc3VsdCk7CkBAIC0x
NDYsMTcgKzE0MiwxNCBAQCBURVNUKENDTGF5ZXJTb3J0ZXJUZXN0LCBMYXllcnNBdEFuZ2xlT3Zl
cmxhcCkKIAogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybUE7CiAgICAgdHJh
bnNmb3JtQS50cmFuc2xhdGUzZCgtNiwgMCwgMSk7Ci0gICAgdHJhbnNmb3JtQS50cmFuc2xhdGUo
LTQsIC0xMCk7CiAgICAgQ0NMYXllclNvcnRlcjo6TGF5ZXJTaGFwZSBsYXllckEoOCwgMjAsIHRy
YW5zZm9ybUEpOwogCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtQjsKICAg
ICB0cmFuc2Zvcm1CLnRyYW5zbGF0ZTNkKDYsIDAsIC0xKTsKLSAgICB0cmFuc2Zvcm1CLnRyYW5z
bGF0ZSgtNCwgLTEwKTsKICAgICBDQ0xheWVyU29ydGVyOjpMYXllclNoYXBlIGxheWVyQig4LCAy
MCwgdHJhbnNmb3JtQik7CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm1D
OwogICAgIHRyYW5zZm9ybUMucm90YXRlM2QoMCwgMSwgMCwgNDApOwotICAgIHRyYW5zZm9ybUMu
dHJhbnNsYXRlKC00LCAtMTApOwogICAgIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUgbGF5ZXJD
KDgsIDIwLCB0cmFuc2Zvcm1DKTsKIAogICAgIG92ZXJsYXBSZXN1bHQgPSBDQ0xheWVyU29ydGVy
OjpjaGVja092ZXJsYXAoJmxheWVyQSwgJmxheWVyQywgelRocmVzaG9sZCwgd2VpZ2h0KTsKQEAg
LTE4Myw3ICsxNzYsNiBAQCBURVNUKENDTGF5ZXJTb3J0ZXJUZXN0LCBMYXllcnNVbmRlclBhdGhv
bG9naWNhbFBlcnNwZWN0aXZlVHJhbnNmb3JtKQogCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggdHJhbnNmb3JtQTsKICAgICB0cmFuc2Zvcm1BLnRyYW5zbGF0ZTNkKC0xNSwgMCwgLTIpOwot
ICAgIHRyYW5zZm9ybUEudHJhbnNsYXRlKC01LCAtNSk7CiAgICAgQ0NMYXllclNvcnRlcjo6TGF5
ZXJTaGFwZSBsYXllckEoMTAsIDEwLCBwZXJzcGVjdGl2ZU1hdHJpeCAqIHRyYW5zZm9ybUEpOwog
CiAgICAgLy8gV2l0aCB0aGlzIHNlcXVlbmNlIG9mIHRyYW5zZm9ybXMsIHdoZW4gbGF5ZXIgQiBp
cyBjb3JyZWN0bHkgY2xpcHBlZCwgaXQgd2lsbCBiZQpAQCAtMTkzLDcgKzE4NSw2IEBAIFRFU1Qo
Q0NMYXllclNvcnRlclRlc3QsIExheWVyc1VuZGVyUGF0aG9sb2dpY2FsUGVyc3BlY3RpdmVUcmFu
c2Zvcm0pCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtQjsKICAgICB0cmFu
c2Zvcm1CLnRyYW5zbGF0ZTNkKDAsIDAsIDAuNyk7CiAgICAgdHJhbnNmb3JtQi5yb3RhdGUzZCgw
LCA0NSwgMCk7Ci0gICAgdHJhbnNmb3JtQi50cmFuc2xhdGUoLTUsIC01KTsKICAgICBDQ0xheWVy
U29ydGVyOjpMYXllclNoYXBlIGxheWVyQigxMCwgMTAsIHBlcnNwZWN0aXZlTWF0cml4ICogdHJh
bnNmb3JtQik7CiAKICAgICAvLyBTYW5pdHkgY2hlY2sgdGhhdCB0aGUgdGVzdCBjYXNlIGFjdHVh
bGx5IGNvdmVycyB0aGUgaW50ZW5kZWQgc2NlbmFyaW8sIHdoZXJlIHBhcnQKQEAgLTIzNSwyNyAr
MjI2LDIyIEBAIFRFU1QoQ0NMYXllclNvcnRlclRlc3QsIHZlcmlmeUV4aXN0aW5nT3JkZXJpbmdQ
cmVzZXJ2ZWRXaGVuTm9aRGlmZikKICAgICBGcm9udE1hdHJpeC50cmFuc2xhdGUzZCgwLCAwLCAx
KTsKIAogICAgIGxheWVyMS0+c2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7Ci0gICAgbGF5ZXIx
LT5zZXRDb250ZW50Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CiAgICAgbGF5ZXIxLT5zZXREcmF3
VHJhbnNmb3JtKEJlaGluZE1hdHJpeCk7CiAgICAgbGF5ZXIxLT5zZXREcmF3c0NvbnRlbnQodHJ1
ZSk7CiAKICAgICBsYXllcjItPnNldEJvdW5kcyhJbnRTaXplKDIwLCAyMCkpOwotICAgIGxheWVy
Mi0+c2V0Q29udGVudEJvdW5kcyhJbnRTaXplKDIwLCAyMCkpOwogICAgIGxheWVyMi0+c2V0RHJh
d1RyYW5zZm9ybShCZWhpbmRNYXRyaXgpOwogICAgIGxheWVyMi0+c2V0RHJhd3NDb250ZW50KHRy
dWUpOwogCiAgICAgbGF5ZXIzLT5zZXRCb3VuZHMoSW50U2l6ZSgzMCwgMzApKTsKLSAgICBsYXll
cjMtPnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSgzMCwgMzApKTsKICAgICBsYXllcjMtPnNldERy
YXdUcmFuc2Zvcm0oRnJvbnRNYXRyaXgpOwogICAgIGxheWVyMy0+c2V0RHJhd3NDb250ZW50KHRy
dWUpOwogCiAgICAgbGF5ZXI0LT5zZXRCb3VuZHMoSW50U2l6ZSg0MCwgNDApKTsKLSAgICBsYXll
cjQtPnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSg0MCwgNDApKTsKICAgICBsYXllcjQtPnNldERy
YXdUcmFuc2Zvcm0oRnJvbnRNYXRyaXgpOwogICAgIGxheWVyNC0+c2V0RHJhd3NDb250ZW50KHRy
dWUpOwogCiAgICAgbGF5ZXI1LT5zZXRCb3VuZHMoSW50U2l6ZSg1MCwgNTApKTsKLSAgICBsYXll
cjUtPnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSg1MCwgNTApKTsKICAgICBsYXllcjUtPnNldERy
YXdUcmFuc2Zvcm0oQmVoaW5kTWF0cml4KTsKICAgICBsYXllcjUtPnNldERyYXdzQ29udGVudCh0
cnVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
VHJlZUhvc3RDb21tb25UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAKaW5kZXggZTQwYTFjMjg5NWJiNzk3YzRiNTQwMzU2
YzQ5Y2NhMDMyZGEyZjVmYy4uODZhZjQwYTAyOWI0MjBhNWYwYTZlMDM3ODlkOGVmNjM1NzM1OTJk
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RDb21tb25UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCkBAIC0xODQsMjEgKzE4NCwyMyBAQCBURVNUKENDTGF5
ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JTaW5nbGVMYXllcikKICAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgYXJiaXRyYXJ5VHJhbnNsYXRpb24sIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMTAwLCAxMDApLCBmYWxzZSk7CiAgICAgZXhlY3V0ZUNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShsYXllci5nZXQoKSk7CiAgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggZXhwZWN0ZWREcmF3VHJhbnNmb3JtID0gaWRlbnRpdHlNYXRyaXg7CisgICAgZXhw
ZWN0ZWREcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOwogICAgIEVYUEVDVF9UUkFOU0ZP
Uk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWREcmF3VHJhbnNmb3JtLCBsYXllci0+ZHJhd1RyYW5z
Zm9ybSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGlkZW50aXR5TWF0
cml4LCBsYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CiAKLSAgICAvLyBDYXNlIDI6IFNl
dHRpbmcgdGhlIGJvdW5kcyBvZiB0aGUgbGF5ZXIgc2hvdWxkIG5vdCBhZmZlY3QgZWl0aGVyIHRo
ZSBkcmF3IHRyYW5zZm9ybSBvciB0aGUgc2NyZWVuc3BhY2UgdHJhbnNmb3JtLgorICAgIC8vIENh
c2UgMjogc2V0dGluZyB0aGUgYm91bmRzIG9mIHRoZSBsYXllciBzaG91bGQgcmVzdWx0IGluIGEg
ZHJhdyB0cmFuc2Zvcm0gdGhhdCB0cmFuc2xhdGVzIHRvIGhhbGYgdGhlIHdpZHRoIGFuZCBoZWln
aHQuCisgICAgLy8gICAgICAgICBUaGUgc2NyZWVuLXNwYWNlIHRyYW5zZm9ybSBzaG91bGQgcmVt
YWluIGFzIHRoZSBpZGVudGl0eSwgYmVjYXVzZSBpdCBkb2VzIG5vdCBkZWFsIHdpdGggdHJhbnNm
b3JtaW5nIHRvL2Zyb20gdGhlIGNlbnRlciBvZiB0aGUgbGF5ZXIuCiAgICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggdHJhbnNsYXRpb25Ub0NlbnRlcjsKICAgICB0cmFuc2xhdGlvblRvQ2VudGVy
LnRyYW5zbGF0ZSg1LCA2KTsKICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVy
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAsIDEyKSwgZmFsc2UpOwogICAgIGV4ZWN1dGVD
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkobGF5ZXIuZ2V0KCkpOwotICAgIEVY
UEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoaWRlbnRpdHlNYXRyaXgsIGxheWVyLT5kcmF3
VHJhbnNmb3JtKCkpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEodHJhbnNs
YXRpb25Ub0NlbnRlciwgbGF5ZXItPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5T
Rk9STUFUSU9OX01BVFJJWF9FUShpZGVudGl0eU1hdHJpeCwgbGF5ZXItPnNjcmVlblNwYWNlVHJh
bnNmb3JtKCkpOwogCiAgICAgLy8gQ2FzZSAzOiBUaGUgYW5jaG9yIHBvaW50IGJ5IGl0c2VsZiAo
d2l0aG91dCBhIGxheWVyIHRyYW5zZm9ybSkgc2hvdWxkIGhhdmUgbm8gZWZmZWN0IG9uIHRoZSB0
cmFuc2Zvcm1zLgogICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLjI1LCAwLjI1KSwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMCwgMTIpLCBmYWxzZSk7CiAgICAgZXhlY3V0ZUNh
bGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShsYXllci5nZXQoKSk7Ci0gICAgRVhQ
RUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShpZGVudGl0eU1hdHJpeCwgbGF5ZXItPmRyYXdU
cmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUSh0cmFuc2xh
dGlvblRvQ2VudGVyLCBsYXllci0+ZHJhd1RyYW5zZm9ybSgpKTsKICAgICBFWFBFQ1RfVFJBTlNG
T1JNQVRJT05fTUFUUklYX0VRKGlkZW50aXR5TWF0cml4LCBsYXllci0+c2NyZWVuU3BhY2VUcmFu
c2Zvcm0oKSk7CiAKICAgICAvLyBDYXNlIDQ6IEEgY2hhbmdlIGluIGFjdHVhbCBwb3NpdGlvbiBh
ZmZlY3RzIGJvdGggdGhlIGRyYXcgdHJhbnNmb3JtIGFuZCBzY3JlZW4gc3BhY2UgdHJhbnNmb3Jt
LgpAQCAtMjA2LDcgKzIwOCw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVy
aWZ5VHJhbnNmb3Jtc0ZvclNpbmdsZUxheWVyKQogICAgIHBvc2l0aW9uVHJhbnNmb3JtLnRyYW5z
bGF0ZSgwLCAxLjIpOwogICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0
KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLjI1LCAwLjI1
KSwgRmxvYXRQb2ludCgwLCAxLjIpLCBJbnRTaXplKDEwLCAxMiksIGZhbHNlKTsKICAgICBleGVj
dXRlQ2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KGxheWVyLmdldCgpKTsKLSAg
ICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBvc2l0aW9uVHJhbnNmb3JtLCBsYXll
ci0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VR
KHBvc2l0aW9uVHJhbnNmb3JtICogdHJhbnNsYXRpb25Ub0NlbnRlciwgbGF5ZXItPmRyYXdUcmFu
c2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShwb3NpdGlvblRy
YW5zZm9ybSwgbGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwogCiAgICAgLy8gQ2FzZSA1
OiBJbiB0aGUgY29ycmVjdCBzZXF1ZW5jZSBvZiB0cmFuc2Zvcm1zLCB0aGUgbGF5ZXIgdHJhbnNm
b3JtIHNob3VsZCBwcmUtbXVsdGlwbHkgdGhlIHRyYW5zbGF0aW9uVG9DZW50ZXIuIFRoaXMgaXMg
ZWFzaWx5IHRlc3RlZCBieQpAQCAtMjE1LDcgKzIxNyw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0
Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclNpbmdsZUxheWVyKQogICAgIGxheWVyVHJh
bnNmb3JtLnNjYWxlM2QoMiwgMiwgMSk7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhsYXllci5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwLCAxMiksIGZhbHNlKTsKICAgICBl
eGVjdXRlQ2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KGxheWVyLmdldCgpKTsK
LSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGxheWVyVHJhbnNmb3JtLCBsYXll
ci0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VR
KGxheWVyVHJhbnNmb3JtICogdHJhbnNsYXRpb25Ub0NlbnRlciwgbGF5ZXItPmRyYXdUcmFuc2Zv
cm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShsYXllclRyYW5zZm9y
bSwgbGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwogCiAgICAgLy8gQ2FzZSA2OiBUaGUg
bGF5ZXIgdHJhbnNmb3JtIHNob3VsZCBvY2N1ciB3aXRoIHJlc3BlY3QgdG8gdGhlIGFuY2hvciBw
b2ludC4KQEAgLTIyNCw3ICsyMjYsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3Qs
IHZlcmlmeVRyYW5zZm9ybXNGb3JTaW5nbGVMYXllcikKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBleHBlY3RlZFJlc3VsdCA9IHRyYW5zbGF0aW9uVG9BbmNob3IgKiBsYXllclRyYW5zZm9y
bSAqIHRyYW5zbGF0aW9uVG9BbmNob3IuaW52ZXJzZSgpOwogICAgIHNldExheWVyUHJvcGVydGll
c0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBpZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLjUsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwLCAxMiksIGZh
bHNlKTsKICAgICBleGVjdXRlQ2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KGxh
eWVyLmdldCgpKTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVk
UmVzdWx0LCBsYXllci0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJ
T05fTUFUUklYX0VRKGV4cGVjdGVkUmVzdWx0ICogdHJhbnNsYXRpb25Ub0NlbnRlciwgbGF5ZXIt
PmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShl
eHBlY3RlZFJlc3VsdCwgbGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwogCiAgICAgLy8g
Q2FzZSA3OiBWZXJpZnkgdGhhdCBwb3NpdGlvbiBwcmUtbXVsdGlwbGllcyB0aGUgbGF5ZXIgdHJh
bnNmb3JtLgpAQCAtMjMzLDcgKzIzNSw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclNpbmdsZUxheWVyKQogICAgIGV4cGVjdGVkUmVzdWx0ID0g
cG9zaXRpb25UcmFuc2Zvcm0gKiB0cmFuc2xhdGlvblRvQW5jaG9yICogbGF5ZXJUcmFuc2Zvcm0g
KiB0cmFuc2xhdGlvblRvQW5jaG9yLmludmVyc2UoKTsKICAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKGxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMC41LCAwKSwgRmxvYXRQb2ludCgwLCAxLjIpLCBJbnRTaXplKDEwLCAxMiksIGZh
bHNlKTsKICAgICBleGVjdXRlQ2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KGxh
eWVyLmdldCgpKTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVk
UmVzdWx0LCBsYXllci0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJ
T05fTUFUUklYX0VRKGV4cGVjdGVkUmVzdWx0ICogdHJhbnNsYXRpb25Ub0NlbnRlciwgbGF5ZXIt
PmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShl
eHBlY3RlZFJlc3VsdCwgbGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwogfQogCkBAIC0y
NDgsMTMgKzI1MCwxNiBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRy
YW5zZm9ybXNGb3JTaW1wbGVIaWVyYXJjaHkpCiAgICAgY2hpbGQtPmFkZENoaWxkKGdyYW5kQ2hp
bGQpOwogCiAgICAgLy8gQ2FzZSAxOiBwYXJlbnQncyBhbmNob3JQb2ludCBzaG91bGQgbm90IGFm
ZmVjdCBjaGlsZCBvciBncmFuZENoaWxkLgorICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGNo
aWxkVHJhbnNsYXRpb25Ub0NlbnRlciwgZ3JhbmRDaGlsZFRyYW5zbGF0aW9uVG9DZW50ZXI7Cisg
ICAgY2hpbGRUcmFuc2xhdGlvblRvQ2VudGVyLnRyYW5zbGF0ZSg4LCA5KTsKKyAgICBncmFuZENo
aWxkVHJhbnNsYXRpb25Ub0NlbnRlci50cmFuc2xhdGUoMzgsIDM5KTsKICAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAuMjUsIDAuMjUpLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDEwLCAxMiksIGZhbHNlKTsKICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxk
LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTYsIDE4KSwgZmFsc2UpOwogICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcoZ3JhbmRDaGlsZC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDc2LCA3OCksIGZhbHNlKTsKICAgICBleGVjdXRlQ2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRW
aXNpYmlsaXR5KHBhcmVudC5nZXQoKSk7Ci0gICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJ
WF9FUShpZGVudGl0eU1hdHJpeCwgY2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CisgICAgRVhQRUNU
X1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShjaGlsZFRyYW5zbGF0aW9uVG9DZW50ZXIsIGNoaWxk
LT5kcmF3VHJhbnNmb3JtKCkpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEo
aWRlbnRpdHlNYXRyaXgsIGNoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKLSAgICBFWFBF
Q1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGlkZW50aXR5TWF0cml4LCBncmFuZENoaWxkLT5k
cmF3VHJhbnNmb3JtKCkpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZ3Jh
bmRDaGlsZFRyYW5zbGF0aW9uVG9DZW50ZXIsIGdyYW5kQ2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7
CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShpZGVudGl0eU1hdHJpeCwgZ3Jh
bmRDaGlsZC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CiAKICAgICAvLyBDYXNlIDI6IHBhcmVu
dCdzIHBvc2l0aW9uIGFmZmVjdHMgY2hpbGQgYW5kIGdyYW5kQ2hpbGQuCkBAIC0yNjQsOSArMjY5
LDkgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9y
U2ltcGxlSGllcmFyY2h5KQogICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxNiwgMTgpLCBmYWxzZSk7CiAgICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhncmFuZENoaWxkLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
NzYsIDc4KSwgZmFsc2UpOwogICAgIGV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHkocGFyZW50LmdldCgpKTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklY
X0VRKHBhcmVudFBvc2l0aW9uVHJhbnNmb3JtLCBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAg
ICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudFBvc2l0aW9uVHJhbnNmb3Jt
ICogY2hpbGRUcmFuc2xhdGlvblRvQ2VudGVyLCBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKICAg
ICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudFBvc2l0aW9uVHJhbnNmb3Jt
LCBjaGlsZC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7Ci0gICAgRVhQRUNUX1RSQU5TRk9STUFU
SU9OX01BVFJJWF9FUShwYXJlbnRQb3NpdGlvblRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+ZHJhd1Ry
YW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudFBv
c2l0aW9uVHJhbnNmb3JtICogZ3JhbmRDaGlsZFRyYW5zbGF0aW9uVG9DZW50ZXIsIGdyYW5kQ2hp
bGQtPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9F
UShwYXJlbnRQb3NpdGlvblRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+c2NyZWVuU3BhY2VUcmFuc2Zv
cm0oKSk7CiAKICAgICAvLyBDYXNlIDM6IHBhcmVudCdzIGxvY2FsIHRyYW5zZm9ybSBhZmZlY3Rz
IGNoaWxkIGFuZCBncmFuZGNoaWxkCkBAIC0yNzksOSArMjg0LDkgQEAgVEVTVChDQ0xheWVyVHJl
ZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2ltcGxlSGllcmFyY2h5KQogICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgxNiwgMTgpLCBmYWxzZSk7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhn
cmFuZENoaWxkLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoNzYsIDc4KSwgZmFsc2UpOwogICAg
IGV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocGFyZW50LmdldCgp
KTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudENvbXBvc2l0ZVRy
YW5zZm9ybSwgY2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFU
SU9OX01BVFJJWF9FUShwYXJlbnRDb21wb3NpdGVUcmFuc2Zvcm0gKiBjaGlsZFRyYW5zbGF0aW9u
VG9DZW50ZXIsIGNoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1B
VElPTl9NQVRSSVhfRVEocGFyZW50Q29tcG9zaXRlVHJhbnNmb3JtLCBjaGlsZC0+c2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0oKSk7Ci0gICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShwYXJl
bnRDb21wb3NpdGVUcmFuc2Zvcm0sIGdyYW5kQ2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CisgICAg
RVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShwYXJlbnRDb21wb3NpdGVUcmFuc2Zvcm0g
KiBncmFuZENoaWxkVHJhbnNsYXRpb25Ub0NlbnRlciwgZ3JhbmRDaGlsZC0+ZHJhd1RyYW5zZm9y
bSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudENvbXBvc2l0
ZVRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CiAKICAgICAv
LyBDYXNlIDQ6IHBhcmVudCdzIHN1YmxheWVyTWF0cml4IGFmZmVjdHMgY2hpbGQgYW5kIGdyYW5k
Y2hpbGQKQEAgLTMwMCw5ICszMDUsOSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3Qs
IHZlcmlmeVRyYW5zZm9ybXNGb3JTaW1wbGVIaWVyYXJjaHkpCiAgICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDE2LCAxOCksIGZh
bHNlKTsKICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGdyYW5kQ2hpbGQuZ2V0KCks
IGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSg3NiwgNzgpLCBmYWxzZSk7CiAgICAgZXhlY3V0ZUNhbGN1bGF0
ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCkpOwotICAgIEVYUEVDVF9U
UkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocGFyZW50Q29tcG9zaXRlVHJhbnNmb3JtLCBjaGlsZC0+
ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBh
cmVudENvbXBvc2l0ZVRyYW5zZm9ybSAqIGNoaWxkVHJhbnNsYXRpb25Ub0NlbnRlciwgY2hpbGQt
PmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShw
YXJlbnRDb21wb3NpdGVUcmFuc2Zvcm0sIGNoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsK
LSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGZsYXR0ZW5lZENvbXBvc2l0ZVRy
YW5zZm9ybSwgZ3JhbmRDaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNG
T1JNQVRJT05fTUFUUklYX0VRKGZsYXR0ZW5lZENvbXBvc2l0ZVRyYW5zZm9ybSAqIGdyYW5kQ2hp
bGRUcmFuc2xhdGlvblRvQ2VudGVyLCBncmFuZENoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwogICAg
IEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZmxhdHRlbmVkQ29tcG9zaXRlVHJhbnNm
b3JtLCBncmFuZENoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKIAogICAgIC8vIENhc2Ug
NTogc2FtZSBhcyBDYXNlIDQsIGV4Y2VwdCB0aGF0IGNoaWxkIGRvZXMgcHJlc2VydmUgM0QsIHNv
IHRoZSBncmFuZENoaWxkIHNob3VsZCByZWNlaXZlIHRoZSBub24tZmxhdHRlbmVkIGNvbXBvc2l0
ZSB0cmFuc2Zvcm0uCkBAIC0zMTEsOSArMzE2LDkgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21t
b25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2ltcGxlSGllcmFyY2h5KQogICAgIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcoY2hpbGQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxNiwg
MTgpLCB0cnVlKTsKICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGdyYW5kQ2hpbGQu
Z2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSg3NiwgNzgpLCBmYWxzZSk7CiAgICAgZXhlY3V0ZUNh
bGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShwYXJlbnQuZ2V0KCkpOwotICAgIEVY
UEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocGFyZW50Q29tcG9zaXRlVHJhbnNmb3JtLCBj
aGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklY
X0VRKHBhcmVudENvbXBvc2l0ZVRyYW5zZm9ybSAqIGNoaWxkVHJhbnNsYXRpb25Ub0NlbnRlciwg
Y2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJ
WF9FUShwYXJlbnRDb21wb3NpdGVUcmFuc2Zvcm0sIGNoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9y
bSgpKTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudENvbXBvc2l0
ZVRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJB
TlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudENvbXBvc2l0ZVRyYW5zZm9ybSAqIGdyYW5kQ2hp
bGRUcmFuc2xhdGlvblRvQ2VudGVyLCBncmFuZENoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwogICAg
IEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocGFyZW50Q29tcG9zaXRlVHJhbnNmb3Jt
LCBncmFuZENoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKIH0KIApAQCAtMzQxLDYgKzM0
NiwxMSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNG
b3JTaW5nbGVSZW5kZXJTdXJmYWNlKQogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHBhcmVu
dENvbXBvc2l0ZVRyYW5zZm9ybSA9IHBhcmVudFRyYW5zbGF0aW9uVG9BbmNob3IgKiBwYXJlbnRM
YXllclRyYW5zZm9ybSAqIHBhcmVudFRyYW5zbGF0aW9uVG9BbmNob3IuaW52ZXJzZSgpCiAgICAg
ICAgICAgICAqIHBhcmVudFRyYW5zbGF0aW9uVG9DZW50ZXIgKiBwYXJlbnRTdWJsYXllck1hdHJp
eCAqIHBhcmVudFRyYW5zbGF0aW9uVG9DZW50ZXIuaW52ZXJzZSgpOwogCisgICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2xhdGlvblRvQ2VudGVyOworICAgIGNoaWxkVHJhbnNs
YXRpb25Ub0NlbnRlci50cmFuc2xhdGUoOCwgOSk7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggZ3JhbmRDaGlsZFRyYW5zbGF0aW9uVG9DZW50ZXI7CisgICAgZ3JhbmRDaGlsZFRyYW5zbGF0
aW9uVG9DZW50ZXIudHJhbnNsYXRlKDQsIDUpOworCiAgICAgLy8gQ2hpbGQncyByZW5kZXIgc3Vy
ZmFjZSBzaG91bGQgbm90IGV4aXN0IHlldC4KICAgICBBU1NFUlRfRkFMU0UoY2hpbGQtPnJlbmRl
clN1cmZhY2UoKSk7CiAKQEAgLTM1MywxNSArMzYzLDE2IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0
Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclNpbmdsZVJlbmRlclN1cmZhY2UpCiAgICAg
QVNTRVJUX1RSVUUoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgQVNTRVJUX0VRKGNoaWxk
LCBjaGlsZC0+cmVuZGVyVGFyZ2V0KCkpOwogCi0gICAgLy8gVGhlIGNoaWxkIGxheWVyJ3MgZHJh
dyB0cmFuc2Zvcm0gc2hvdWxkIHJlZmVyIHRvIGl0cyBuZXcgcmVuZGVyIHN1cmZhY2UuCisgICAg
Ly8gVGhlIGNoaWxkIGxheWVyJ3MgZHJhdyB0cmFuc2Zvcm0gc2hvdWxkIHJlZmVyIHRvIGl0cyBu
ZXcgcmVuZGVyIHN1cmZhY2U7IHRoZXkgb25seSBkaWZmZXIgYnkgYSB0cmFuc2xhdGlvbiB0byBj
ZW50ZXIuCiAgICAgLy8gVGhlIHNjcmVlbi1zcGFjZSB0cmFuc2Zvcm0sIGhvd2V2ZXIsIHNob3Vs
ZCBzdGlsbCByZWZlciB0byB0aGUgcm9vdC4KLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFU
UklYX0VRKGlkZW50aXR5TWF0cml4LCBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBF
Q1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGNoaWxkVHJhbnNsYXRpb25Ub0NlbnRlciwgY2hp
bGQtPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9F
UShwYXJlbnRDb21wb3NpdGVUcmFuc2Zvcm0sIGNoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgp
KTsKIAogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocGFyZW50Q29tcG9zaXRl
VHJhbnNmb3JtLCBjaGlsZC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+b3JpZ2lu
VHJhbnNmb3JtKCkpOwogCiAgICAgLy8gQmVjYXVzZSB0aGUgZ3JhbmRDaGlsZCBpcyB0aGUgb25s
eSBkcmF3YWJsZSBjb250ZW50LCB0aGUgY2hpbGQncyByZW5kZXJTdXJmYWNlIHdpbGwgdGlnaHRl
biBpdHMgYm91bmRzIHRvIHRoZSBncmFuZENoaWxkLgotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElP
Tl9NQVRSSVhfRVEocGFyZW50Q29tcG9zaXRlVHJhbnNmb3JtLCBjaGlsZC0+cmVuZGVyVGFyZ2V0
KCktPnJlbmRlclN1cmZhY2UoKS0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICAvLyBUaGVyZWZvcmUs
IHRoZSBkcmF3IHRyYW5zZm9ybSB3aWxsIGhhdmUgYSB0cmFuc2xhdGlvbiBvZiBoYWxmLXdpZHRo
LCBoYWxmLWhlaWdodCBvZiB0aGUgZ3JhbmRDaGlsZCdzIGJvdW5kcy4KKyAgICBFWFBFQ1RfVFJB
TlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudENvbXBvc2l0ZVRyYW5zZm9ybSAqIGdyYW5kQ2hp
bGRUcmFuc2xhdGlvblRvQ2VudGVyLCBjaGlsZC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZh
Y2UoKS0+ZHJhd1RyYW5zZm9ybSgpKTsKIAogICAgIC8vIFRoZSBzY3JlZW4gc3BhY2UgaXMgdGhl
IHNhbWUgYXMgdGhlIHRhcmdldCBzaW5jZSB0aGUgY2hpbGQgc3VyZmFjZSBkcmF3cyBpbnRvIHRo
ZSByb290LgogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocGFyZW50Q29tcG9z
aXRlVHJhbnNmb3JtLCBjaGlsZC0+cmVuZGVyVGFyZ2V0KCktPnJlbmRlclN1cmZhY2UoKS0+c2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CkBAIC00MDEsNyArNDEyLDYgQEAgVEVTVChDQ0xheWVyVHJl
ZUhvc3RDb21tb25UZXN0LCBzY2lzc29yUmVjdFdpdGhDbGlwKQogICAgIHJvb3QtPnNldEFuY2hv
clBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldFBvc2l0aW9uKEZsb2F0UG9p
bnQocm9vdFJlY3QueCgpLCByb290UmVjdC55KCkpKTsKICAgICByb290LT5zZXRCb3VuZHMoSW50
U2l6ZShyb290UmVjdC53aWR0aCgpLCByb290UmVjdC5oZWlnaHQoKSkpOwotICAgIHJvb3QtPnNl
dENvbnRlbnRCb3VuZHMocm9vdC0+Ym91bmRzKCkpOwogICAgIHJvb3QtPnNldERyYXdzQ29udGVu
dCh0cnVlKTsKICAgICByb290LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KEludFJl
Y3QoSW50UG9pbnQoKSwgSW50U2l6ZShyb290UmVjdC53aWR0aCgpLCByb290UmVjdC5oZWlnaHQo
KSkpKTsKIApAQCAtNDA5LDEzICs0MTksMTEgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25U
ZXN0LCBzY2lzc29yUmVjdFdpdGhDbGlwKQogICAgIGNoaWxkLT5zZXRQb3NpdGlvbihGbG9hdFBv
aW50KGNoaWxkUmVjdC54KCksIGNoaWxkUmVjdC55KCkpKTsKICAgICBjaGlsZC0+c2V0T3BhY2l0
eSgwLjUpOwogICAgIGNoaWxkLT5zZXRCb3VuZHMoSW50U2l6ZShjaGlsZFJlY3Qud2lkdGgoKSwg
Y2hpbGRSZWN0LmhlaWdodCgpKSk7Ci0gICAgY2hpbGQtPnNldENvbnRlbnRCb3VuZHMoY2hpbGQt
PmJvdW5kcygpKTsKICAgICBjaGlsZC0+c2V0RHJhd3NDb250ZW50KHRydWUpOwogCiAgICAgZ3Jh
bmRDaGlsZC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgZ3JhbmRDaGls
ZC0+c2V0UG9zaXRpb24oSW50UG9pbnQoZ3JhbmRDaGlsZFJlY3QueCgpLCBncmFuZENoaWxkUmVj
dC55KCkpKTsKICAgICBncmFuZENoaWxkLT5zZXRCb3VuZHMoSW50U2l6ZShncmFuZENoaWxkUmVj
dC53aWR0aCgpLCBncmFuZENoaWxkUmVjdC5oZWlnaHQoKSkpOwotICAgIGdyYW5kQ2hpbGQtPnNl
dENvbnRlbnRCb3VuZHMoZ3JhbmRDaGlsZC0+Ym91bmRzKCkpOwogICAgIGdyYW5kQ2hpbGQtPnNl
dERyYXdzQ29udGVudCh0cnVlKTsKIAogICAgIENDTGF5ZXJJbXBsKiBjaGlsZFB0ciA9IGNoaWxk
LmdldCgpOwpAQCAtNTcxLDcgKzU3OSw2IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dCwgc2Npc3NvclJlY3RXaXRoQ2xpcEFuZFNwYWNlVHJhbnNmb3JtKQogICAgIHJvb3QtPnNldEFu
Y2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldFBvc2l0aW9uKEZsb2F0
UG9pbnQocm9vdFJlY3QueCgpLCByb290UmVjdC55KCkpKTsKICAgICByb290LT5zZXRCb3VuZHMo
SW50U2l6ZShyb290UmVjdC53aWR0aCgpLCByb290UmVjdC5oZWlnaHQoKSkpOwotICAgIHJvb3Qt
PnNldENvbnRlbnRCb3VuZHMocm9vdC0+Ym91bmRzKCkpOwogICAgIHJvb3QtPnNldERyYXdzQ29u
dGVudCh0cnVlKTsKICAgICByb290LT5yZW5kZXJTdXJmYWNlKCktPnNldENvbnRlbnRSZWN0KElu
dFJlY3QoSW50UG9pbnQoKSwgSW50U2l6ZShyb290UmVjdC53aWR0aCgpLCByb290UmVjdC5oZWln
aHQoKSkpKTsKIApAQCAtNTc5LDIxICs1ODYsMTggQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21t
b25UZXN0LCBzY2lzc29yUmVjdFdpdGhDbGlwQW5kU3BhY2VUcmFuc2Zvcm0pCiAgICAgY2hpbGQt
PnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoY2hpbGRSZWN0LngoKSwgY2hpbGRSZWN0LnkoKSkpOwog
ICAgIGNoaWxkLT5zZXRPcGFjaXR5KDAuNSk7CiAgICAgY2hpbGQtPnNldEJvdW5kcyhJbnRTaXpl
KGNoaWxkUmVjdC53aWR0aCgpLCBjaGlsZFJlY3QuaGVpZ2h0KCkpKTsKLSAgICBjaGlsZC0+c2V0
Q29udGVudEJvdW5kcyhjaGlsZC0+Ym91bmRzKCkpOwogICAgIGNoaWxkLT5zZXREcmF3c0NvbnRl
bnQodHJ1ZSk7CiAKICAgICBncmFuZENoaWxkLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAs
IDApKTsKICAgICBncmFuZENoaWxkLT5zZXRQb3NpdGlvbihJbnRQb2ludChncmFuZENoaWxkUmVj
dC54KCksIGdyYW5kQ2hpbGRSZWN0LnkoKSkpOwogICAgIGdyYW5kQ2hpbGQtPnNldE9wYWNpdHko
MC41KTsKICAgICBncmFuZENoaWxkLT5zZXRCb3VuZHMoSW50U2l6ZShncmFuZENoaWxkUmVjdC53
aWR0aCgpLCBncmFuZENoaWxkUmVjdC5oZWlnaHQoKSkpOwotICAgIGdyYW5kQ2hpbGQtPnNldENv
bnRlbnRCb3VuZHMoZ3JhbmRDaGlsZC0+Ym91bmRzKCkpOwogICAgIGdyYW5kQ2hpbGQtPnNldERy
YXdzQ29udGVudCh0cnVlKTsKIAogICAgIGdyYW5kQ2hpbGQyLT5zZXRBbmNob3JQb2ludChGbG9h
dFBvaW50KDAsIDApKTsKICAgICBncmFuZENoaWxkMi0+c2V0UG9zaXRpb24oSW50UG9pbnQoZ3Jh
bmRDaGlsZFJlY3QueCgpLCBncmFuZENoaWxkUmVjdC55KCkpKTsKICAgICBncmFuZENoaWxkMi0+
c2V0T3BhY2l0eSgwLjUpOwogICAgIGdyYW5kQ2hpbGQyLT5zZXRCb3VuZHMoSW50U2l6ZShncmFu
ZENoaWxkUmVjdC53aWR0aCgpLCBncmFuZENoaWxkUmVjdC5oZWlnaHQoKSkpOwotICAgIGdyYW5k
Q2hpbGQyLT5zZXRDb250ZW50Qm91bmRzKGdyYW5kQ2hpbGQyLT5ib3VuZHMoKSk7CiAgICAgZ3Jh
bmRDaGlsZDItPnNldERyYXdzQ29udGVudCh0cnVlKTsKIAogICAgIENDTGF5ZXJJbXBsKiBjaGls
ZFB0ciA9IGNoaWxkLmdldCgpOwpAQCAtODI0LDcgKzgyOCw2IEBAIFRFU1QoQ0NMYXllclRyZWVI
b3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclJlbmRlclN1cmZhY2VIaWVyYXJjaHkp
CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggQSA9IHRyYW5zbGF0aW9uVG9BbmNob3IgKiBs
YXllclRyYW5zZm9ybSAqIHRyYW5zbGF0aW9uVG9BbmNob3IuaW52ZXJzZSgpOwogICAgIFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4IEIgPSB0cmFuc2xhdGlvblRvQ2VudGVyICogc3VibGF5ZXJUcmFu
c2Zvcm0gKiB0cmFuc2xhdGlvblRvQ2VudGVyLmludmVyc2UoKTsKICAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBSID0gQSAqIHRyYW5zbGF0aW9uVG9BbmNob3IgKiByZXBsaWNhTGF5ZXJUcmFu
c2Zvcm0gKiB0cmFuc2xhdGlvblRvQW5jaG9yLmludmVyc2UoKTsKLSAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKIAogICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcocGFyZW50LmdldCgpLCBsYXllclRyYW5zZm9ybSwgc3VibGF5ZXJUcmFuc2Zvcm0sIEZs
b2F0UG9pbnQoMC4yNSwgMCksIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAsIDEwKSwgZmFs
c2UpOwogICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocmVuZGVyU3VyZmFjZTEuZ2V0
KCksIGxheWVyVHJhbnNmb3JtLCBzdWJsYXllclRyYW5zZm9ybSwgRmxvYXRQb2ludCgwLjI1LCAw
KSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMCwgMTApLCBmYWxzZSk7CkBAIC04NzIsMTcg
Kzg3NSwxNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9y
bXNGb3JSZW5kZXJTdXJmYWNlSGllcmFyY2h5KQogICAgIC8vICBub3RlIHRoYXQgZHJhdyB0cmFu
c2Zvcm1zIGFyZSBkZXNjcmliZWQgd2l0aCByZXNwZWN0IHRvIHRoZSBuZWFyZXN0IGFuY2VzdG9y
IHJlbmRlciBzdXJmYWNlCiAgICAgLy8gIGJ1dCBzY3JlZW4gc3BhY2UgdHJhbnNmb3JtcyBhcmUg
ZGVzY3JpYmVkIHdpdGggcmVzcGVjdCB0byB0aGUgcm9vdC4KICAgICAvLwotICAgIEVYUEVDVF9U
UkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoQSwgcGFyZW50LT5kcmF3VHJhbnNmb3JtKCkpOwotICAg
IEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoQSAqIEIgKiBBLCBjaGlsZE9mUm9vdC0+
ZHJhd1RyYW5zZm9ybSgpKTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKEEg
KiBCICogQSAqIEIgKiBBLCBncmFuZENoaWxkT2ZSb290LT5kcmF3VHJhbnNmb3JtKCkpOworICAg
IEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoQSAqIHRyYW5zbGF0aW9uVG9DZW50ZXIs
IHBhcmVudC0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFU
UklYX0VRKEEgKiBCICogQSAqIHRyYW5zbGF0aW9uVG9DZW50ZXIsIGNoaWxkT2ZSb290LT5kcmF3
VHJhbnNmb3JtKCkpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoQSAqIEIg
KiBBICogQiAqIEEgKiB0cmFuc2xhdGlvblRvQ2VudGVyLCBncmFuZENoaWxkT2ZSb290LT5kcmF3
VHJhbnNmb3JtKCkpOwogCi0gICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShpZGVu
dGl0eU1hdHJpeCwgcmVuZGVyU3VyZmFjZTEtPmRyYXdUcmFuc2Zvcm0oKSk7Ci0gICAgRVhQRUNU
X1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShCICogQSwgY2hpbGRPZlJTMS0+ZHJhd1RyYW5zZm9y
bSgpKTsKLSAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKEIgKiBBICogQiAqIEEs
IGdyYW5kQ2hpbGRPZlJTMS0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JN
QVRJT05fTUFUUklYX0VRKHRyYW5zbGF0aW9uVG9DZW50ZXIsIHJlbmRlclN1cmZhY2UxLT5kcmF3
VHJhbnNmb3JtKCkpOworICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoQiAqIEEg
KiB0cmFuc2xhdGlvblRvQ2VudGVyLCBjaGlsZE9mUlMxLT5kcmF3VHJhbnNmb3JtKCkpOworICAg
IEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoQiAqIEEgKiBCICogQSAqIHRyYW5zbGF0
aW9uVG9DZW50ZXIsIGdyYW5kQ2hpbGRPZlJTMS0+ZHJhd1RyYW5zZm9ybSgpKTsKIAotICAgIEVY
UEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZh
Y2UyLT5kcmF3VHJhbnNmb3JtKCkpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhf
RVEoQiAqIEEsIGNoaWxkT2ZSUzItPmRyYXdUcmFuc2Zvcm0oKSk7Ci0gICAgRVhQRUNUX1RSQU5T
Rk9STUFUSU9OX01BVFJJWF9FUShCICogQSAqIEIgKiBBLCBncmFuZENoaWxkT2ZSUzItPmRyYXdU
cmFuc2Zvcm0oKSk7CisgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUSh0cmFuc2xh
dGlvblRvQ2VudGVyLCByZW5kZXJTdXJmYWNlMi0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBF
Q1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKEIgKiBBICogdHJhbnNsYXRpb25Ub0NlbnRlciwg
Y2hpbGRPZlJTMi0+ZHJhd1RyYW5zZm9ybSgpKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05f
TUFUUklYX0VRKEIgKiBBICogQiAqIEEgKiB0cmFuc2xhdGlvblRvQ2VudGVyLCBncmFuZENoaWxk
T2ZSUzItPmRyYXdUcmFuc2Zvcm0oKSk7CiAKICAgICAvLyBWZXJpZnkgbGF5ZXIgc2NyZWVuLXNw
YWNlIHRyYW5zZm9ybXMKICAgICAvLwpAQCAtMTAzOSw3ICsxMDQyLDEwIEBAIFRFU1QoQ0NMYXll
clRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5U2Nyb2xsQ29tcGVuc2F0aW9uRm9yRml4ZWRQb3Np
dGlvbkxheWVyV2l0CiAgICAgY2hpbGQtPnNldFNjcm9sbERlbHRhKEludFNpemUoMCwgMCkpOwog
ICAgIGV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdC5nZXQo
KSk7CiAKKyAgICAvLyBUaGUgZXhwZWN0ZWQgZHJhd1RyYW5zZm9ybXMgd2l0aG91dCBhbnkgc2Ny
b2xsIHNob3VsZCBzdGlsbCBpbmNsdWRlIGEgdHJhbnNsYXRpb24gdG8gdGhlIGNlbnRlciBvZiB0
aGUgbGF5ZXIgKGkuZS4gdHJhbnNsYXRpb24gYnkgNTAsIDUwKS4KICAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBleHBlY3RlZENoaWxkVHJhbnNmb3JtOworICAgIGV4cGVjdGVkQ2hpbGRUcmFu
c2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7CisKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBl
eHBlY3RlZEdyYW5kQ2hpbGRUcmFuc2Zvcm0gPSBleHBlY3RlZENoaWxkVHJhbnNmb3JtOwogCiAg
ICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZENoaWxkVHJhbnNmb3Jt
LCBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKQEAgLTEwNTEsNyArMTA1Nyw3IEBAIFRFU1QoQ0NM
YXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5U2Nyb2xsQ29tcGVuc2F0aW9uRm9yRml4ZWRQ
b3NpdGlvbkxheWVyV2l0CiAKICAgICAvLyBIZXJlIHRoZSBjaGlsZCBpcyBhZmZlY3RlZCBieSBz
Y3JvbGxEZWx0YSwgYnV0IHRoZSBmaXhlZCBwb3NpdGlvbiBncmFuZENoaWxkIHNob3VsZCBub3Qg
YmUgYWZmZWN0ZWQuCiAgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsK
LSAgICBleHBlY3RlZENoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMTAsIC0xMCk7CisgICAgZXhw
ZWN0ZWRDaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNDAsIDQwKTsKIAogICAgIEVYUEVDVF9UUkFO
U0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybSwgY2hpbGQtPmRyYXdU
cmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3Rl
ZEdyYW5kQ2hpbGRUcmFuc2Zvcm0sIGdyYW5kQ2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CkBAIC0x
MDg1LDggKzEwOTEsMTAgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlT
Y3JvbGxDb21wZW5zYXRpb25Gb3JGaXhlZFBvc2l0aW9uTGF5ZXJXaXQKICAgICBjaGlsZC0+c2V0
U2Nyb2xsRGVsdGEoSW50U2l6ZSgwLCAwKSk7CiAgICAgZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFu
c2Zvcm1zQW5kVmlzaWJpbGl0eShyb290LmdldCgpKTsKIAorICAgIC8vIFRoZSBleHBlY3RlZCBk
cmF3VHJhbnNmb3JtcyB3aXRob3V0IGFueSBzY3JvbGwgc2hvdWxkIHN0aWxsIGluY2x1ZGUgYSB0
cmFuc2xhdGlvbiB0byB0aGUgY2VudGVyIG9mIHRoZSBsYXllciAoaS5lLiB0cmFuc2xhdGlvbiBi
eSA1MCwgNTApLgogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkQ2hpbGRUcmFu
c2Zvcm07CiAgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS5tdWx0aXBseShub25Vbmlmb3JtU2Nh
bGUpOworICAgIGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7CiAKICAg
ICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZEdyYW5kQ2hpbGRUcmFuc2Zvcm0gPSBl
eHBlY3RlZENoaWxkVHJhbnNmb3JtOwogCkBAIC0xMTAxLDYgKzExMDksNyBAQCBURVNUKENDTGF5
ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNhdGlvbkZvckZpeGVkUG9z
aXRpb25MYXllcldpdAogICAgIGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7
CiAgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTEwLCAtMjApOyAvLyBzY3Jv
bGxEZWx0YQogICAgIGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0ubXVsdGlwbHkobm9uVW5pZm9ybVNj
YWxlKTsKKyAgICBleHBlY3RlZENoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOwogCiAg
ICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZENoaWxkVHJhbnNmb3Jt
LCBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFU
UklYX0VRKGV4cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+ZHJhd1RyYW5z
Zm9ybSgpKTsKQEAgLTExMjYsOCArMTEzNSwxMCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1v
blRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNhdGlvbkZvckZpeGVkUG9zaXRpb25MYXllcldpdAog
ICAgIGV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdC5nZXQo
KSk7CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZENoaWxkVHJhbnNmb3Jt
OworICAgIGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7CisKICAgICBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZEdyYW5kQ2hpbGRUcmFuc2Zvcm07Ci0gICAg
ZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg4LCA2KTsKKyAgICBleHBlY3Rl
ZEdyYW5kQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDU4LCA1Nik7CiAKICAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBleHBlY3RlZEdyZWF0R3JhbmRDaGlsZFRyYW5zZm9ybSA9IGV4cGVjdGVk
R3JhbmRDaGlsZFRyYW5zZm9ybTsKIApAQCAtMTE0MSw5ICsxMTUyLDkgQEAgVEVTVChDQ0xheWVy
VHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlTY3JvbGxDb21wZW5zYXRpb25Gb3JGaXhlZFBvc2l0
aW9uTGF5ZXJXaXQKIAogICAgIC8vIEhlcmUgdGhlIGNoaWxkIGFuZCBncmFuZENoaWxkIGFyZSBh
ZmZlY3RlZCBieSBzY3JvbGxEZWx0YSwgYnV0IHRoZSBmaXhlZCBwb3NpdGlvbiBncmVhdEdyYW5k
Q2hpbGQgc2hvdWxkIG5vdCBiZSBhZmZlY3RlZC4KICAgICBleHBlY3RlZENoaWxkVHJhbnNmb3Jt
Lm1ha2VJZGVudGl0eSgpOwotICAgIGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0x
MCwgLTEwKTsKKyAgICBleHBlY3RlZENoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg0MCwgNDApOwog
ICAgIGV4cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKLSAgICBleHBl
Y3RlZEdyYW5kQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yLCAtNCk7CisgICAgZXhwZWN0ZWRH
cmFuZENoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg0OCwgNDYpOwogICAgIEVYUEVDVF9UUkFOU0ZP
Uk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybSwgY2hpbGQtPmRyYXdUcmFu
c2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZEdy
YW5kQ2hpbGRUcmFuc2Zvcm0sIGdyYW5kQ2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQ
RUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZEdyZWF0R3JhbmRDaGlsZFRyYW5z
Zm9ybSwgZ3JlYXRHcmFuZENoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwpAQCAtMTE2Myw3ICsxMTc0
LDcgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlTY3JvbGxDb21wZW5z
YXRpb25Gb3JGaXhlZFBvc2l0aW9uTGF5ZXJXaXQKIAogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IHJvdGF0aW9uQWJvdXRaOwogICAgIHJvdGF0aW9uQWJvdXRaLnJvdGF0ZTNkKDAsIDAsIDkw
KTsKLQorICAgIAogICAgIGNoaWxkLT5zZXRJc0NvbnRhaW5lckZvckZpeGVkUG9zaXRpb25MYXll
cnModHJ1ZSk7CiAgICAgY2hpbGQtPnNldFRyYW5zZm9ybShyb3RhdGlvbkFib3V0Wik7CiAgICAg
Z3JhbmRDaGlsZC0+c2V0UG9zaXRpb24oRmxvYXRQb2ludCg4LCA2KSk7CkBAIC0xMTc2LDExICsx
MTg3LDEzIEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5U2Nyb2xsQ29t
cGVuc2F0aW9uRm9yRml4ZWRQb3NpdGlvbkxheWVyV2l0CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBleHBlY3RlZENoaWxkVHJhbnNmb3JtOwogICAgIGV4cGVjdGVkQ2hpbGRUcmFuc2Zv
cm0ubXVsdGlwbHkocm90YXRpb25BYm91dFopOworICAgIGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0u
dHJhbnNsYXRlKDUwLCA1MCk7CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3Rl
ZEdyYW5kQ2hpbGRUcmFuc2Zvcm07CiAgICAgZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtLm11
bHRpcGx5KHJvdGF0aW9uQWJvdXRaKTsgLy8gY2hpbGQncyBsb2NhbCB0cmFuc2Zvcm0gaXMgaW5o
ZXJpdGVkCiAgICAgZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg4LCA2KTsg
Ly8gdHJhbnNsYXRpb24gYmVjYXVzZSBvZiBwb3NpdGlvbiBvY2N1cnMgYmVmb3JlIGxheWVyJ3Mg
bG9jYWwgdHJhbnNmb3JtLgogICAgIGV4cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9ybS5tdWx0aXBs
eShyb3RhdGlvbkFib3V0Wik7IC8vIGdyYW5kQ2hpbGQncyBsb2NhbCB0cmFuc2Zvcm0KKyAgICBl
eHBlY3RlZEdyYW5kQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7IC8vIHRyYW5zbGF0
aW9uIGJlY2F1c2Ugb2YgaGFsZi13aWR0aCBoYWxmLWhlaWdodCBvY2N1cnMgYWZ0ZXIgbGF5ZXIn
cyBsb2NhbCB0cmFuc2Zvcm0KIAogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVk
R3JlYXRHcmFuZENoaWxkVHJhbnNmb3JtID0gZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtOwog
CkBAIC0xMTk2LDEyICsxMjA5LDE0IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwg
dmVyaWZ5U2Nyb2xsQ29tcGVuc2F0aW9uRm9yRml4ZWRQb3NpdGlvbkxheWVyV2l0CiAgICAgZXhw
ZWN0ZWRDaGlsZFRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKICAgICBleHBlY3RlZENoaWxkVHJh
bnNmb3JtLnRyYW5zbGF0ZSgtMTAsIC0yMCk7IC8vIHNjcm9sbERlbHRhCiAgICAgZXhwZWN0ZWRD
aGlsZFRyYW5zZm9ybS5tdWx0aXBseShyb3RhdGlvbkFib3V0Wik7CisgICAgZXhwZWN0ZWRDaGls
ZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKIAogICAgIGV4cGVjdGVkR3JhbmRDaGlsZFRy
YW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKICAgICBleHBlY3RlZEdyYW5kQ2hpbGRUcmFuc2Zvcm0u
dHJhbnNsYXRlKC0xMCwgLTIwKTsgLy8gY2hpbGQncyBzY3JvbGxEZWx0YSBpcyBpbmhlcml0ZWQK
ICAgICBleHBlY3RlZEdyYW5kQ2hpbGRUcmFuc2Zvcm0ubXVsdGlwbHkocm90YXRpb25BYm91dFop
OyAvLyBjaGlsZCdzIGxvY2FsIHRyYW5zZm9ybSBpcyBpbmhlcml0ZWQKICAgICBleHBlY3RlZEdy
YW5kQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDgsIDYpOyAvLyB0cmFuc2xhdGlvbiBiZWNhdXNl
IG9mIHBvc2l0aW9uIG9jY3VycyBiZWZvcmUgbGF5ZXIncyBsb2NhbCB0cmFuc2Zvcm0uCiAgICAg
ZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtLm11bHRpcGx5KHJvdGF0aW9uQWJvdXRaKTsgLy8g
Z3JhbmRDaGlsZCdzIGxvY2FsIHRyYW5zZm9ybQorICAgIGV4cGVjdGVkR3JhbmRDaGlsZFRyYW5z
Zm9ybS50cmFuc2xhdGUoNTAsIDUwKTsgLy8gdHJhbnNsYXRpb24gYmVjYXVzZSBvZiBoYWxmLXdp
ZHRoIGhhbGYtaGVpZ2h0IG9jY3VycyBhZnRlciBsYXllcidzIGxvY2FsIHRyYW5zZm9ybQogCiAg
ICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZENoaWxkVHJhbnNmb3Jt
LCBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFU
UklYX0VRKGV4cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+ZHJhd1RyYW5z
Zm9ybSgpKTsKQEAgLTEyMjUsNyArMTI0MCw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9u
VGVzdCwgdmVyaWZ5U2Nyb2xsQ29tcGVuc2F0aW9uRm9yRml4ZWRQb3NpdGlvbkxheWVyV2l0CiAK
ICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByb3RhdGlvbkFib3V0WjsKICAgICByb3RhdGlv
bkFib3V0Wi5yb3RhdGUzZCgwLCAwLCA5MCk7Ci0KKyAgICAKICAgICBjaGlsZC0+c2V0SXNDb250
YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKHRydWUpOwogICAgIGNoaWxkLT5zZXRUcmFuc2Zv
cm0ocm90YXRpb25BYm91dFopOwogICAgIGdyYW5kQ2hpbGQtPnNldFBvc2l0aW9uKEZsb2F0UG9p
bnQoOCwgNikpOwpAQCAtMTIzOCwxMSArMTI1MywxMyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNhdGlvbkZvckZpeGVkUG9zaXRpb25MYXllcldp
dAogCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybTsK
ICAgICBleHBlY3RlZENoaWxkVHJhbnNmb3JtLm11bHRpcGx5KHJvdGF0aW9uQWJvdXRaKTsKKyAg
ICBleHBlY3RlZENoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOwogCiAgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtOwogICAgIGV4cGVj
dGVkR3JhbmRDaGlsZFRyYW5zZm9ybS5tdWx0aXBseShyb3RhdGlvbkFib3V0Wik7IC8vIGNoaWxk
J3MgbG9jYWwgdHJhbnNmb3JtIGlzIGluaGVyaXRlZAogICAgIGV4cGVjdGVkR3JhbmRDaGlsZFRy
YW5zZm9ybS50cmFuc2xhdGUoOCwgNik7IC8vIHRyYW5zbGF0aW9uIGJlY2F1c2Ugb2YgcG9zaXRp
b24gb2NjdXJzIGJlZm9yZSBsYXllcidzIGxvY2FsIHRyYW5zZm9ybS4KICAgICBleHBlY3RlZEdy
YW5kQ2hpbGRUcmFuc2Zvcm0ubXVsdGlwbHkocm90YXRpb25BYm91dFopOyAvLyBncmFuZENoaWxk
J3MgbG9jYWwgdHJhbnNmb3JtCisgICAgZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtLnRyYW5z
bGF0ZSg1MCwgNTApOyAvLyB0cmFuc2xhdGlvbiBiZWNhdXNlIG9mIGhhbGYtd2lkdGggaGFsZi1o
ZWlnaHQgb2NjdXJzIGFmdGVyIGxheWVyJ3MgbG9jYWwgdHJhbnNmb3JtCiAKICAgICBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZEdyZWF0R3JhbmRDaGlsZFRyYW5zZm9ybSA9IGV4cGVj
dGVkR3JhbmRDaGlsZFRyYW5zZm9ybTsKIApAQCAtMTI1OSw2ICsxMjc2LDcgQEAgVEVTVChDQ0xh
eWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlTY3JvbGxDb21wZW5zYXRpb25Gb3JGaXhlZFBv
c2l0aW9uTGF5ZXJXaXQKICAgICBleHBlY3RlZENoaWxkVHJhbnNmb3JtLm1ha2VJZGVudGl0eSgp
OwogICAgIGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0xMCwgMCk7IC8vIHNjcm9s
bERlbHRhCiAgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS5tdWx0aXBseShyb3RhdGlvbkFib3V0
Wik7CisgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKIAogICAg
IGV4cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKICAgICBleHBlY3Rl
ZEdyYW5kQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0xMCwgMCk7IC8vIGNoaWxkJ3Mgc2Nyb2xs
RGVsdGEgaXMgaW5oZXJpdGVkCkBAIC0xMjY2LDYgKzEyODQsNyBAQCBURVNUKENDTGF5ZXJUcmVl
SG9zdENvbW1vblRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNhdGlvbkZvckZpeGVkUG9zaXRpb25M
YXllcldpdAogICAgIGV4cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTUsIDAp
OyAvLyBncmFuZENoaWxkJ3Mgc2Nyb2xsRGVsdGEKICAgICBleHBlY3RlZEdyYW5kQ2hpbGRUcmFu
c2Zvcm0udHJhbnNsYXRlKDgsIDYpOyAvLyB0cmFuc2xhdGlvbiBiZWNhdXNlIG9mIHBvc2l0aW9u
IG9jY3VycyBiZWZvcmUgbGF5ZXIncyBsb2NhbCB0cmFuc2Zvcm0uCiAgICAgZXhwZWN0ZWRHcmFu
ZENoaWxkVHJhbnNmb3JtLm11bHRpcGx5KHJvdGF0aW9uQWJvdXRaKTsgLy8gZ3JhbmRDaGlsZCdz
IGxvY2FsIHRyYW5zZm9ybQorICAgIGV4cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9ybS50cmFuc2xh
dGUoNTAsIDUwKTsgLy8gdHJhbnNsYXRpb24gYmVjYXVzZSBvZiBoYWxmLXdpZHRoIGhhbGYtaGVp
Z2h0IG9jY3VycyBhZnRlciBsYXllcidzIGxvY2FsIHRyYW5zZm9ybQogCiAgICAgRVhQRUNUX1RS
QU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZENoaWxkVHJhbnNmb3JtLCBjaGlsZC0+ZHJh
d1RyYW5zZm9ybSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVj
dGVkR3JhbmRDaGlsZFRyYW5zZm9ybSwgZ3JhbmRDaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKQEAg
LTEyOTQsMTcgKzEzMTMsMjAgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJp
ZnlTY3JvbGxDb21wZW5zYXRpb25Gb3JGaXhlZFBvc2l0aW9uTGF5ZXJXaXQKICAgICBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCByb3RhdGlvbkFib3V0WjsKICAgICByb3RhdGlvbkFib3V0Wi5yb3Rh
dGUzZCgwLCAwLCA5MCk7CiAgICAgZ3JhbmRDaGlsZC0+c2V0VHJhbnNmb3JtKHJvdGF0aW9uQWJv
dXRaKTsKLQorICAgIAogICAgIC8vIENhc2UgMTogc2Nyb2xsRGVsdGEgb2YgMCwgMAogICAgIGNo
aWxkLT5zZXRTY3JvbGxEZWx0YShJbnRTaXplKDAsIDApKTsKICAgICBleGVjdXRlQ2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3QuZ2V0KCkpOwotCisgICAgICAgIAogICAg
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm07CisgICAgZXhw
ZWN0ZWRDaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKICAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBleHBlY3RlZFN1cmZhY2VPcmlnaW5UcmFuc2Zvcm07CiAgICAgZXhwZWN0ZWRT
dXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSg4LCA2KTsKICAgICBleHBlY3RlZFN1cmZh
Y2VPcmlnaW5UcmFuc2Zvcm0ubXVsdGlwbHkocm90YXRpb25BYm91dFopOwogICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9ybTsKKyAgICBleHBlY3Rl
ZEdyYW5kQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7CiAgICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggZXhwZWN0ZWRHcmVhdEdyYW5kQ2hpbGRUcmFuc2Zvcm07CisgICAgZXhwZWN0
ZWRHcmVhdEdyYW5kQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7CiAgICAgQVNTRVJU
X1RSVUUoZ3JhbmRDaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JN
QVRJT05fTUFUUklYX0VRKGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0sIGNoaWxkLT5kcmF3VHJhbnNm
b3JtKCkpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRTdXJm
YWNlT3JpZ2luVHJhbnNmb3JtLCBncmFuZENoaWxkLT5yZW5kZXJTdXJmYWNlKCktPm9yaWdpblRy
YW5zZm9ybSgpKTsKQEAgLTEzMTQsNyArMTMzNiw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29t
bW9uVGVzdCwgdmVyaWZ5U2Nyb2xsQ29tcGVuc2F0aW9uRm9yRml4ZWRQb3NpdGlvbkxheWVyV2l0
CiAgICAgLy8gQ2FzZSAyOiBzY3JvbGxEZWx0YSBvZiAxMCwgMzAKICAgICBjaGlsZC0+c2V0U2Ny
b2xsRGVsdGEoSW50U2l6ZSgxMCwgMzApKTsKICAgICBleGVjdXRlQ2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHJvb3QuZ2V0KCkpOwotCisgICAgICAgIAogICAgIC8vIEhlcmUg
dGhlIGdyYW5kQ2hpbGQgcmVtYWlucyB1bmNoYW5nZWQsIGJlY2F1c2UgaXQgc2Nyb2xscyBhbG9u
ZyB3aXRoIHRoZQogICAgIC8vIHJlbmRlclN1cmZhY2UsIGFuZCB0aGUgdHJhbnNsYXRpb24gaXMg
YWN0dWFsbHkgaW4gdGhlIHJlbmRlclN1cmZhY2UuIEJ1dCwgdGhlIGZpeGVkCiAgICAgLy8gcG9z
aXRpb24gZ3JlYXRHcmFuZENoaWxkIGlzIG1vcmUgYXdrd2FyZDogaXRzIGFjdHVhbGx5IGJlaW5n
IGRyYXduIHdpdGggcmVzcGVjdCB0bwpAQCAtMTMyNCw2ICsxMzQ2LDcgQEAgVEVTVChDQ0xheWVy
VHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlTY3JvbGxDb21wZW5zYXRpb25Gb3JGaXhlZFBvc2l0
aW9uTGF5ZXJXaXQKICAgICAvLyB0cmFuc2Zvcm0gZXhwbGljaXRseSBjb250YWlucyB0aGUgdHJh
bnNsYXRpb24gdGhhdCBjYW5jZWxzIG91dCB0aGUgc2Nyb2xsLgogICAgIGV4cGVjdGVkQ2hpbGRU
cmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7CiAgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS50cmFu
c2xhdGUoLTEwLCAtMzApOyAvLyBzY3JvbGxEZWx0YQorICAgIGV4cGVjdGVkQ2hpbGRUcmFuc2Zv
cm0udHJhbnNsYXRlKDUwLCA1MCk7CiAKICAgICBleHBlY3RlZFN1cmZhY2VPcmlnaW5UcmFuc2Zv
cm0ubWFrZUlkZW50aXR5KCk7CiAgICAgZXhwZWN0ZWRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRy
YW5zbGF0ZSgtMTAsIC0zMCk7IC8vIHNjcm9sbERlbHRhCkBAIC0xMzM3LDYgKzEzNjAsNyBAQCBU
RVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNhdGlvbkZv
ckZpeGVkUG9zaXRpb25MYXllcldpdAogICAgIGV4cGVjdGVkR3JlYXRHcmFuZENoaWxkVHJhbnNm
b3JtLm11bHRpcGx5KHJvdGF0aW9uQWJvdXRaLmludmVyc2UoKSk7CiAgICAgZXhwZWN0ZWRHcmVh
dEdyYW5kQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDEwLCAzMCk7IC8vIGV4cGxpY2l0IGNhbmNl
bGluZyBvdXQgdGhlIHNjcm9sbERlbHRhIHRoYXQgZ2V0cyBlbWJlZGRlZCBpbiB0aGUgZml4ZWQg
cG9zaXRpb24gbGF5ZXIncyBzdXJmYWNlLgogICAgIGV4cGVjdGVkR3JlYXRHcmFuZENoaWxkVHJh
bnNmb3JtLm11bHRpcGx5KHJvdGF0aW9uQWJvdXRaKTsKKyAgICBleHBlY3RlZEdyZWF0R3JhbmRD
aGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKIAogICAgIEFTU0VSVF9UUlVFKGdyYW5k
Q2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJ
WF9FUShleHBlY3RlZENoaWxkVHJhbnNmb3JtLCBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKQEAg
LTEzOTIsMjAgKzE0MTYsMjQgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJp
ZnlTY3JvbGxDb21wZW5zYXRpb25Gb3JGaXhlZFBvc2l0aW9uTGF5ZXJXaXQKICAgICBleGVjdXRl
Q2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3QuZ2V0KCkpOwogCiAgICAg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybTsKKyAgICBleHBl
Y3RlZENoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOwogCiAgICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggZXhwZWN0ZWRHcmFuZENoaWxkU3VyZmFjZU9yaWdpblRyYW5zZm9ybTsKICAg
ICBleHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSg4LCA2
KTsKICAgICBleHBlY3RlZEdyYW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLm11bHRpcGx5
KHJvdGF0aW9uQWJvdXRaKTsKIAogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVk
R3JhbmRDaGlsZFRyYW5zZm9ybTsKKyAgICBleHBlY3RlZEdyYW5kQ2hpbGRUcmFuc2Zvcm0udHJh
bnNsYXRlKDUwLCA1MCk7CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZEdy
ZWF0R3JhbmRDaGlsZFN1cmZhY2VPcmlnaW5UcmFuc2Zvcm07CiAgICAgZXhwZWN0ZWRHcmVhdEdy
YW5kQ2hpbGRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSg0MCwgNjApOwogICAgIGV4
cGVjdGVkR3JlYXRHcmFuZENoaWxkU3VyZmFjZU9yaWdpblRyYW5zZm9ybS5tdWx0aXBseShyb3Rh
dGlvbkFib3V0Wik7CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZEdyZWF0
R3JhbmRDaGlsZFRyYW5zZm9ybTsKKyAgICBleHBlY3RlZEdyZWF0R3JhbmRDaGlsZFRyYW5zZm9y
bS50cmFuc2xhdGUoNTAsIDUwKTsKIAogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVj
dGVkRml4ZWRQb3NpdGlvbkNoaWxkVHJhbnNmb3JtOworICAgIGV4cGVjdGVkRml4ZWRQb3NpdGlv
bkNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOwogCiAgICAgQVNTRVJUX1RSVUUoZ3Jh
bmRDaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICBBU1NFUlRfVFJVRShncmVhdEdyYW5kQ2hp
bGQtPnJlbmRlclN1cmZhY2UoKSk7CkBAIC0xNDIyLDYgKzE0NTAsNyBAQCBURVNUKENDTGF5ZXJU
cmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNhdGlvbkZvckZpeGVkUG9zaXRp
b25MYXllcldpdAogCiAgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsK
ICAgICBleHBlY3RlZENoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMTAsIC0zMCk7IC8vIHNjcm9s
bERlbHRhCisgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKIAog
ICAgIGV4cGVjdGVkR3JhbmRDaGlsZFN1cmZhY2VPcmlnaW5UcmFuc2Zvcm0ubWFrZUlkZW50aXR5
KCk7CiAgICAgZXhwZWN0ZWRHcmFuZENoaWxkU3VyZmFjZU9yaWdpblRyYW5zZm9ybS50cmFuc2xh
dGUoLTEwLCAtMzApOyAvLyBzY3JvbGxEZWx0YQpAQCAtMTQ0NSw2ICsxNDc0LDcgQEAgVEVTVChD
Q0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlTY3JvbGxDb21wZW5zYXRpb25Gb3JGaXhl
ZFBvc2l0aW9uTGF5ZXJXaXQKICAgICBleHBlY3RlZEZpeGVkUG9zaXRpb25DaGlsZFRyYW5zZm9y
bS5tdWx0aXBseShjb21wb3VuZE9yaWdpblRyYW5zZm9ybS5pbnZlcnNlKCkpOwogICAgIGV4cGVj
dGVkRml4ZWRQb3NpdGlvbkNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgxMCwgMzApOyAvLyBleHBs
aWNpdCBjYW5jZWxpbmcgb3V0IHRoZSBzY3JvbGxEZWx0YSB0aGF0IGdldHMgZW1iZWRkZWQgaW4g
dGhlIGZpeGVkIHBvc2l0aW9uIGxheWVyJ3Mgc3VyZmFjZS4KICAgICBleHBlY3RlZEZpeGVkUG9z
aXRpb25DaGlsZFRyYW5zZm9ybS5tdWx0aXBseShjb21wb3VuZE9yaWdpblRyYW5zZm9ybSk7Cisg
ICAgZXhwZWN0ZWRGaXhlZFBvc2l0aW9uQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7
CiAKICAgICBBU1NFUlRfVFJVRShncmFuZENoaWxkLT5yZW5kZXJTdXJmYWNlKCkpOwogICAgIEFT
U0VSVF9UUlVFKGdyZWF0R3JhbmRDaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKQEAgLTE0NzcsMTAg
KzE1MDcsMTMgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlTY3JvbGxD
b21wZW5zYXRpb25Gb3JGaXhlZFBvc2l0aW9uTGF5ZXJXaXQKICAgICBjaGlsZC0+c2V0U2Nyb2xs
RGVsdGEoSW50U2l6ZSgwLCAwKSk7CiAgICAgZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eShyb290LmdldCgpKTsKIAorICAgIC8vIFRoZSBleHBlY3RlZCBkcmF3IHRy
YW5zZm9ybXMgd2l0aG91dCBhbnkgc2Nyb2xsIHNob3VsZCBzdGlsbCBpbmNsdWRlIGEgdHJhbnNs
YXRpb24gdG8gdGhlIGNlbnRlciBvZiB0aGUgbGF5ZXIgKGkuZS4gdHJhbnNsYXRpb24gYnkgNTAs
IDUwKS4KICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFN1cmZhY2VPcmlnaW5U
cmFuc2Zvcm07CiAgICAgZXhwZWN0ZWRTdXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSgw
LCAwKTsKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZENoaWxkVHJhbnNmb3Jt
OworICAgIGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7CiAgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtOworICAgIGV4
cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKICAgICBBU1NFUlRf
VFJVRShjaGlsZC0+cmVuZGVyU3VyZmFjZSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05f
TUFUUklYX0VRKGV4cGVjdGVkU3VyZmFjZU9yaWdpblRyYW5zZm9ybSwgY2hpbGQtPnJlbmRlclN1
cmZhY2UoKS0+b3JpZ2luVHJhbnNmb3JtKCkpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9N
QVRSSVhfRVEoZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybSwgY2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7
CkBAIC0xNDk2LDggKzE1MjksNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZl
cmlmeVNjcm9sbENvbXBlbnNhdGlvbkZvckZpeGVkUG9zaXRpb25MYXllcldpdAogICAgIGV4cGVj
dGVkU3VyZmFjZU9yaWdpblRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKICAgICBleHBlY3RlZFN1
cmZhY2VPcmlnaW5UcmFuc2Zvcm0udHJhbnNsYXRlKC0xMCwgLTEwKTsKICAgICBleHBlY3RlZEdy
YW5kQ2hpbGRUcmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7Ci0gICAgZXhwZWN0ZWRHcmFuZENoaWxk
VHJhbnNmb3JtLnRyYW5zbGF0ZSgxMCwgMTApOwotCisgICAgZXhwZWN0ZWRHcmFuZENoaWxkVHJh
bnNmb3JtLnRyYW5zbGF0ZSg2MCwgNjApOwogICAgIEFTU0VSVF9UUlVFKGNoaWxkLT5yZW5kZXJT
dXJmYWNlKCkpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRT
dXJmYWNlT3JpZ2luVHJhbnNmb3JtLCBjaGlsZC0+cmVuZGVyU3VyZmFjZSgpLT5vcmlnaW5UcmFu
c2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZENo
aWxkVHJhbnNmb3JtLCBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKQEAgLTE1MjUsOCArMTU1Nywx
MSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNh
dGlvbkZvckZpeGVkUG9zaXRpb25MYXllclRoYQogICAgIGNoaWxkLT5zZXRTY3JvbGxEZWx0YShJ
bnRTaXplKDAsIDApKTsKICAgICBleGVjdXRlQ2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNp
YmlsaXR5KHJvb3QuZ2V0KCkpOwogCisgICAgLy8gVGhlIGV4cGVjdGVkIGRyYXcgdHJhbnNmb3Jt
cyB3aXRob3V0IGFueSBzY3JvbGwgc2hvdWxkIHN0aWxsIGluY2x1ZGUgYSB0cmFuc2xhdGlvbiB0
byB0aGUgY2VudGVyIG9mIHRoZSBsYXllciAoaS5lLiB0cmFuc2xhdGlvbiBieSA1MCwgNTApLgog
ICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm07CisgICAg
ZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKICAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBleHBlY3RlZEdyYW5kQ2hpbGRUcmFuc2Zvcm07CisgICAgZXhwZWN0ZWRH
cmFuZENoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOwogICAgIEVYUEVDVF9UUkFOU0ZP
Uk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybSwgY2hpbGQtPmRyYXdUcmFu
c2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBlY3RlZEdy
YW5kQ2hpbGRUcmFuc2Zvcm0sIGdyYW5kQ2hpbGQtPmRyYXdUcmFuc2Zvcm0oKSk7CiAKQEAgLTE1
MzYsNyArMTU3MSw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5U2Ny
b2xsQ29tcGVuc2F0aW9uRm9yRml4ZWRQb3NpdGlvbkxheWVyVGhhCiAKICAgICAvLyBIZXJlIHRo
ZSBjaGlsZCBpcyBhZmZlY3RlZCBieSBzY3JvbGxEZWx0YSwgYnV0IHRoZSBmaXhlZCBwb3NpdGlv
biBncmFuZENoaWxkIHNob3VsZCBub3QgYmUgYWZmZWN0ZWQuCiAgICAgZXhwZWN0ZWRDaGlsZFRy
YW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKLSAgICBleHBlY3RlZENoaWxkVHJhbnNmb3JtLnRyYW5z
bGF0ZSgtMTAsIC0xMCk7CisgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNDAs
IDQwKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkQ2hpbGRU
cmFuc2Zvcm0sIGNoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1B
VElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtLCBncmFuZENoaWxkLT5k
cmF3VHJhbnNmb3JtKCkpOwogfQpAQCAtMTU2MiwxMSArMTU5NywxNCBAQCBURVNUKENDTGF5ZXJU
cmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVNjcm9sbENvbXBlbnNhdGlvbkZvckZpeGVkUG9zaXRp
b25MYXllclRoYQogICAgIHJvb3QtPnNldFNjcm9sbERlbHRhKEludFNpemUoMCwgMCkpOwogICAg
IGV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkocm9vdC5nZXQoKSk7
CiAKKyAgICAvLyBUaGUgZXhwZWN0ZWQgZHJhdyB0cmFuc2Zvcm1zIHdpdGhvdXQgYW55IHNjcm9s
bCBzaG91bGQgc3RpbGwgaW5jbHVkZSBhIHRyYW5zbGF0aW9uIHRvIHRoZSBjZW50ZXIgb2YgdGhl
IGxheWVyIChpLmUuIHRyYW5zbGF0aW9uIGJ5IDUwLCA1MCkuCiAgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybTsKICAgICBleHBlY3RlZENoaWxkVHJhbnNm
b3JtLm11bHRpcGx5KHJvdGF0aW9uQnlaKTsKKyAgICBleHBlY3RlZENoaWxkVHJhbnNmb3JtLnRy
YW5zbGF0ZSg1MCwgNTApOwogCiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRH
cmFuZENoaWxkVHJhbnNmb3JtOwogICAgIGV4cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9ybS5tdWx0
aXBseShyb3RhdGlvbkJ5Wik7CisgICAgZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtLnRyYW5z
bGF0ZSg1MCwgNTApOwogCiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBl
Y3RlZENoaWxkVHJhbnNmb3JtLCBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKICAgICBFWFBFQ1Rf
VFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkR3JhbmRDaGlsZFRyYW5zZm9ybSwgZ3Jh
bmRDaGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKQEAgLTE1NzksNiArMTYxNyw3IEBAIFRFU1QoQ0NM
YXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5U2Nyb2xsQ29tcGVuc2F0aW9uRm9yRml4ZWRQ
b3NpdGlvbkxheWVyVGhhCiAgICAgZXhwZWN0ZWRDaGlsZFRyYW5zZm9ybS5tYWtlSWRlbnRpdHko
KTsKICAgICBleHBlY3RlZENoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMTAsIC0xMCk7IC8vIHRo
ZSBzY3JvbGxEZWx0YQogICAgIGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0ubXVsdGlwbHkocm90YXRp
b25CeVopOworICAgIGV4cGVjdGVkQ2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7CiAK
ICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkQ2hpbGRUcmFuc2Zv
cm0sIGNoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9N
QVRSSVhfRVEoZXhwZWN0ZWRHcmFuZENoaWxkVHJhbnNmb3JtLCBncmFuZENoaWxkLT5kcmF3VHJh
bnNmb3JtKCkpOwpAQCAtMzQxOCwxNCArMzQ1NywxNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QsIHZlcmlmeUxheWVyVHJhbnNmb3Jtc0luSGlnaERQSSkKICAgICBleHBlY3RlZFBh
cmVudFNjcmVlblNwYWNlVHJhbnNmb3JtLnNldE0xMShkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAg
ZXhwZWN0ZWRQYXJlbnRTY3JlZW5TcGFjZVRyYW5zZm9ybS5zZXRNMjIoZGV2aWNlU2NhbGVGYWN0
b3IpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRQYXJlbnRT
Y3JlZW5TcGFjZVRyYW5zZm9ybSwgcGFyZW50LT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKLSAg
ICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFBhcmVudERyYXdUcmFuc2Zvcm07CisK
KyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFBhcmVudERyYXdUcmFuc2Zvcm0g
PSBleHBlY3RlZFBhcmVudFNjcmVlblNwYWNlVHJhbnNmb3JtOworICAgIGV4cGVjdGVkUGFyZW50
RHJhd1RyYW5zZm9ybS50cmFuc2xhdGUoMC41ICogcGFyZW50LT5ib3VuZHMoKS53aWR0aCgpLCAw
LjUgKiBwYXJlbnQtPmJvdW5kcygpLmhlaWdodCgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJ
T05fTUFUUklYX0VRKGV4cGVjdGVkUGFyZW50RHJhd1RyYW5zZm9ybSwgcGFyZW50LT5kcmF3VHJh
bnNmb3JtKCkpOwogCiAgICAgLy8gVmVyaWZ5IHJlc3VsdHMgb2YgdHJhbnNmb3JtZWQgcGFyZW50
IHJlY3RzCiAgICAgSW50UmVjdCBwYXJlbnRCb3VuZHMoSW50UG9pbnQoKSwgcGFyZW50LT5ib3Vu
ZHMoKSk7Ci0gICAgSW50UmVjdCBwYXJlbnRDb250ZW50Qm91bmRzKEludFBvaW50KCksIHBhcmVu
dC0+Y29udGVudEJvdW5kcygpKTsKKyAgICBJbnRSZWN0IGNlbnRlcmVkUGFyZW50Qm91bmRzID0g
cGFyZW50Qm91bmRzOworICAgIGNlbnRlcmVkUGFyZW50Qm91bmRzLm1vdmUoLXBhcmVudEJvdW5k
cy53aWR0aCgpICogMC41LCAtcGFyZW50Qm91bmRzLmhlaWdodCgpICogMC41KTsKIAotICAgIEZs
b2F0UmVjdCBwYXJlbnREcmF3UmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHBhcmVu
dC0+ZHJhd1RyYW5zZm9ybSgpLCBGbG9hdFJlY3QocGFyZW50Q29udGVudEJvdW5kcykpOworICAg
IEZsb2F0UmVjdCBwYXJlbnREcmF3UmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHBh
cmVudC0+ZHJhd1RyYW5zZm9ybSgpLCBGbG9hdFJlY3QoY2VudGVyZWRQYXJlbnRCb3VuZHMpKTsK
ICAgICBGbG9hdFJlY3QgcGFyZW50U2NyZWVuU3BhY2VSZWN0ID0gQ0NNYXRoVXRpbDo6bWFwQ2xp
cHBlZFJlY3QocGFyZW50LT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLCBGbG9hdFJlY3QocGFyZW50
Qm91bmRzKSk7CiAKICAgICBGbG9hdFJlY3QgZXhwZWN0ZWRQYXJlbnREcmF3UmVjdChGbG9hdFBv
aW50KCksIHBhcmVudC0+Ym91bmRzKCkpOwpAQCAtMzQ0MCwxNSArMzQ4MiwxNiBAQCBURVNUKEND
TGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUxheWVyVHJhbnNmb3Jtc0luSGlnaERQSSkK
ICAgICBleHBlY3RlZENoaWxkU2NyZWVuU3BhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKGNoaWxkLT5w
b3NpdGlvbigpLngoKSwgY2hpbGQtPnBvc2l0aW9uKCkueSgpKTsKICAgICBFWFBFQ1RfVFJBTlNG
T1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkQ2hpbGRTY3JlZW5TcGFjZVRyYW5zZm9ybSwgY2hp
bGQtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwogCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggZXhwZWN0ZWRDaGlsZERyYXdUcmFuc2Zvcm07Ci0gICAgZXhwZWN0ZWRDaGlsZERyYXdUcmFu
c2Zvcm0udHJhbnNsYXRlKGRldmljZVNjYWxlRmFjdG9yICogY2hpbGQtPnBvc2l0aW9uKCkueCgp
LCBkZXZpY2VTY2FsZUZhY3RvciAqIGNoaWxkLT5wb3NpdGlvbigpLnkoKSk7CisgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRDaGlsZERyYXdUcmFuc2Zvcm0gPSBleHBlY3RlZENo
aWxkU2NyZWVuU3BhY2VUcmFuc2Zvcm07CisgICAgZXhwZWN0ZWRDaGlsZERyYXdUcmFuc2Zvcm0u
dHJhbnNsYXRlKDAuNSAqIGNoaWxkLT5ib3VuZHMoKS53aWR0aCgpLCAwLjUgKiBjaGlsZC0+Ym91
bmRzKCkuaGVpZ2h0KCkpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhw
ZWN0ZWRDaGlsZERyYXdUcmFuc2Zvcm0sIGNoaWxkLT5kcmF3VHJhbnNmb3JtKCkpOwogCiAgICAg
Ly8gVmVyaWZ5IHJlc3VsdHMgb2YgdHJhbnNmb3JtZWQgY2hpbGQgcmVjdHMKICAgICBJbnRSZWN0
IGNoaWxkQm91bmRzKEludFBvaW50KCksIGNoaWxkLT5ib3VuZHMoKSk7Ci0gICAgSW50UmVjdCBj
aGlsZENvbnRlbnRCb3VuZHMoSW50UG9pbnQoKSwgY2hpbGQtPmNvbnRlbnRCb3VuZHMoKSk7Cisg
ICAgSW50UmVjdCBjZW50ZXJlZENoaWxkQm91bmRzID0gY2hpbGRCb3VuZHM7CisgICAgY2VudGVy
ZWRDaGlsZEJvdW5kcy5tb3ZlKC1jaGlsZEJvdW5kcy53aWR0aCgpICogMC41LCAtY2hpbGRCb3Vu
ZHMuaGVpZ2h0KCkgKiAwLjUpOwogCi0gICAgRmxvYXRSZWN0IGNoaWxkRHJhd1JlY3QgPSBDQ01h
dGhVdGlsOjptYXBDbGlwcGVkUmVjdChjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpLCBGbG9hdFJlY3Qo
Y2hpbGRDb250ZW50Qm91bmRzKSk7CisgICAgRmxvYXRSZWN0IGNoaWxkRHJhd1JlY3QgPSBDQ01h
dGhVdGlsOjptYXBDbGlwcGVkUmVjdChjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpLCBGbG9hdFJlY3Qo
Y2VudGVyZWRDaGlsZEJvdW5kcykpOwogICAgIEZsb2F0UmVjdCBjaGlsZFNjcmVlblNwYWNlUmVj
dCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGNoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9y
bSgpLCBGbG9hdFJlY3QoY2hpbGRCb3VuZHMpKTsKIAogICAgIEZsb2F0UmVjdCBleHBlY3RlZENo
aWxkRHJhd1JlY3QoRmxvYXRQb2ludCgpLCBjaGlsZC0+Ym91bmRzKCkpOwpAQCAtMzQ1OCwxMSAr
MzUwMSw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5TGF5ZXJUcmFu
c2Zvcm1zSW5IaWdoRFBJKQogICAgIEVYUEVDVF9GTE9BVF9SRUNUX0VRKGV4cGVjdGVkQ2hpbGRE
cmF3UmVjdCwgY2hpbGRTY3JlZW5TcGFjZVJlY3QpOwogCiAgICAgLy8gVmVyaWZ5IGNoaWxkTm9T
Y2FsZSB0cmFuc2Zvcm1zCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRDaGls
ZE5vU2NhbGVUcmFuc2Zvcm0gPSBjaGlsZC0+ZHJhd1RyYW5zZm9ybSgpOwotICAgIC8vIGRyYXdU
cmFuc2Zvcm0gdHJhbnNmb3JtcyBvbiBjb250ZW50IHJlY3RzLiBUaGUgY2hpbGQncyBjb250ZW50
IHJlY3QKLSAgICAvLyBpbmNvcnBvcmF0ZXMgZGV2aWNlIHNjYWxlLCBidXQgdGhlIGNoaWxkTm9T
Y2FsZSBkb2VzIG5vdDsgYWRkIGl0IGhlcmUuCi0gICAgZXhwZWN0ZWRDaGlsZE5vU2NhbGVUcmFu
c2Zvcm0uc2NhbGUoZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElP
Tl9NQVRSSVhfRVEoY2hpbGROb1NjYWxlLT5kcmF3VHJhbnNmb3JtKCksIGV4cGVjdGVkQ2hpbGRO
b1NjYWxlVHJhbnNmb3JtKTsKKyAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGNo
aWxkLT5kcmF3VHJhbnNmb3JtKCksIGNoaWxkTm9TY2FsZS0+ZHJhd1RyYW5zZm9ybSgpKTsKICAg
ICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGNoaWxkLT5zY3JlZW5TcGFjZVRyYW5z
Zm9ybSgpLCBjaGlsZE5vU2NhbGUtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwogfQogCkBAIC0z
NTE2LDEyICszNTU1LDE2IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5
UmVuZGVyU3VyZmFjZVRyYW5zZm9ybXNJbkhpZ2hEUEkpCiAgICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggZXhwZWN0ZWRQYXJlbnRTY3JlZW5TcGFjZVRyYW5zZm9ybTsKICAgICBleHBlY3RlZFBh
cmVudFNjcmVlblNwYWNlVHJhbnNmb3JtLnNldE0xMShkZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAg
ZXhwZWN0ZWRQYXJlbnRTY3JlZW5TcGFjZVRyYW5zZm9ybS5zZXRNMjIoZGV2aWNlU2NhbGVGYWN0
b3IpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkUGFyZW50RHJhd1RyYW5z
Zm9ybSA9IGV4cGVjdGVkUGFyZW50U2NyZWVuU3BhY2VUcmFuc2Zvcm07CisgICAgZXhwZWN0ZWRQ
YXJlbnREcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZSgwLjUgKiBwYXJlbnQtPmJvdW5kcygpLndpZHRo
KCksIDAuNSAqIHBhcmVudC0+Ym91bmRzKCkuaGVpZ2h0KCkpOworICAgIEVYUEVDVF9UUkFOU0ZP
Uk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRQYXJlbnREcmF3VHJhbnNmb3JtLCBwYXJlbnQtPmRy
YXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShleHBl
Y3RlZFBhcmVudFNjcmVlblNwYWNlVHJhbnNmb3JtLCBwYXJlbnQtPnNjcmVlblNwYWNlVHJhbnNm
b3JtKCkpOwogCi0gICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRQYXJlbnREcmF3
VHJhbnNmb3JtOwotICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEocGFyZW50LT5k
cmF3VHJhbnNmb3JtKCksIGV4cGVjdGVkUGFyZW50RHJhd1RyYW5zZm9ybSk7Ci0KICAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZERyYXdUcmFuc2Zvcm07CisgICAgZXhwZWN0ZWRE
cmF3VHJhbnNmb3JtLnNldE0xMShkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgZXhwZWN0ZWREcmF3
VHJhbnNmb3JtLnNldE0yMihkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgZXhwZWN0ZWREcmF3VHJh
bnNmb3JtLnNldE00MSgwLjUgKiBkZXZpY2VTY2FsZUZhY3RvciAqIGNoaWxkLT5ib3VuZHMoKS53
aWR0aCgpKTsKKyAgICBleHBlY3RlZERyYXdUcmFuc2Zvcm0uc2V0TTQyKDAuNSAqIGRldmljZVNj
YWxlRmFjdG9yICogY2hpbGQtPmJvdW5kcygpLmhlaWdodCgpKTsKICAgICBFWFBFQ1RfVFJBTlNG
T1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkRHJhd1RyYW5zZm9ybSwgY2hpbGQtPmRyYXdUcmFu
c2Zvcm0oKSk7CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFNjcmVlblNw
YWNlVHJhbnNmb3JtOwpAQCAtMzUzMCwxNCArMzU3MywxMyBAQCBURVNUKENDTGF5ZXJUcmVlSG9z
dENvbW1vblRlc3QsIHZlcmlmeVJlbmRlclN1cmZhY2VUcmFuc2Zvcm1zSW5IaWdoRFBJKQogICAg
IGV4cGVjdGVkU2NyZWVuU3BhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKGNoaWxkLT5wb3NpdGlvbigp
LngoKSwgY2hpbGQtPnBvc2l0aW9uKCkueSgpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05f
TUFUUklYX0VRKGV4cGVjdGVkU2NyZWVuU3BhY2VUcmFuc2Zvcm0sIGNoaWxkLT5zY3JlZW5TcGFj
ZVRyYW5zZm9ybSgpKTsKIAotICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkRHVw
bGljYXRlQ2hpbGREcmF3VHJhbnNmb3JtID0gY2hpbGQtPmRyYXdUcmFuc2Zvcm0oKTsKICAgICBF
WFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGNoaWxkLT5kcmF3VHJhbnNmb3JtKCksIGR1
cGxpY2F0ZUNoaWxkTm9uT3duZXItPmRyYXdUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX1RSQU5T
Rk9STUFUSU9OX01BVFJJWF9FUShjaGlsZC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgZHVwbGlj
YXRlQ2hpbGROb25Pd25lci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgRVhQRUNUX0lO
VF9SRUNUX0VRKGNoaWxkLT5kcmF3YWJsZUNvbnRlbnRSZWN0KCksIGR1cGxpY2F0ZUNoaWxkTm9u
T3duZXItPmRyYXdhYmxlQ29udGVudFJlY3QoKSk7CiAgICAgRVhQRUNUX0VRKGNoaWxkLT5jb250
ZW50Qm91bmRzKCksIGR1cGxpY2F0ZUNoaWxkTm9uT3duZXItPmNvbnRlbnRCb3VuZHMoKSk7CiAK
ICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFJlbmRlclN1cmZhY2VEcmF3VHJh
bnNmb3JtOwotICAgIGV4cGVjdGVkUmVuZGVyU3VyZmFjZURyYXdUcmFuc2Zvcm0udHJhbnNsYXRl
KGRldmljZVNjYWxlRmFjdG9yICogY2hpbGQtPnBvc2l0aW9uKCkueCgpLCBkZXZpY2VTY2FsZUZh
Y3RvciAqIGNoaWxkLT5wb3NpdGlvbigpLnkoKSk7CisgICAgZXhwZWN0ZWRSZW5kZXJTdXJmYWNl
RHJhd1RyYW5zZm9ybS50cmFuc2xhdGUoZGV2aWNlU2NhbGVGYWN0b3IgKiAoY2hpbGQtPnBvc2l0
aW9uKCkueCgpICsgMC41ICogY2hpbGQtPmJvdW5kcygpLndpZHRoKCkpLCBkZXZpY2VTY2FsZUZh
Y3RvciAqIChjaGlsZC0+cG9zaXRpb24oKS55KCkgKyAwLjUgKiBjaGlsZC0+Ym91bmRzKCkuaGVp
Z2h0KCkpKTsKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkUmVu
ZGVyU3VyZmFjZURyYXdUcmFuc2Zvcm0sIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFu
c2Zvcm0oKSk7CiAKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZE9yaWdpblRy
YW5zZm9ybTsKQEAgLTM1NTAsOCArMzU5Miw4IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9u
VGVzdCwgdmVyaWZ5UmVuZGVyU3VyZmFjZVRyYW5zZm9ybXNJbkhpZ2hEUEkpCiAKICAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBleHBlY3RlZFJlcGxpY2FEcmF3VHJhbnNmb3JtOwogICAgIGV4
cGVjdGVkUmVwbGljYURyYXdUcmFuc2Zvcm0uc2V0TTIyKC0xKTsKLSAgICBleHBlY3RlZFJlcGxp
Y2FEcmF3VHJhbnNmb3JtLnNldE00MSg2KTsKLSAgICBleHBlY3RlZFJlcGxpY2FEcmF3VHJhbnNm
b3JtLnNldE00Mig2KTsKKyAgICBleHBlY3RlZFJlcGxpY2FEcmF3VHJhbnNmb3JtLnNldE00MSgx
My41KTsKKyAgICBleHBlY3RlZFJlcGxpY2FEcmF3VHJhbnNmb3JtLnNldE00MigtMS41KTsKICAg
ICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkUmVwbGljYURyYXdUcmFu
c2Zvcm0sIGNoaWxkLT5yZW5kZXJTdXJmYWNlKCktPnJlcGxpY2FEcmF3VHJhbnNmb3JtKCkpOwog
CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRSZXBsaWNhT3JpZ2luVHJhbnNm
b3JtID0gZXhwZWN0ZWRSZXBsaWNhRHJhd1RyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXgg
ZTY0MTU2YmQ2MzM0NjBiZDlmOWNiZTdiMzQ2NjdjNDBjMWY0MjM1Ny4uMTQxOTE2NGI1Mjk5YjI1
YTgyYzUwOWMzNWNjODM0MDhkZTNlY2JkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTEwMzgsMTIg
KzEwMzgsMTIgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBwYWdlU2NhbGVEZWx0
YUFwcGxpZWRUb1Jvb3RTY3JvbGxMYXllck9ubHkpCiAgICAgbV9ob3N0SW1wbC0+ZHJhd0xheWVy
cyhmcmFtZSk7CiAgICAgbV9ob3N0SW1wbC0+ZGlkRHJhd0FsbExheWVycyhmcmFtZSk7CiAKLSAg
ICBFWFBFQ1RfRVEocm9vdC0+ZHJhd1RyYW5zZm9ybSgpLm0xMSgpLCBuZXdQYWdlU2NhbGUpOwot
ICAgIEVYUEVDVF9FUShyb290LT5kcmF3VHJhbnNmb3JtKCkubTIyKCksIG5ld1BhZ2VTY2FsZSk7
Ci0gICAgRVhQRUNUX0VRKGNoaWxkLT5kcmF3VHJhbnNmb3JtKCkubTExKCksIG5ld1BhZ2VTY2Fs
ZSk7Ci0gICAgRVhQRUNUX0VRKGNoaWxkLT5kcmF3VHJhbnNmb3JtKCkubTIyKCksIG5ld1BhZ2VT
Y2FsZSk7Ci0gICAgRVhQRUNUX0VRKGdyYW5kQ2hpbGQtPmRyYXdUcmFuc2Zvcm0oKS5tMTEoKSwg
bmV3UGFnZVNjYWxlKTsKLSAgICBFWFBFQ1RfRVEoZ3JhbmRDaGlsZC0+ZHJhd1RyYW5zZm9ybSgp
Lm0yMigpLCBuZXdQYWdlU2NhbGUpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHBhZ2VT
Y2FsZVRyYW5zZm9ybTsKKyAgICBwYWdlU2NhbGVUcmFuc2Zvcm0uc2NhbGUobmV3UGFnZVNjYWxl
KTsKKyAgICBwYWdlU2NhbGVUcmFuc2Zvcm0udHJhbnNsYXRlKDAuNSAqIHN1cmZhY2VTaXplLndp
ZHRoKCksIDAuNSAqIHN1cmZhY2VTaXplLmhlaWdodCgpKTsKKyAgICBFWFBFQ1RfRVEocm9vdC0+
ZHJhd1RyYW5zZm9ybSgpLCBwYWdlU2NhbGVUcmFuc2Zvcm0pOworICAgIEVYUEVDVF9FUShjaGls
ZC0+ZHJhd1RyYW5zZm9ybSgpLCBwYWdlU2NhbGVUcmFuc2Zvcm0pOworICAgIEVYUEVDVF9FUShn
cmFuZENoaWxkLT5kcmF3VHJhbnNmb3JtKCksIHBhZ2VTY2FsZVRyYW5zZm9ybSk7CiB9CiAKIFRF
U1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgc2Nyb2xsQ2hpbGRBbmRDaGFuZ2VQYWdlU2Nh
bGVPbk1haW5UaHJlYWQpCkBAIC0xNjM1LDExICsxNjM1LDkgQEAgVEVTVF9GKENDTGF5ZXJUcmVl
SG9zdEltcGxUZXN0LCBwYXJ0aWFsU3dhcFJlY2VpdmVzRGFtYWdlUmVjdCkKICAgICBjaGlsZC0+
c2V0UG9zaXRpb24oRmxvYXRQb2ludCgxMiwgMTMpKTsKICAgICBjaGlsZC0+c2V0QW5jaG9yUG9p
bnQoRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgY2hpbGQtPnNldEJvdW5kcyhJbnRTaXplKDE0LCAx
NSkpOwotICAgIGNoaWxkLT5zZXRDb250ZW50Qm91bmRzKEludFNpemUoMTQsIDE1KSk7CiAgICAg
Y2hpbGQtPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICByb290LT5zZXRBbmNob3JQb2ludChG
bG9hdFBvaW50KDAsIDApKTsKICAgICByb290LT5zZXRCb3VuZHMoSW50U2l6ZSg1MDAsIDUwMCkp
OwotICAgIHJvb3QtPnNldENvbnRlbnRCb3VuZHMoSW50U2l6ZSg1MDAsIDUwMCkpOwogICAgIHJv
b3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICByb290LT5hZGRDaGlsZChhZG9wdFB0cihj
aGlsZCkpOwogICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zZXRSb290TGF5ZXIoYWRvcHRQdHIocm9v
dCkpOwpAQCAtMTY5NywxMSArMTY5NSw5IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVz
dCwgcm9vdExheWVyRG9lc250Q3JlYXRlRXh0cmFTdXJmYWNlKQogICAgIENDTGF5ZXJJbXBsKiBj
aGlsZCA9IG5ldyBGYWtlRHJhd2FibGVDQ0xheWVySW1wbCgyKTsKICAgICBjaGlsZC0+c2V0QW5j
aG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CiAgICAgY2hpbGQtPnNldEJvdW5kcyhJbnRTaXpl
KDEwLCAxMCkpOwotICAgIGNoaWxkLT5zZXRDb250ZW50Qm91bmRzKEludFNpemUoMTAsIDEwKSk7
CiAgICAgY2hpbGQtPnNldERyYXdzQ29udGVudCh0cnVlKTsKICAgICByb290LT5zZXRBbmNob3JQ
b2ludChGbG9hdFBvaW50KDAsIDApKTsKICAgICByb290LT5zZXRCb3VuZHMoSW50U2l6ZSgxMCwg
MTApKTsKLSAgICByb290LT5zZXRDb250ZW50Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CiAgICAg
cm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpOwogICAgIHJvb3QtPnNldE9wYWNpdHkoMC43Zik7
CiAgICAgcm9vdC0+YWRkQ2hpbGQoYWRvcHRQdHIoY2hpbGQpKTsKQEAgLTE3MTMsNyArMTcwOSw2
IEBAIFRFU1RfRihDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCwgcm9vdExheWVyRG9lc250Q3JlYXRl
RXh0cmFTdXJmYWNlKQogICAgIEVYUEVDVF9UUlVFKG1faG9zdEltcGwtPnByZXBhcmVUb0RyYXco
ZnJhbWUpKTsKICAgICBFWFBFQ1RfRVEoMXUsIGZyYW1lLnJlbmRlclN1cmZhY2VMYXllckxpc3Qt
PnNpemUoKSk7CiAgICAgRVhQRUNUX0VRKDF1LCBmcmFtZS5yZW5kZXJQYXNzZXMuc2l6ZSgpKTsK
LSAgICBtX2hvc3RJbXBsLT5kaWREcmF3QWxsTGF5ZXJzKGZyYW1lKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwCmluZGV4IGVhNzY3OGIwMmFiZTNjZjFkMWYzMTBkNjNhNzI2ZTEzMGQzYjNk
NWQuLjYyYjFlNDVmZDM2NTI5OWNjNDI4M2VjOThkMTIwZWUwY2UxNGE5MmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApA
QCAtMTMwMSw2ICsxMzAxLDcgQEAgcHVibGljOgogICAgICAgICAvLyBUaGUgcm9vdCBsYXllciBp
cyBzY2FsZWQgYnkgMnguCiAgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJvb3RTY3Jl
ZW5TcGFjZVRyYW5zZm9ybSA9IHNjYWxlVHJhbnNmb3JtOwogICAgICAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCByb290RHJhd1RyYW5zZm9ybSA9IHNjYWxlVHJhbnNmb3JtOworICAgICAgICBy
b290RHJhd1RyYW5zZm9ybS50cmFuc2xhdGUocm9vdC0+Ym91bmRzKCkud2lkdGgoKSAqIDAuNSwg
cm9vdC0+Ym91bmRzKCkuaGVpZ2h0KCkgKiAwLjUpOwogCiAgICAgICAgIEVYUEVDVF9FUShyb290
RHJhd1RyYW5zZm9ybSwgcm9vdC0+ZHJhd1RyYW5zZm9ybSgpKTsKICAgICAgICAgRVhQRUNUX0VR
KHJvb3RTY3JlZW5TcGFjZVRyYW5zZm9ybSwgcm9vdC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7
CkBAIC0xMzEwLDYgKzEzMTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNoaWxkU2NyZWVuU3BhY2VU
cmFuc2Zvcm0udHJhbnNsYXRlKDIsIDIpOwogICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBjaGlsZERyYXdUcmFuc2Zvcm0gPSBzY2FsZVRyYW5zZm9ybTsKICAgICAgICAgY2hpbGREcmF3
VHJhbnNmb3JtLnRyYW5zbGF0ZSgyLCAyKTsKKyAgICAgICAgY2hpbGREcmF3VHJhbnNmb3JtLnRy
YW5zbGF0ZShjaGlsZC0+Ym91bmRzKCkud2lkdGgoKSAqIDAuNSwgY2hpbGQtPmJvdW5kcygpLmhl
aWdodCgpICogMC41KTsKIAogICAgICAgICBFWFBFQ1RfRVEoY2hpbGREcmF3VHJhbnNmb3JtLCBj
aGlsZC0+ZHJhd1RyYW5zZm9ybSgpKTsKICAgICAgICAgRVhQRUNUX0VRKGNoaWxkU2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0sIGNoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCmluZGV4IDllZmYx
NTdiYzUyMTM4ZDAxZTIwNmJkMDA1ZjJlZDYxOWI2Y2ZiMWYuLjUyNmFiNGU1OTBhMDNlNjk1YTdm
YzIyMDZmYWRhYzcyZGJkN2EzMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcApAQCAtNTgsMTUgKzU4LDE3IEBAIHByaXZhdGU6CiAK
IHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwq
PiwgQ0NSZW5kZXJTdXJmYWNlLCBDQ0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4g
Q0NMYXllckl0ZXJhdG9yVHlwZTsKIAotc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlZExheWVySW1w
bD4gbWFrZUxheWVyKENDVGlsZWRMYXllckltcGwqIHBhcmVudCwgY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgZmxv
YXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUsIGNvbnN0IEludFJlY3QmIGxheWVyT3BhcXVlUmVjdCwg
VmVjdG9yPENDTGF5ZXJJbXBsKj4mIHN1cmZhY2VMYXllckxpc3QpCitzdGF0aWMgUGFzc093blB0
cjxDQ1RpbGVkTGF5ZXJJbXBsPiBtYWtlTGF5ZXIoQ0NUaWxlZExheWVySW1wbCogcGFyZW50LCBj
b25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3JpZ2luVHJhbnNmb3JtLCBjb25zdCBJbnRS
ZWN0JiBsYXllclJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlLCBjb25zdCBJbnRSZWN0
JiBsYXllck9wYXF1ZVJlY3QsIFZlY3RvcjxDQ0xheWVySW1wbCo+JiBzdXJmYWNlTGF5ZXJMaXN0
KQogewogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBsYXllciA9IENDVGlsZWRMYXllcklt
cGw6OmNyZWF0ZSgxKTsKICAgICBPd25QdHI8Q0NMYXllclRpbGluZ0RhdGE+IHRpbGVyID0gQ0NM
YXllclRpbGluZ0RhdGE6OmNyZWF0ZShJbnRTaXplKDEwMCwgMTAwKSwgQ0NMYXllclRpbGluZ0Rh
dGE6Ok5vQm9yZGVyVGV4ZWxzKTsKICAgICB0aWxlci0+c2V0Qm91bmRzKGxheWVyUmVjdC5zaXpl
KCkpOwogICAgIGxheWVyLT5zZXRUaWxpbmdEYXRhKCp0aWxlcik7CiAgICAgbGF5ZXItPnNldFNr
aXBzRHJhdyhmYWxzZSk7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZHJhd1RyYW5zZm9y
bSA9IG9yaWdpblRyYW5zZm9ybTsKKyAgICBkcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZSgwLjUgKiBs
YXllclJlY3Qud2lkdGgoKSwgMC41ICogbGF5ZXJSZWN0LmhlaWdodCgpKTsKICAgICBsYXllci0+
c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJhbnNmb3JtKTsKLSAgICBsYXllci0+c2V0U2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0oZHJhd1RyYW5zZm9ybSk7CisgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJh
bnNmb3JtKG9yaWdpblRyYW5zZm9ybSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVj
dChsYXllclJlY3QpOwogICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eShvcGFjaXR5KTsKICAgICBs
YXllci0+c2V0T3BhcXVlKG9wYXF1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAppbmRleCBjMjc5NmI5YWE2ZDA5
ODFhNDdlNTJlZmVlYjZhNWMwNmFkOWJhNDg2Li5mYzAyMTViY2JhYzY0YTc4MjUwMjc1MmU3YzYx
YjYyNzdiOTE1YjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Rp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTE0OSw2ICsxNDksNyBAQCBURVNUX0Yo
VGlsZWRMYXllckNocm9taXVtVGVzdCwgcHVzaE9jY2x1ZGVkRGlydHlUaWxlcykKIAogICAgIC8v
IFRoZSB0aWxlIHNpemUgaXMgMTAweDEwMCwgc28gdGhpcyBpbnZhbGlkYXRlcyBhbmQgdGhlbiBw
YWludHMgdHdvIHRpbGVzLgogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSgxMDAsIDIwMCkp
OworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KDEs
IDAsIDAsIDEsIGxheWVyLT5ib3VuZHMoKS53aWR0aCgpIC8gMi4wLCBsYXllci0+Ym91bmRzKCku
aGVpZ2h0KCkgLyAyLjApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJl
Y3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKIApAQCAtMzgyLDYgKzM4Myw3IEBAIFRFU1RfRihUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50ZWRPY2NsdWRlZFRpbGVzKQogICAgIG9j
Y2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICBsYXll
ci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAxMDApKTsKKyAgICBsYXllci0+c2V0RHJhd1RyYW5z
Zm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCku
d2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4wKSk7CiAgICAgbGF5
ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAgICAg
bGF5ZXItPmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAK
QEAgLTEwNjAsOSArMTA2MiwxMCBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGls
ZXNQYWludGVkV2l0aE9jY2x1c2lvbikKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAu
CiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKyAgICBsYXllci0+
c2V0RHJhd1RyYW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXll
ci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4w
KSk7CiAKICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAx
MDApKTsKLSAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQo
KSwgbGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkpOworICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVu
dFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+
aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKIAogICAgIGxh
eWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5Q2FsY3VsYXRvcik7CkBAIC0xMTA2
LDYgKzExMDksNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVk
V2l0aE9jY2x1c2lvbkFuZFZpc2libGl0eUNvbnN0cmFpbnRzKQogICAgIC8vIFRoZSB0aWxlIHNp
emUgaXMgMTAweDEwMC4KIAogICAgIGxheWVyLT5zZXRCb3VuZHMoSW50U2l6ZSg2MDAsIDYwMCkp
OworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KDEs
IDAsIDAsIDEsIGxheWVyLT5ib3VuZHMoKS53aWR0aCgpIC8gMi4wLCBsYXllci0+Ym91bmRzKCku
aGVpZ2h0KCkgLyAyLjApKTsKIAogICAgIC8vIFRoZSBwYXJ0aWFsbHkgb2NjbHVkZWQgdGlsZXMg
KGJ5IHRoZSAxNTAgb2NjbHVzaW9uIGhlaWdodCkgYXJlIHZpc2libGUgYmV5b25kIHRoZSBvY2Ns
dXNpb24sIHNvIG5vdCBjdWxsZWQuCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3Qo
MjAwLCAyMDAsIDMwMCwgMTUwKSk7CkBAIC0xMTYyLDYgKzExNjYsNyBAQCBURVNUX0YoVGlsZWRM
YXllckNocm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKICAg
ICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAKICAgICBsYXllci0+c2V0Qm91bmRzKElu
dFNpemUoNjAwLCA2MDApKTsKKyAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwg
bGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4wKSk7CiAKICAgICBvY2NsdWRlZC5zZXRPY2Ns
dXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApKTsKICAgICBsYXllci0+c2V0VmlzaWJs
ZUNvbnRlbnRSZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKQEAgLTEyMDQsMTAgKzEyMDks
MTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2Ns
dXNpb25BbmRUcmFuc2Zvcm1zKQogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHNjcmVlblRy
YW5zZm9ybTsKICAgICBzY3JlZW5UcmFuc2Zvcm0uc2NhbGUoMC41KTsKICAgICBsYXllci0+c2V0
U2NyZWVuU3BhY2VUcmFuc2Zvcm0oc2NyZWVuVHJhbnNmb3JtKTsKLSAgICBsYXllci0+c2V0RHJh
d1RyYW5zZm9ybShzY3JlZW5UcmFuc2Zvcm0pOworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3Jt
KHNjcmVlblRyYW5zZm9ybSAqIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxh
eWVyLT5ib3VuZHMoKS53aWR0aCgpIC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAy
LjApKTsKIAogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDEwMCwgMTAwLCAxNTAs
IDUwKSk7Ci0gICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50
KCksIGxheWVyLT5jb250ZW50Qm91bmRzKCkpKTsKKyAgICBsYXllci0+c2V0VmlzaWJsZUNvbnRl
bnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CiAgICAgbGF5ZXIt
PmludmFsaWRhdGVDb250ZW50UmVjdChJbnRSZWN0KDAsIDAsIDYwMCwgNjAwKSk7CiAgICAgbGF5
ZXItPnNldFRleHR1cmVQcmlvcml0aWVzKG1fcHJpb3JpdHlDYWxjdWxhdG9yKTsKICAgICB0ZXh0
dXJlTWFuYWdlci0+cHJpb3JpdGl6ZVRleHR1cmVzKCk7CkBAIC0xMjMyLDkgKzEyMzcsMTAgQEAg
VEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25B
bmRTY2FsaW5nKQogICAgIC8vIHBpeGVscywgd2hpY2ggbWVhbnMgbm9uZSBzaG91bGQgYmUgb2Nj
bHVkZWQuCiAgICAgbGF5ZXItPnNldENvbnRlbnRzU2NhbGUoMC41KTsKICAgICBsYXllci0+c2V0
Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKKyAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgo
KSAvIDIuMCwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4wKSk7CiAKICAgICBvY2NsdWRl
ZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxMDApKTsKLSAgICBsYXllci0+
c2V0VmlzaWJsZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmNvbnRlbnRC
b3VuZHMoKSkpOworICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQ
b2ludCgpLCBsYXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRS
ZWN0KEludFJlY3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9y
aXRpZXMobV9wcmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0
aXplVGV4dHVyZXMoKTsKQEAgLTEyNTQsNyArMTI2MCw3IEBAIFRFU1RfRihUaWxlZExheWVyQ2hy
b21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICAvLyBh
IGRpZmZlcmVudCBsYXllciBzcGFjZS4gSW4gdGhpcyBjYXNlIHRoZSBvY2NsdWRlZCByZWdpb24g
Y2F0Y2hlcyB0aGUKICAgICAvLyBibG93biB1cCB0aWxlcy4KICAgICBvY2NsdWRlZC5zZXRPY2Ns
dXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAyMDApKTsKLSAgICBsYXllci0+c2V0VmlzaWJs
ZUNvbnRlbnRSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmNvbnRlbnRCb3VuZHMoKSkp
OworICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBs
YXllci0+Ym91bmRzKCkpKTsKICAgICBsYXllci0+aW52YWxpZGF0ZUNvbnRlbnRSZWN0KEludFJl
Y3QoMCwgMCwgNjAwLCA2MDApKTsKICAgICBsYXllci0+c2V0VGV4dHVyZVByaW9yaXRpZXMobV9w
cmlvcml0eUNhbGN1bGF0b3IpOwogICAgIHRleHR1cmVNYW5hZ2VyLT5wcmlvcml0aXplVGV4dHVy
ZXMoKTsKQEAgLTEyNzEsMTAgKzEyNzcsMTAgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRl
c3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRTY2FsaW5nKQogICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHNjcmVlblRyYW5zZm9ybTsKICAgICBzY3JlZW5UcmFuc2Zvcm0uc2NhbGUo
MC41KTsKICAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oc2NyZWVuVHJhbnNmb3Jt
KTsKLSAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShzY3JlZW5UcmFuc2Zvcm0pOworICAgIGxh
eWVyLT5zZXREcmF3VHJhbnNmb3JtKHNjcmVlblRyYW5zZm9ybSAqIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4KDEsIDAsIDAsIDEsIGxheWVyLT5ib3VuZHMoKS53aWR0aCgpIC8gMi4wLCBsYXllci0+
Ym91bmRzKCkuaGVpZ2h0KCkgLyAyLjApKTsKIAogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJ
bnRSZWN0KDEwMCwgMTAwLCAxNTAsIDEwMCkpOwotICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVu
dFJlY3QoSW50UmVjdChJbnRQb2ludCgpLCBsYXllci0+Y29udGVudEJvdW5kcygpKSk7CisgICAg
bGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5i
b3VuZHMoKSkpOwogICAgIGxheWVyLT5pbnZhbGlkYXRlQ29udGVudFJlY3QoSW50UmVjdCgwLCAw
LCA2MDAsIDYwMCkpOwogICAgIGxheWVyLT5zZXRUZXh0dXJlUHJpb3JpdGllcyhtX3ByaW9yaXR5
Q2FsY3VsYXRvcik7CiAgICAgdGV4dHVyZU1hbmFnZXItPnByaW9yaXRpemVUZXh0dXJlcygpOwpA
QCAtMTMwMiw2ICsxMzA4LDcgQEAgVEVTVF9GKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2li
bGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAgIEludFJlY3QgdmlzaWJsZUJvdW5kcyA9IEludFJl
Y3QoMCwgMCwgMTAwLCAxNTApOwogCiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRz
LnNpemUoKSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5i
b3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlQ29udGVudFJl
Y3QodmlzaWJsZUJvdW5kcyk7CiAgICAgbGF5ZXItPnNldERyYXdPcGFjaXR5KDEpOwogCkBAIC0x
Mzk1LDYgKzE0MDIsNyBAQCBURVNUX0YoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGl4ZWxzUGFp
bnRlZE1ldHJpY3MpCiAgICAgSW50UmVjdCB2aXNpYmxlQm91bmRzID0gSW50UmVjdCgwLCAwLCAx
MDAsIDMwMCk7CiAKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMuc2l6ZSgpKTsK
KyAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAw
LCAwLCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5kcygpLmhl
aWdodCgpIC8gMi4wKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVDb250ZW50UmVjdCh2aXNpYmxl
Qm91bmRzKTsKICAgICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>