<?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>161570</bug_id>
          
          <creation_ts>2016-09-03 17:11:22 -0700</creation_ts>
          <short_desc>Update the semantics of defined-ness of custom elements per spec changes</short_desc>
          <delta_ts>2016-09-03 22:11:29 -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>DOM</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>154907</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1226195</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-09-03 17:11:22 -0700</bug_when>
    <thetext>There has some changes to the way a custom element becomes :defined.
Namely, when a custom element constructor throws an exception,
the element is no longer considered as defined.

Furthermore, we should not try to upgrade such an element
when it&apos;s inserted back into a document.

Update our implementation of custom elements per these spec changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226216</commentid>
    <comment_count>1</comment_count>
      <attachid>287885</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-09-03 19:07:13 -0700</bug_when>
    <thetext>Created attachment 287885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226239</commentid>
    <comment_count>2</comment_count>
      <attachid>287885</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-09-03 21:49:42 -0700</bug_when>
    <thetext>Comment on attachment 287885
Patch

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226243</commentid>
    <comment_count>3</comment_count>
      <attachid>287885</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-03 22:11:24 -0700</bug_when>
    <thetext>Comment on attachment 287885
Patch

Clearing flags on attachment: 287885

Committed r205416: &lt;http://trac.webkit.org/changeset/205416&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226244</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-03 22:11:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>287885</attachid>
            <date>2016-09-03 19:07:13 -0700</date>
            <delta_ts>2016-09-03 22:11:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-161570-20160903190455.patch</filename>
            <type>text/plain</type>
            <size>38295</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTM5MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBACisyMDE2LTA5LTAzICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVwZGF0ZSB0aGUgc2VtYW50aWNz
IG9mIGRlZmluZWQtbmVzcyBvZiBjdXN0b20gZWxlbWVudHMgcGVyIHNwZWMgY2hhbmdlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNTcwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIHRoZSBub3Rpb24gb2YgYSBjdXN0b20gZWxlbWVudCB0aGF0IGZhaWxlZCB0byBjb25zdHJ1
Y3Qgb3IgdXBncmFkZSBzbyB0aGF0IDpkZWZpbmVkCisgICAgICAgIGRvZXNuJ3QgYXBwbHkgdG8g
c3VjaCBhbiBlbGVtZW50LiBXZSBhbHNvIHNldCB0aGUgZGVmaW5lZCBmbGFnIGluc2lkZSB0aGUg
SFRNTEVsZW1lbnQgY29uc3RydWN0b3IgaW4KKyAgICAgICAgdGhlIGNhc2Ugb2Ygc3luY2hyb25v
dXMgY29uc3RydWN0aW9uIGluc3RlYWQgb2Ygd2FpdGluZyBmb3IgdGhlIGN1c3RvbSBlbGVtZW50
IGNvbnN0cnVjdG9yIHRvIGZpbmlzaC4KKyAgICAgICAgaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cu
b3JnLyNjb25jZXB0LWNyZWF0ZS1lbGVtZW50CisKKyAgICAgICAgQ29uY2VwdHVhbGx5LCB0aGVy
ZSBhcmUgZm91ciBkaXN0aW5jdCBzdGF0ZXMgZm9yIGFuIGVsZW1lbnQ6CisgICAgICAgIDEuIFRo
ZSBlbGVtZW50IGlzIGEgYnVpbHQtaW4gZWxlbWVudAorICAgICAgICAyLiBUaGUgZWxlbWVudCBp
cyBhIGN1c3RvbSBlbGVtZW50IHlldCB0byBiZSBkZWZpbmVkIChhbiB1cGdyYWRlIGNhbmRpZGF0
ZSkuCisgICAgICAgIDMuIFRoZSBlbGVtZW50IGlzIGEgd2VsbC1kZWZpbmVkIGN1c3RvbSBlbGVt
ZW50IChjb25zdHJ1Y3RlZCBvciB1cGdyYWRlZCkuCisgICAgICAgIDQuIFRoZSBlbGVtZW50IGhh
cyBmYWlsZWQgdG8gY29uc3RydWN0IG9yIHVwZ3JhZGUgYXMgYSBjdXN0b20gZWxlbWVudCAoYmVj
YXVzZSB0aGUgY3VzdG9tIGVsZW1lbnQKKyAgICAgICAgY29uc3RydWN0b3IgdGhyZXcgYW4gZXhj
ZXB0aW9uIG9yIHJldHVybmVkIGFuIHVuZXhwZWN0ZWQgb2JqZWN0KS4KKworICAgICAgICBJbiB0
aGUgbGF0ZXN0IERPTS9IVE1MIHNwZWNpZmljYXRpb25zLCB0aGVzZSBzdGF0ZXMgYXJlIGNhbGxl
ZCBhcyAxLiAidW5jdXN0b21pemVkIiwgMi4gInVuZGVmaW5lZCIsCisgICAgICAgIDMuICJjdXN0
b20iLCBhbmQgNC4gImZhaWxlZCI6IGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jY29uY2Vw
dC1lbGVtZW50LWRlZmluZWQKKworICAgICAgICBUaGlzIHBhdGNoIHJlZmFjdG9ycyBOb2RlIGZs
YWdzIHRvIGludHJvZHVjZSB0aGVzZSBkaXN0aW5jdCBzdGF0ZXMgYXMgdGhlIGZvbGxvd2luZzoK
KyAgICAgICAgMS4gTmVpdGhlciBJc0N1c3RvbUVsZW1lbnQgbm9yIElzRWRpdGluZ1RleHRPclVu
cmVzb2x2ZWRDdXN0b21FbGVtZW50RmxhZyBpcyBzZXQuCisgICAgICAgIDIuIElzQ3VzdG9tRWxl
bWVudCBhbmQgSXNFZGl0aW5nVGV4dE9yVW5yZXNvbHZlZEN1c3RvbUVsZW1lbnRGbGFnIGFyZSBz
ZXQuCisgICAgICAgIGlzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKSBhbmQgaXNVbmRl
ZmluZWRDdXN0b21FbGVtZW50KCkgcmV0dXJuIHRydWUuCisgICAgICAgIDMuIElzQ3VzdG9tRWxl
bWVudCBpcyBzZXQgYW5kIElzRWRpdGluZ1RleHRPclVucmVzb2x2ZWRDdXN0b21FbGVtZW50Rmxh
ZyBpcyB1bnNldC4KKyAgICAgICAgaXNEZWZpbmVkQ3VzdG9tRWxlbWVudCgpIHJldHVybnMgdHJ1
ZS4KKyAgICAgICAgNC4gSXNDdXN0b21FbGVtZW50IGlzIHVuc2V0IGFuZCBJc0VkaXRpbmdUZXh0
T3JVbnJlc29sdmVkQ3VzdG9tRWxlbWVudEZsYWcgaXMgc2V0LgorICAgICAgICBpc0ZhaWxlZEN1
c3RvbUVsZW1lbnQoKSBhbmQgaXNVbmRlZmluZWRDdXN0b21FbGVtZW50KCkgcmV0dXJuIHRydWUu
CisKKyAgICAgICAgUGVyIGEgc3BlYyBjaGFuZ2UsIHRoaXMgcGF0Y2ggYWxzbyBtYWtlcyA6ZGVm
aW5lZCBhcHBsaWVkIHRvIGEgc3luY2hyb25vdXNseSBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVu
dAorICAgICAgICBpbW1lZGlhdGVseSBhZnRlciBzdXBlcigpIGNhbGwgaW4gdGhlIGNvbnN0cnVj
dG9yLiBXaGVuIHRoZSBjb25zdHJ1Y3RvciB0aHJvd3MgYW4gZXhjZXB0aW9uIG9yIGZhaWxzIHRv
CisgICAgICAgIHJldHVybiB0aGUgcmlnaHQgZWxlbWVudCwgdGhlIEhUTUwgcGFyc2VyIG1hcmtz
IHRoZSBmYWxsYmFjayBlbGVtZW50IHdpdGggc2V0SXNVbmRlZmluZWRDdXN0b21FbGVtZW50Lgor
CisgICAgICAgIFRlc3RzOiBmYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVkLXBzZXVkby1jbGFz
cy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVkLXJ1bGUu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9jdXN0b20tZWxlbWVudHMvdXBncmFkaW5nL05vZGUt
Y2xvbmVOb2RlLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6
OmNvbnN0cnVjdEVsZW1lbnQpOiBEb24ndCBzZXQgOmRlZmluZWQgZmxhZyBoZXJlIHNpbmNlIHRo
YXQncyBkb25lCisgICAgICAgIGluIHRoZSBIVE1MRWxlbWVudCBjb25zdHJ1Y3RvciBub3cuCisg
ICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnVwZ3JhZGVFbGVtZW50
KTogTWFyayB0aGUgZWxlbWVudCBhcyBmYWlsZWQtdG8tdXBncmFkZSBhcyBuZWVkZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRvSlNOZXdseUNyZWF0ZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTEVsZW1lbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNIVE1MRWxlbWVudCk6Cisg
ICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKFdl
YkNvcmU6OmlzRGVmaW5lZEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50UmVhY3Rpb25R
dWV1ZTo6ZW5xdWV1ZUVsZW1lbnRVcGdyYWRlSWZEZWZpbmVkKTogRW5xdWV1ZSBjdXN0b20gZWxl
bWVudCByZWFjdGlvbnMKKyAgICAgICAgb25seSBpZiB0aGUgZWxlbWVudCBpcyB3ZWxsIGRlZmlu
ZWQgKHN1Y2Nlc3NmdWxseSBjb25zdHJ1Y3RlZCBvciB1cGdyYWRlZCkuCisgICAgICAgIChXZWJD
b3JlOjpDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZUNvbm5lY3RlZENhbGxiYWNr
SWZOZWVkZWQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUVsZW1lbnRSZWFjdGlv
blF1ZXVlOjplbnF1ZXVlRGlzY29ubmVjdGVkQ2FsbGJhY2tJZk5lZWRlZCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVucXVldWVBZG9wdGVk
Q2FsbGJhY2tJZk5lZWRlZCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRWxlbWVu
dFJlYWN0aW9uUXVldWU6OmVucXVldWVBdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2tJZk5lZWRlZCk6
IERpdHRvLgorICAgICAgICAqIGRvbS9DdXN0b21FbGVtZW50UmVnaXN0cnkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZW5xdWV1ZVVwZ3JhZGVJblNoYWRvd0luY2x1ZGluZ1RyZWVPcmRlcik6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVVwZ3Jh
ZGVDYW5kaWRhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZhbGxiYWNrSFRN
TEVsZW1lbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
ZGlkTW92ZVRvTmV3RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5zZXJ0
ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnJlbW92ZWRGcm9tKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEN1c3RvbUVsZW1lbnRJc1Jlc29sdmVkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldElzRGVmaW5lZEN1c3RvbUVsZW1lbnQp
OiBSZW5hbWVkIGZyb20gc2V0Q3VzdG9tRWxlbWVudElzUmVzb2x2ZWQuCisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpzZXRJc0ZhaWxlZEN1c3RvbUVsZW1lbnQpOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OnNldElzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUpOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmN1c3RvbUVsZW1lbnRJbnRlcmZhY2Up
OgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5vZGU6OnNldElzQ3VzdG9tRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpOb2RlOjppc1VuZGVmaW5lZEN1c3RvbUVsZW1lbnQpOiBSZW5hbWVkIGZyb20g
aXNVbnJlc29sdmVkQ3VzdG9tRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OnNldElz
VW5yZXNvbHZlZEN1c3RvbUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6aXNDdXN0b21FbGVtZW50VXBncmFkZUNhbmRpZGF0ZSk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6aXNEZWZpbmVkQ3VzdG9tRWxlbWVudCk6IFJlbmFtZWQgZnJvbSBpc0N1c3Rv
bUVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0ZhaWxlZEN1c3RvbUVsZW1lbnQp
OiBBZGRlZC4KKyAgICAgICAgKiBkb20vbWFrZV9uYW1lcy5wbDoKKyAgICAgICAgKHByaW50V3Jh
cHBlckZhY3RvcnlDcHBGaWxlKTogVXNlIHRoZSBIVE1MRWxlbWVudCB3cmFwcGVyIG9uIHVwZ3Jh
ZGUgY2FuZGlkYXRlcy4gV2hlbiBhIGN1c3RvbSBlbGVtZW50CisgICAgICAgIGZhaWxlZCB0byB1
cGdyYWRlLCB0aGUgSFRNTEVsZW1lbnQgY29uc3RydWN0b3Igd291bGQgaGF2ZSBjcmVhdGVkIHRo
ZSB3cmFwcGVyIHNvIHdlIG5ldmVyIHJ1biB0aGlzIGNvZGUuCisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbnN0
cnVjdGlvblNpdGU6OmNyZWF0ZUhUTUxFbGVtZW50T3JGaW5kQ3VzdG9tRWxlbWVudEludGVyZmFj
ZSk6IAorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnJ1blNjcmlwdHNGb3JQYXVzZWRUcmVl
QnVpbGRlcik6IE1hcmsgdGhlIEhUTUxVbmtub3duRWxlbWVudCBjcmVhdGVkIHdoZW4KKyAgICAg
ICAgdGhlIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGZhaWxlZCB0byBydW4gc3VjY2Vzc2Z1
bGx5IGFzIGEgZmFpbGVkIGN1c3RvbSBlbGVtZW50IHNvIHRoYXQgOmRlZmluZQorICAgICAgICB3
b3VsZG4ndCBhcHBseSB0byB0aGlzIGVsZW1lbnQuCisKIDIwMTYtMDktMDIgIFphbGFuIEJ1anRh
cyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBTaG91bGQgbmV2ZXIgYmUgcmVhY2hlZCBm
YWlsdXJlIGluIFdlYkNvcmU6OmZsb2F0VmFsdWVGb3JMZW5ndGgKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNw
cAkocmV2aXNpb24gMjA1MzkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNiBAQCBS
ZWZQdHI8RWxlbWVudD4gSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgIH0KIAotICAgIGVsZW1lbnQtPnNldEN1c3RvbUVsZW1lbnRJc1Jlc29sdmVk
KCp0aGlzKTsKICAgICByZXR1cm4gZWxlbWVudDsKIH0KIApAQCAtMTQ5LDcgKzE0OCw3IEBAIHN0
YXRpYyBSZWZQdHI8RWxlbWVudD4gY29uc3RydWN0Q3VzdG9tRWwKIHZvaWQgSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlOjp1cGdyYWRlRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogewogICAgIEFT
U0VSVChlbGVtZW50LnRhZ1FOYW1lKCkgPT0gbmFtZSgpKTsKLSAgICBBU1NFUlQoZWxlbWVudC5p
c1VucmVzb2x2ZWRDdXN0b21FbGVtZW50KCkpOworICAgIEFTU0VSVChlbGVtZW50LmlzQ3VzdG9t
RWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKSk7CiAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTE4NiwxNSArMTg1LDE4IEBAIHZvaWQgSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWwKIAogICAgIG1fY29uc3RydWN0aW9uU3RhY2sucmVt
b3ZlTGFzdCgpOwogCi0gICAgaWYgKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkKKyAgICBpZiAoc3Rh
dGUtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIGVsZW1lbnQuc2V0SXNGYWlsZWRDdXN0b21F
bGVtZW50KCp0aGlzKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIEVsZW1lbnQqIHdy
YXBwZWRFbGVtZW50ID0gSlNFbGVtZW50Ojp0b1dyYXBwZWQocmV0dXJuZWRFbGVtZW50KTsKICAg
ICBpZiAoIXdyYXBwZWRFbGVtZW50IHx8IHdyYXBwZWRFbGVtZW50ICE9ICZlbGVtZW50KSB7Cisg
ICAgICAgIGVsZW1lbnQuc2V0SXNGYWlsZWRDdXN0b21FbGVtZW50KCp0aGlzKTsKICAgICAgICAg
dGhyb3dJbnZhbGlkU3RhdGVFcnJvcigqc3RhdGUsIHNjb3BlLCAiQ3VzdG9tIGVsZW1lbnQgY29u
c3RydWN0b3IgZmFpbGVkIHRvIHVwZ3JhZGUgYW4gZWxlbWVudCIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIHdyYXBwZWRFbGVtZW50LT5zZXRDdXN0b21FbGVtZW50SXNSZXNvbHZlZCgq
dGhpcyk7CisgICAgZWxlbWVudC5zZXRJc0RlZmluZWRDdXN0b21FbGVtZW50KCp0aGlzKTsKIH0K
IAogdm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6Omludm9rZUNhbGxiYWNrKEVsZW1lbnQm
IGVsZW1lbnQsIEpTT2JqZWN0KiBjYWxsYmFjaywgY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKEV4
ZWNTdGF0ZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgTWFya2VkQXJndW1lbnRCdWZmZXImKT4mIGFk
ZEFyZ3VtZW50cykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRWxlbWVudEN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFbGVt
ZW50Q3VzdG9tLmNwcAkocmV2aXNpb24gMjA1MzkzKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFbGVtZW50Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBA
QCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplCiBKU1ZhbHVlIHRvSlNO
ZXdseUNyZWF0ZWQoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPEVsZW1lbnQ+JiYgZWxlbWVudCkKIHsKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQot
ICAgIGlmIChlbGVtZW50LT5pc0N1c3RvbUVsZW1lbnQoKSkKKyAgICBpZiAoZWxlbWVudC0+aXNE
ZWZpbmVkQ3VzdG9tRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gZ2V0Q2FjaGVkV3JhcHBlcihn
bG9iYWxPYmplY3QtPndvcmxkKCksIGVsZW1lbnQpOwogI2VuZGlmCiAgICAgQVNTRVJUKCFnZXRD
YWNoZWRXcmFwcGVyKGdsb2JhbE9iamVjdC0+d29ybGQoKSwgZWxlbWVudCkpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRWxlbWVudEN1c3RvbS5jcHAJ
KHJldmlzaW9uIDIwNTM5MykKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEVs
ZW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw3ICs4Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlMKICAgICAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKICAgICAgICAgUmVmPEhUTUxFbGVtZW50PiBl
bGVtZW50ID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShlbGVtZW50SW50ZXJmYWNlLT5uYW1lKCksIGRv
Y3VtZW50KTsKLSAgICAgICAgZWxlbWVudC0+c2V0SXNVbnJlc29sdmVkQ3VzdG9tRWxlbWVudCgp
OworICAgICAgICBlbGVtZW50LT5zZXRJc0RlZmluZWRDdXN0b21FbGVtZW50KCplbGVtZW50SW50
ZXJmYWNlKTsKICAgICAgICAgYXV0byoganNFbGVtZW50ID0gSlNIVE1MRWxlbWVudDo6Y3JlYXRl
KG5ld0VsZW1lbnRTdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgZWxlbWVudC5nZXQoKSk7CiAgICAg
ICAgIGNhY2hlV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIGVsZW1lbnQucHRyKCksIGpz
RWxlbWVudCk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNFbGVtZW50KTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXJUZXN0RnVuY3Rpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlclRlc3RGdW5jdGlv
bnMuaAkocmV2aXNpb24gMjA1MzkzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlclRlc3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBBTFdB
WVNfSU5MSU5FIGJvb2wgbWF0Y2hlc0VuYWJsZWRQc2V1ZG9DCiAjaWYgRU5BQkxFKENVU1RPTV9F
TEVNRU5UUykKIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlZmluZWRFbGVtZW50KGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuICFlbGVtZW50LmlzVW5yZXNvbHZlZEN1c3RvbUVs
ZW1lbnQoKTsKKyAgICByZXR1cm4gIWVsZW1lbnQuaXNVbmRlZmluZWRDdXN0b21FbGVtZW50KCk7
CiB9CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWUuY3BwCShyZXZpc2lvbiAyMDUzOTMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjQsNyArMTI0LDcgQEAgdm9pZCBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZQog
dm9pZCBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZUVsZW1lbnRVcGdyYWRlSWZE
ZWZpbmVkKEVsZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGVsZW1lbnQuaW5Eb2N1bWVu
dCgpKTsKLSAgICBBU1NFUlQoZWxlbWVudC5pc1VucmVzb2x2ZWRDdXN0b21FbGVtZW50KCkpOwor
ICAgIEFTU0VSVChlbGVtZW50LmlzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKSk7CiAg
ICAgYXV0byogd2luZG93ID0gZWxlbWVudC5kb2N1bWVudCgpLmRvbVdpbmRvdygpOwogICAgIGlm
ICghd2luZG93KQogICAgICAgICByZXR1cm47CkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBDdXN0
b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZQogCiB2b2lkIEN1c3RvbUVsZW1lbnRSZWFj
dGlvblF1ZXVlOjplbnF1ZXVlQ29ubmVjdGVkQ2FsbGJhY2tJZk5lZWRlZChFbGVtZW50JiBlbGVt
ZW50KQogewotICAgIEFTU0VSVChlbGVtZW50LmlzQ3VzdG9tRWxlbWVudCgpKTsKKyAgICBBU1NF
UlQoZWxlbWVudC5pc0RlZmluZWRDdXN0b21FbGVtZW50KCkpOwogICAgIGF1dG8qIGVsZW1lbnRJ
bnRlcmZhY2UgPSBlbGVtZW50LmN1c3RvbUVsZW1lbnRJbnRlcmZhY2UoKTsKICAgICBBU1NFUlQo
ZWxlbWVudEludGVyZmFjZSk7CiAgICAgaWYgKCFlbGVtZW50SW50ZXJmYWNlLT5oYXNDb25uZWN0
ZWRDYWxsYmFjaygpKQpAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgQ3VzdG9tRWxlbWVudFJlYWN0
aW9uUXVldWU6OmVucXVldWUKIAogdm9pZCBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5x
dWV1ZURpc2Nvbm5lY3RlZENhbGxiYWNrSWZOZWVkZWQoRWxlbWVudCYgZWxlbWVudCkKIHsKLSAg
ICBBU1NFUlQoZWxlbWVudC5pc0N1c3RvbUVsZW1lbnQoKSk7CisgICAgQVNTRVJUKGVsZW1lbnQu
aXNEZWZpbmVkQ3VzdG9tRWxlbWVudCgpKTsKICAgICBhdXRvKiBlbGVtZW50SW50ZXJmYWNlID0g
ZWxlbWVudC5jdXN0b21FbGVtZW50SW50ZXJmYWNlKCk7CiAgICAgQVNTRVJUKGVsZW1lbnRJbnRl
cmZhY2UpOwogICAgIGlmICghZWxlbWVudEludGVyZmFjZS0+aGFzRGlzY29ubmVjdGVkQ2FsbGJh
Y2soKSkKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVl
OjplbnF1ZXVlCiAKIHZvaWQgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVucXVldWVBZG9w
dGVkQ2FsbGJhY2tJZk5lZWRlZChFbGVtZW50JiBlbGVtZW50LCBEb2N1bWVudCYgb2xkRG9jdW1l
bnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkKIHsKLSAgICBBU1NFUlQoZWxlbWVudC5pc0N1c3Rv
bUVsZW1lbnQoKSk7CisgICAgQVNTRVJUKGVsZW1lbnQuaXNEZWZpbmVkQ3VzdG9tRWxlbWVudCgp
KTsKICAgICBhdXRvKiBlbGVtZW50SW50ZXJmYWNlID0gZWxlbWVudC5jdXN0b21FbGVtZW50SW50
ZXJmYWNlKCk7CiAgICAgQVNTRVJUKGVsZW1lbnRJbnRlcmZhY2UpOwogICAgIGlmICghZWxlbWVu
dEludGVyZmFjZS0+aGFzQWRvcHRlZENhbGxiYWNrKCkpCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9p
ZCBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZQogCiB2b2lkIEN1c3RvbUVsZW1l
bnRSZWFjdGlvblF1ZXVlOjplbnF1ZXVlQXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrSWZOZWVkZWQo
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkK
IHsKLSAgICBBU1NFUlQoZWxlbWVudC5pc0N1c3RvbUVsZW1lbnQoKSk7CisgICAgQVNTRVJUKGVs
ZW1lbnQuaXNEZWZpbmVkQ3VzdG9tRWxlbWVudCgpKTsKICAgICBhdXRvKiBlbGVtZW50SW50ZXJm
YWNlID0gZWxlbWVudC5jdXN0b21FbGVtZW50SW50ZXJmYWNlKCk7CiAgICAgQVNTRVJUKGVsZW1l
bnRJbnRlcmZhY2UpOwogICAgIGlmICghZWxlbWVudEludGVyZmFjZS0+b2JzZXJ2ZXNBdHRyaWJ1
dGUoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKSkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
Q3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMjA1MzkzKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTYwLDcgKzYwLDcgQEAgQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5Ojp+Q3VzdG9tRWxlbWVudFJlZwog
c3RhdGljIHZvaWQgZW5xdWV1ZVVwZ3JhZGVJblNoYWRvd0luY2x1ZGluZ1RyZWVPcmRlcihDb250
YWluZXJOb2RlJiBub2RlLCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJbnRlcmZh
Y2UpCiB7CiAgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmly
c3RXaXRoaW4obm9kZSk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpuZXh0
KCplbGVtZW50KSkgewotICAgICAgICBpZiAoZWxlbWVudC0+aXNVbnJlc29sdmVkQ3VzdG9tRWxl
bWVudCgpICYmIGVsZW1lbnQtPnRhZ1FOYW1lKCkgPT0gZWxlbWVudEludGVyZmFjZS5uYW1lKCkp
CisgICAgICAgIGlmIChlbGVtZW50LT5pc0N1c3RvbUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRlKCkg
JiYgZWxlbWVudC0+dGFnUU5hbWUoKSA9PSBlbGVtZW50SW50ZXJmYWNlLm5hbWUoKSkKICAgICAg
ICAgICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnF1ZXVlRWxlbWVudFVwZ3JhZGUo
KmVsZW1lbnQsIGVsZW1lbnRJbnRlcmZhY2UpOwogICAgICAgICBpZiAoYXV0byogc2hhZG93Um9v
dCA9IGVsZW1lbnQtPnNoYWRvd1Jvb3QoKSkgewogICAgICAgICAgICAgaWYgKHNoYWRvd1Jvb3Qt
Pm1vZGUoKSAhPSBTaGFkb3dSb290OjpNb2RlOjpVc2VyQWdlbnQpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHJldmlzaW9uIDIwNTM5MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg5MCw3ICs4OTAsNyBAQCBzdGF0aWMgQUxXQVlT
X0lOTElORSBSZWZQdHI8SFRNTEVsZW1lbnQ+CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAg
ICAgYXV0byBlbGVtZW50ID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7Ci0g
ICAgZWxlbWVudC0+c2V0SXNVbnJlc29sdmVkQ3VzdG9tRWxlbWVudCgpOworICAgIGVsZW1lbnQt
PnNldElzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKTsKICAgICByZXR1cm4gV1RGTW92
ZShlbGVtZW50KTsKIH0KICNlbmRpZgpAQCAtMTA5MSw3ICsxMDkxLDcgQEAgc3RhdGljIFJlZjxI
VE1MRWxlbWVudD4gY3JlYXRlRmFsbGJhY2tIVAogICAgICAgICBpZiAoVU5MSUtFTFkocmVnaXN0
cnkpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogZWxlbWVudEludGVyZmFjZSA9IHJlZ2lzdHJ5
LT5maW5kSW50ZXJmYWNlKG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgYXV0byBlbGVtZW50ID0g
SFRNTEVsZW1lbnQ6OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7Ci0gICAgICAgICAgICAgICAgZWxl
bWVudC0+c2V0SXNVbnJlc29sdmVkQ3VzdG9tRWxlbWVudCgpOworICAgICAgICAgICAgICAgIGVs
ZW1lbnQtPnNldElzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKTsKICAgICAgICAgICAg
ICAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZUVsZW1lbnRVcGdyYWRlKGVs
ZW1lbnQuZ2V0KCksICplbGVtZW50SW50ZXJmYWNlKTsKICAgICAgICAgICAgICAgICByZXR1cm4g
ZWxlbWVudDsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlz
aW9uIDIwNTM5MykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI5NSw3ICsxMjk1LDcgQEAgdm9pZCBFbGVtZW50OjphdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YQogICAgIGRvY3VtZW50KCkuaW5jRE9NVHJlZVZlcnNpb24oKTsKIAogI2lmIEVO
QUJMRShDVVNUT01fRUxFTUVOVFMpCi0gICAgaWYgKFVOTElLRUxZKGlzQ3VzdG9tRWxlbWVudCgp
KSkKKyAgICBpZiAoVU5MSUtFTFkoaXNEZWZpbmVkQ3VzdG9tRWxlbWVudCgpKSkKICAgICAgICAg
Q3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVucXVldWVBdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJh
Y2tJZk5lZWRlZCgqdGhpcywgbmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKICNlbmRpZgogCkBA
IC0xNDk1LDcgKzE0OTUsNyBAQCB2b2lkIEVsZW1lbnQ6OmRpZE1vdmVUb05ld0RvY3VtZW50KERv
Y3VtCiAgICAgfQogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKLSAgICBpZiAoVU5MSUtF
TFkoaXNDdXN0b21FbGVtZW50KCkpKQorICAgIGlmIChVTkxJS0VMWShpc0RlZmluZWRDdXN0b21F
bGVtZW50KCkpKQogICAgICAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZTo6ZW5xdWV1ZUFk
b3B0ZWRDYWxsYmFja0lmTmVlZGVkKCp0aGlzLCAqb2xkRG9jdW1lbnQsIGRvY3VtZW50KCkpOwog
I2VuZGlmCiB9CkBAIC0xNjA3LDkgKzE2MDcsOSBAQCBOb2RlOjpJbnNlcnRpb25Ob3RpZmljYXRp
b25SZXF1ZXN0IEVsZW1lCiAKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQogICAgIGlmIChi
ZWNvbWVDb25uZWN0ZWQpIHsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlzVW5yZXNvbHZlZEN1c3Rv
bUVsZW1lbnQoKSkpCisgICAgICAgIGlmIChVTkxJS0VMWShpc0N1c3RvbUVsZW1lbnRVcGdyYWRl
Q2FuZGlkYXRlKCkpKQogICAgICAgICAgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVu
cXVldWVFbGVtZW50VXBncmFkZUlmRGVmaW5lZCgqdGhpcyk7Ci0gICAgICAgIGlmIChVTkxJS0VM
WShpc0N1c3RvbUVsZW1lbnQoKSkpCisgICAgICAgIGlmIChVTkxJS0VMWShpc0RlZmluZWRDdXN0
b21FbGVtZW50KCkpKQogICAgICAgICAgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWU6OmVu
cXVldWVDb25uZWN0ZWRDYWxsYmFja0lmTmVlZGVkKCp0aGlzKTsKICAgICB9CiAKQEAgLTE2NjMs
NyArMTY2Myw3IEBAIHZvaWQgRWxlbWVudDo6cmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYKICAg
ICAgICAgfQogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKLSAgICAgICAgaWYgKGJlY29t
ZURpc2Nvbm5lY3RlZCAmJiBVTkxJS0VMWShpc0N1c3RvbUVsZW1lbnQoKSkpCisgICAgICAgIGlm
IChiZWNvbWVEaXNjb25uZWN0ZWQgJiYgVU5MSUtFTFkoaXNEZWZpbmVkQ3VzdG9tRWxlbWVudCgp
KSkKICAgICAgICAgICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlOjplbnF1ZXVlRGlzY29u
bmVjdGVkQ2FsbGJhY2tJZk5lZWRlZCgqdGhpcyk7CiAjZW5kaWYKICAgICB9CkBAIC0xODM2LDE2
ICsxODM2LDMxIEBAIFNoYWRvd1Jvb3QmIEVsZW1lbnQ6OmVuc3VyZVVzZXJBZ2VudFNoYWQKICAg
ICAKICNpZiBFTkFCTEUoQ1VTVE9NX0VMRU1FTlRTKQogCi12b2lkIEVsZW1lbnQ6OnNldEN1c3Rv
bUVsZW1lbnRJc1Jlc29sdmVkKEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSYgZWxlbWVudEludGVy
ZmFjZSkKK3ZvaWQgRWxlbWVudDo6c2V0SXNEZWZpbmVkQ3VzdG9tRWxlbWVudChKU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UmIGVsZW1lbnRJbnRlcmZhY2UpCiB7Ci0gICAgY2xlYXJGbGFnKElzRWRp
dGluZ1RleHRPclVucmVzb2x2ZWRDdXN0b21FbGVtZW50RmxhZyk7CisgICAgY2xlYXJGbGFnKElz
RWRpdGluZ1RleHRPclVuZGVmaW5lZEN1c3RvbUVsZW1lbnRGbGFnKTsKICAgICBzZXRGbGFnKElz
Q3VzdG9tRWxlbWVudCk7CiAgICAgZW5zdXJlRWxlbWVudFJhcmVEYXRhKCkuc2V0Q3VzdG9tRWxl
bWVudEludGVyZmFjZShlbGVtZW50SW50ZXJmYWNlKTsKIH0KIAordm9pZCBFbGVtZW50OjpzZXRJ
c0ZhaWxlZEN1c3RvbUVsZW1lbnQoSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJiBlbGVtZW50SW50
ZXJmYWNlKQoreworICAgIEFTU0VSVChpc1VuZGVmaW5lZEN1c3RvbUVsZW1lbnQoKSk7CisgICAg
QVNTRVJUKGdldEZsYWcoSXNFZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcp
KTsKKyAgICBjbGVhckZsYWcoSXNDdXN0b21FbGVtZW50KTsKKyAgICBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKS5zZXRDdXN0b21FbGVtZW50SW50ZXJmYWNlKGVsZW1lbnRJbnRlcmZhY2UpOworfQor
Cit2b2lkIEVsZW1lbnQ6OnNldElzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKQorewor
ICAgIEFTU0VSVCghZ2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpKTsKKyAgICBzZXRGbGFnKElzQ3Vz
dG9tRWxlbWVudCk7CisgICAgc2V0RmxhZyhJc0VkaXRpbmdUZXh0T3JVbmRlZmluZWRDdXN0b21F
bGVtZW50RmxhZyk7Cit9CisKIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZSogRWxlbWVudDo6Y3Vz
dG9tRWxlbWVudEludGVyZmFjZSgpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGlzQ3VzdG9tRWxlbWVu
dCgpKTsKKyAgICBBU1NFUlQoaXNEZWZpbmVkQ3VzdG9tRWxlbWVudCgpKTsKICAgICBpZiAoIWhh
c1JhcmVEYXRhKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBlbGVtZW50
UmFyZURhdGEoKS0+Y3VzdG9tRWxlbWVudEludGVyZmFjZSgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCShyZXZpc2lvbiAyMDUzOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzQsNyArMjc0LDkgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYWRvd1Jvb3QmIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKIAogI2lmIEVOQUJM
RShDVVNUT01fRUxFTUVOVFMpCi0gICAgdm9pZCBzZXRDdXN0b21FbGVtZW50SXNSZXNvbHZlZChK
U0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UmKTsKKyAgICB2b2lkIHNldElzRGVmaW5lZEN1c3RvbUVs
ZW1lbnQoSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJik7CisgICAgdm9pZCBzZXRJc0ZhaWxlZEN1
c3RvbUVsZW1lbnQoSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlJik7CisgICAgdm9pZCBzZXRJc0N1
c3RvbUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRlKCk7CiAgICAgSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlKiBjdXN0b21FbGVtZW50SW50ZXJmYWNlKCkgY29uc3Q7CiAjZW5kaWYKIApJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oCShyZXZpc2lvbiAyMDUzOTMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjIsMTEgKzI2MiwxMCBAQCBwdWJsaWM6CiAgICAgSFRNTFNsb3RF
bGVtZW50KiBhc3NpZ25lZFNsb3RGb3JCaW5kaW5ncygpIGNvbnN0OwogCiAjaWYgRU5BQkxFKENV
U1RPTV9FTEVNRU5UUykKLSAgICBib29sIGlzQ3VzdG9tRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IGdldEZsYWcoSXNDdXN0b21FbGVtZW50KTsgfQotICAgIHZvaWQgc2V0SXNDdXN0b21FbGVtZW50
KCkgeyBzZXRGbGFnKElzQ3VzdG9tRWxlbWVudCk7IH0KLQotICAgIGJvb2wgaXNVbnJlc29sdmVk
Q3VzdG9tRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGlzRWxlbWVudE5vZGUoKSAmJiBnZXRGbGFn
KElzRWRpdGluZ1RleHRPclVucmVzb2x2ZWRDdXN0b21FbGVtZW50RmxhZyk7IH0KLSAgICB2b2lk
IHNldElzVW5yZXNvbHZlZEN1c3RvbUVsZW1lbnQoKSB7IHNldEZsYWcoSXNFZGl0aW5nVGV4dE9y
VW5yZXNvbHZlZEN1c3RvbUVsZW1lbnRGbGFnKTsgfQorICAgIGJvb2wgaXNVbmRlZmluZWRDdXN0
b21FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gaXNFbGVtZW50Tm9kZSgpICYmIGdldEZsYWcoSXNF
ZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcpOyB9CisgICAgYm9vbCBpc0N1
c3RvbUVsZW1lbnRVcGdyYWRlQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhJc0N1
c3RvbUVsZW1lbnQpICYmIGdldEZsYWcoSXNFZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxl
bWVudEZsYWcpOyB9CisgICAgYm9vbCBpc0RlZmluZWRDdXN0b21FbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gZ2V0RmxhZyhJc0N1c3RvbUVsZW1lbnQpICYmICFnZXRGbGFnKElzRWRpdGluZ1RleHRP
clVuZGVmaW5lZEN1c3RvbUVsZW1lbnRGbGFnKTsgfQorICAgIGJvb2wgaXNGYWlsZWRDdXN0b21F
bGVtZW50KCkgY29uc3QgeyByZXR1cm4gaXNFbGVtZW50Tm9kZSgpICYmICFnZXRGbGFnKElzQ3Vz
dG9tRWxlbWVudCkgJiYgZ2V0RmxhZyhJc0VkaXRpbmdUZXh0T3JVbmRlZmluZWRDdXN0b21FbGVt
ZW50RmxhZyk7IH0KICNlbmRpZgogCiAgICAgLy8gUmV0dXJucyBudWxsLCBhIGNoaWxkIG9mIFNo
YWRvd1Jvb3QsIG9yIGEgbGVnYWN5IHNoYWRvdyByb290LgpAQCAtMzIxLDcgKzMyMCw3IEBAIHB1
YmxpYzoKICAgICBTdHlsZUNoYW5nZVR5cGUgc3R5bGVDaGFuZ2VUeXBlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8U3R5bGVDaGFuZ2VUeXBlPihtX25vZGVGbGFncyAmIFN0eWxlQ2hhbmdl
TWFzayk7IH0KICAgICBib29sIGNoaWxkTmVlZHNTdHlsZVJlY2FsYygpIGNvbnN0IHsgcmV0dXJu
IGdldEZsYWcoQ2hpbGROZWVkc1N0eWxlUmVjYWxjRmxhZyk7IH0KICAgICBib29sIHN0eWxlSXNB
ZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhTdHlsZUlz
QWZmZWN0ZWRCeVByZXZpb3VzU2libGluZyk7IH0KLSAgICBib29sIGlzRWRpdGluZ1RleHQoKSBj
b25zdCB7IHJldHVybiBnZXRGbGFnKElzVGV4dEZsYWcpICYmIGdldEZsYWcoSXNFZGl0aW5nVGV4
dE9yVW5yZXNvbHZlZEN1c3RvbUVsZW1lbnRGbGFnKTsgfQorICAgIGJvb2wgaXNFZGl0aW5nVGV4
dCgpIGNvbnN0IHsgcmV0dXJuIGdldEZsYWcoSXNUZXh0RmxhZykgJiYgZ2V0RmxhZyhJc0VkaXRp
bmdUZXh0T3JVbmRlZmluZWRDdXN0b21FbGVtZW50RmxhZyk7IH0KIAogICAgIHZvaWQgc2V0Q2hp
bGROZWVkc1N0eWxlUmVjYWxjKCkgeyBzZXRGbGFnKENoaWxkTmVlZHNTdHlsZVJlY2FsY0ZsYWcp
OyB9CiAgICAgdm9pZCBjbGVhckNoaWxkTmVlZHNTdHlsZVJlY2FsYygpIHsgbV9ub2RlRmxhZ3Mg
Jj0gfihDaGlsZE5lZWRzU3R5bGVSZWNhbGNGbGFnIHwgRGlyZWN0Q2hpbGROZWVkc1N0eWxlUmVj
YWxjRmxhZyk7IH0KQEAgLTU5NCw3ICs1OTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIElzUGFy
c2luZ0NoaWxkcmVuRmluaXNoZWRGbGFnID0gMSA8PCAxMywgLy8gRWxlbWVudAogCiAgICAgICAg
IFN0eWxlQ2hhbmdlTWFzayA9IDEgPDwgbm9kZVN0eWxlQ2hhbmdlU2hpZnQgfCAxIDw8IChub2Rl
U3R5bGVDaGFuZ2VTaGlmdCArIDEpIHwgMSA8PCAobm9kZVN0eWxlQ2hhbmdlU2hpZnQgKyAyKSwK
LSAgICAgICAgSXNFZGl0aW5nVGV4dE9yVW5yZXNvbHZlZEN1c3RvbUVsZW1lbnRGbGFnID0gMSA8
PCAxNywKKyAgICAgICAgSXNFZGl0aW5nVGV4dE9yVW5kZWZpbmVkQ3VzdG9tRWxlbWVudEZsYWcg
PSAxIDw8IDE3LAogICAgICAgICBIYXNGb2N1c1dpdGhpbiA9IDEgPDwgMTgsCiAgICAgICAgIEhh
c1N5bnRoZXRpY0F0dHJDaGlsZE5vZGVzRmxhZyA9IDEgPDwgMTksCiAgICAgICAgIEhhc0N1c3Rv
bVN0eWxlUmVzb2x2ZUNhbGxiYWNrc0ZsYWcgPSAxIDw8IDIwLApAQCAtNjMzLDcgKzYzMiw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgQ3JlYXRlSFRNTEVsZW1lbnQgPSBDcmVhdGVTdHlsZWRFbGVt
ZW50IHwgSXNIVE1MRmxhZywKICAgICAgICAgQ3JlYXRlU1ZHRWxlbWVudCA9IENyZWF0ZVN0eWxl
ZEVsZW1lbnQgfCBJc1NWR0ZsYWcgfCBIYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3NGbGFn
LAogICAgICAgICBDcmVhdGVEb2N1bWVudCA9IENyZWF0ZUNvbnRhaW5lciB8IEluRG9jdW1lbnRG
bGFnLAotICAgICAgICBDcmVhdGVFZGl0aW5nVGV4dCA9IENyZWF0ZVRleHQgfCBJc0VkaXRpbmdU
ZXh0T3JVbnJlc29sdmVkQ3VzdG9tRWxlbWVudEZsYWcsCisgICAgICAgIENyZWF0ZUVkaXRpbmdU
ZXh0ID0gQ3JlYXRlVGV4dCB8IElzRWRpdGluZ1RleHRPclVuZGVmaW5lZEN1c3RvbUVsZW1lbnRG
bGFnLAogICAgICAgICBDcmVhdGVNYXRoTUxFbGVtZW50ID0gQ3JlYXRlU3R5bGVkRWxlbWVudCB8
IElzTWF0aE1MRmxhZwogICAgIH07CiAgICAgTm9kZShEb2N1bWVudCYsIENvbnN0cnVjdGlvblR5
cGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwJKHJldmlzaW9uIDIwNTM5MykKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIz
LDcgKzEzMjMsNyBAQCBFTkQKICAgICBpZiAoJHBhcmFtZXRlcnN7Y3VzdG9tRWxlbWVudEludGVy
ZmFjZU5hbWV9KSB7CiAgICAgICAgIHByaW50IEYgPDxFTkQKICNpZiBFTkFCTEUoQ1VTVE9NX0VM
RU1FTlRTKQotICAgIGlmIChlbGVtZW50LT5pc1VucmVzb2x2ZWRDdXN0b21FbGVtZW50KCkpCisg
ICAgaWYgKGVsZW1lbnQtPmlzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKSkKICAgICAg
ICAgcmV0dXJuIENSRUFURV9ET01fV1JBUFBFUihnbG9iYWxPYmplY3QsICRwYXJhbWV0ZXJze2N1
c3RvbUVsZW1lbnRJbnRlcmZhY2VOYW1lfSwgV1RGTW92ZShlbGVtZW50KSk7CiAjZW5kaWYKIEVO
RApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcAkocmV2aXNpb24gMjA1MzkzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NzcsNyAr
Njc3LDcgQEAgUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcgogI2lmIEVO
QUJMRShDVVNUT01fRUxFTUVOVFMpCiAgICAgICAgIGlmICh3aW5kb3cgJiYgRG9jdW1lbnQ6OnZh
bGlkYXRlQ3VzdG9tRWxlbWVudE5hbWUobG9jYWxOYW1lKSA9PSBDdXN0b21FbGVtZW50TmFtZVZh
bGlkYXRpb25TdGF0dXM6OlZhbGlkKSB7CiAgICAgICAgICAgICBlbGVtZW50ID0gSFRNTEVsZW1l
bnQ6OmNyZWF0ZShxdWFsaWZpZWROYW1lLCBvd25lckRvY3VtZW50KTsKLSAgICAgICAgICAgIGVs
ZW1lbnQtPnNldElzVW5yZXNvbHZlZEN1c3RvbUVsZW1lbnQoKTsKKyAgICAgICAgICAgIGVsZW1l
bnQtPnNldElzQ3VzdG9tRWxlbWVudFVwZ3JhZGVDYW5kaWRhdGUoKTsKICAgICAgICAgfSBlbHNl
CiAjZW5kaWYKICAgICAgICAgICAgIGVsZW1lbnQgPSBIVE1MVW5rbm93bkVsZW1lbnQ6OmNyZWF0
ZShxdWFsaWZpZWROYW1lLCBvd25lckRvY3VtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAkocmV2aXNpb24gMjA1Mzkz
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTk1LDEwICsxOTUsMTQgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJz
ZXI6OnJ1blNjcmlwdHNGb3JQYQogICAgIGlmIChzdGQ6OnVuaXF1ZV9wdHI8Q3VzdG9tRWxlbWVu
dENvbnN0cnVjdGlvbkRhdGE+IGNvbnN0cnVjdGlvbkRhdGEgPSBtX3RyZWVCdWlsZGVyLT50YWtl
Q3VzdG9tRWxlbWVudENvbnN0cnVjdGlvbkRhdGEoKSkgewogICAgICAgICBBU1NFUlQoIW1fdHJl
ZUJ1aWxkZXItPmhhc1BhcnNlckJsb2NraW5nU2NyaXB0V29yaygpKTsKIAotICAgICAgICBSZWZQ
dHI8RWxlbWVudD4gbmV3RWxlbWVudCA9IGNvbnN0cnVjdGlvbkRhdGEtPmVsZW1lbnRJbnRlcmZh
Y2UtPmNvbnN0cnVjdEVsZW1lbnQoY29uc3RydWN0aW9uRGF0YS0+bmFtZSwgSlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlOjpTaG91bGRDbGVhckV4Y2VwdGlvbjo6Q2xlYXIpOworICAgICAgICAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnLyNjcmVhdGUtYW4tZWxlbWVudC1mb3ItdGhlLXRv
a2VuCisgICAgICAgIGF1dG8mIGVsZW1lbnRJbnRlcmZhY2UgPSBjb25zdHJ1Y3Rpb25EYXRhLT5l
bGVtZW50SW50ZXJmYWNlLmdldCgpOworICAgICAgICBSZWZQdHI8RWxlbWVudD4gbmV3RWxlbWVu
dCA9IGVsZW1lbnRJbnRlcmZhY2UuY29uc3RydWN0RWxlbWVudChjb25zdHJ1Y3Rpb25EYXRhLT5u
YW1lLCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OlNob3VsZENsZWFyRXhjZXB0aW9uOjpDbGVh
cik7CiAgICAgICAgIGlmICghbmV3RWxlbWVudCkgewogICAgICAgICAgICAgQVNTRVJUKCFtX3Ry
ZWVCdWlsZGVyLT5pc1BhcnNpbmdUZW1wbGF0ZUNvbnRlbnRzKCkpOwogICAgICAgICAgICAgbmV3
RWxlbWVudCA9IEhUTUxVbmtub3duRWxlbWVudDo6Y3JlYXRlKFF1YWxpZmllZE5hbWUobnVsbEF0
b20sIGNvbnN0cnVjdGlvbkRhdGEtPm5hbWUsIHhodG1sTmFtZXNwYWNlVVJJKSwgKmRvY3VtZW50
KCkpOworICAgICAgICAgICAgbmV3RWxlbWVudC0+c2V0SXNDdXN0b21FbGVtZW50VXBncmFkZUNh
bmRpZGF0ZSgpOworICAgICAgICAgICAgbmV3RWxlbWVudC0+c2V0SXNGYWlsZWRDdXN0b21FbGVt
ZW50KGVsZW1lbnRJbnRlcmZhY2UpOwogICAgICAgICB9CiAKICAgICAgICAgbV90cmVlQnVpbGRl
ci0+ZGlkQ3JlYXRlQ3VzdG9tT3JDYWxsYmFja0VsZW1lbnQobmV3RWxlbWVudC5yZWxlYXNlTm9u
TnVsbCgpLCAqY29uc3RydWN0aW9uRGF0YSk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDUzOTMpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAor
MjAxNi0wOS0wMyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBV
cGRhdGUgdGhlIHNlbWFudGljcyBvZiBkZWZpbmVkLW5lc3Mgb2YgY3VzdG9tIGVsZW1lbnRzIHBl
ciBzcGVjIGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MTU3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIGEgbmV3IHRlc3QgY2FzZXMgdG8gZGVmaW5lZC1wc2V1ZG8tY2xhc3MuaHRt
bCwgZGVmaW5lZC1ydWxlLmh0bWwsIGFuZCBOb2RlLWNsb25lTm9kZS5odG1sCisgICAgICAgIGFu
ZCByZWJhc2VsaW5lZCB0aGUgdGVzdHMuCisKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50
cy9kZWZpbmVkLXBzZXVkby1jbGFzcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9jdXN0
b20tZWxlbWVudHMvZGVmaW5lZC1wc2V1ZG8tY2xhc3MuaHRtbDoKKyAgICAgICAgKE15RWxlbWVu
dCk6IE1hZGUgbWF0Y2hJbnNpZGVDb25zdHJ1Y3RvciBhbiBpbnN0YW5jZSB2YXJpYWJsZSBzbyB0
aGF0IHRoZXJlIHdvbid0IGJlIGludGVyLXRlc3QgZGVwZW5kZW5jeS4KKyAgICAgICAgQWRkZWQg
dGVzdCBjYXNlcyBmb3IgOmRlZmluZWQgbm90IGJlaW5nIG5vdCBhcHBseWluZyB0byBhIGZhaWxl
ZC10by11cGdyYWRlIGN1c3RvbSBlbGVtZW50LiBGaW5hbGx5LCB1cGRhdGVkCisgICAgICAgIHRl
c3QgZXhwZWN0YXRpb24gdG8gcmVmbGVjdCB0aGUgZmFjdCA6ZGVmaW5lZCBub3cgYXBwbGllcyBp
bnNpZGUgY3VzdG9tIGVsZW1lbnQgY29uc3RydWN0b3JzIGltbWVkaWF0ZWx5IGFmdGVyCisgICAg
ICAgIHN1cGVyKCkgY2FsbC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVk
LXJ1bGUuaHRtbDogQWRkZWQgYSB0ZXN0IGNhc2UgZm9yIDpkZWZpbmVkIG5vdCBhcHBseWluZyB0
byBhIGZhaWxlZC10by11cGdyYWRlCisgICAgICAgIGN1c3RvbSBlbGVtZW50LiBBbHNvIGFkanVz
dGVkIHRoZSBoZWlnaHQgb2YgdGhlIGxhc3QgYm94IHNvIHRoYXQgdGhlIGdyZWVuIGJveCBpcyBz
dGlsbCAxMDBweCBieSAxMDBweC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy91cGdy
YWRpbmcvTm9kZS1jbG9uZU5vZGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvY3VzdG9t
LWVsZW1lbnRzL3VwZ3JhZGluZy9Ob2RlLWNsb25lTm9kZS5odG1sOiBBZGRlZCBhIHRlc3QgdG8g
bWFrZSBzdXJlIHdlIGRvbid0IHRyeSB0byB1cGdyYWRlCisgICAgICAgIGEgY3VzdG9tIGVsZW1l
bnQgZm9yIHRoZSBzZWNvbmQgdGltZSB3aGVuIHRoZSBmaXJzdCBhdHRlbXB0IHJlc3VsdGVkIGlu
IHRoZSBjb25zdHJ1Y3RvciB0aHJvd2luZyBhbiBleGNlcHRpb24uCisKIDIwMTYtMDktMDIgIFph
bGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBTaG91bGQgbmV2ZXIgYmUg
cmVhY2hlZCBmYWlsdXJlIGluIFdlYkNvcmU6OmZsb2F0VmFsdWVGb3JMZW5ndGgKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRvLWNsYXNzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9k
ZWZpbmVkLXBzZXVkby1jbGFzcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIwNTM5MykKKysrIExh
eW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRvLWNsYXNzLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxNCArMSwxNiBAQAotQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDc1OiBUeXBlRXJyb3I6IFRoZSByZXN1bHQgb2YgY29uc3RydWN0aW5nIGEgY3VzdG9t
IGVsZW1lbnQgbXVzdCBiZSBhIEhUTUxFbGVtZW50CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgNzk6
IFR5cGVFcnJvcjogVGhlIHJlc3VsdCBvZiBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCBt
dXN0IGJlIGEgSFRNTEVsZW1lbnQKIAogSGFybmVzcyBFcnJvciAoRkFJTCksIG1lc3NhZ2UgPSBU
eXBlRXJyb3I6IFRoZSByZXN1bHQgb2YgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQgbXVz
dCBiZSBhIEhUTUxFbGVtZW50CiAKIFBBU1MgVGhlIGRlZmluZWQgZmxhZyBvZiBhIGN1c3RvbSBl
bGVtZW50IG11c3Qgbm90IGJlIHNldCBpZiBhIGN1c3RvbSBlbGVtZW50IGhhcyBub3QgYmVlbiB1
cGdyYWRlZCB5ZXQgCiBQQVNTIFRoZSBkZWZpbmVkIGZsYWcgb2YgYSBjdXN0b20gZWxlbWVudCBt
dXN0IG5vdCBiZSBzZXQgaWYgYSBjdXN0b20gZWxlbWVudCBoYXMgbm90IGJlZW4gdXBncmFkZWQg
eWV0IGV2ZW4gaWYgdGhlIGVsZW1lbnQgaGFzIGJlZW4gZGVmaW5lZCAKIFBBU1MgVGhlIGRlZmlu
ZWQgZmxhZyBvZiBhIGN1c3RvbSBlbGVtZW50IG11c3QgYmUgc2V0IHdoZW4gYSBjdXN0b20gZWxl
bWVudCBpcyBzdWNjZXNzZnVsbHkgdXBncmFkZWQgCi1QQVNTIFRoZSBkZWZpbmVkIGZsYWcgb2Yg
YSBjdXN0b20gZWxlbWVudCBtdXN0IGJlIHNldCBpZiB0aGVyZSBpcyBhIG1hdGNoaW5nIGRlZmlu
aXRpb24gCitQQVNTIFRoZSBkZWZpbmVkIGZsYWcgb2YgYSBjdXN0b20gZWxlbWVudCBtdXN0IGJl
IHNldCBpbnNpZGUgdGhlIEhUTUxFbGVtZW50IGNvbnN0cnVjdG9yIAogUEFTUyBUaGUgZGVmaW5l
ZCBmbGFnIG9mIGFuIHVwZ3JhZGVkIGN1c3RvbSBlbGVtZW50IG11c3QgYmUgc2V0IAogUEFTUyBU
aGUgZGVmaW5lZCBmbGFnIG9mIGEgY3VzdG9tIGVsZW1lbnQgY3JlYXRlZCBieSBIVE1MIHBhcnNl
ciBtdXN0IGJlIHVuc2V0IGlmIHRoZXJlIGlzIG5vIG1hdGNoaW5nIGRlZmluaXRpb24gCiBQQVNT
IFRoZSBkZWZpbmVkIGZsYWcgb2YgYSBjdXN0b20gZWxlbWVudCBjcmVhdGVkIGJ5IEhUTUwgcGFy
c2VyIG11c3QgYmUgc2V0IGlmIHRoZXJlIGlzIGEgbWF0Y2hpbmcgZGVmaW5pdGlvbiAKLVBBU1Mg
VGhlIGRlZmluZWQgZmxhZyBvZiBhIGN1c3RvbSBlbGVtZW50IGNyZWF0ZWQgYnkgSFRNTCBwYXJz
ZXIgbXVzdCBiZSBzZXQgYWZ0ZXIgY2hlY2tpbmcgdGhlIHJldHVybmVkIHJlc3VsdCBpcyBhbiBp
bnN0YW5jZSBvZiBIVE1MRWxlbWVudCAKK1BBU1MgVGhlIGVsZW1lbnQgaW5zZXJ0ZWQgYnkgSFRN
TCBwYXJzZXIgbXVzdCBub3QgaGF2ZSB0aGUgZGVmaW5lZCBmbGFnIHNldCBpZiB0aGUgY29uc3Ry
dWN0b3IgcmV0dXJucyBhIFRleHQgbm9kZSAKIFBBU1MgVGhlIGRlZmluZWQgZmxhZyBvZiBhIGN1
c3RvbSBlbGVtZW50IG11c3QgYmUgc2V0IGFmdGVyIGNoZWNraW5nIHRoZSByZXR1cm5lZCByZXN1
bHQgaXMgYW4gaW5zdGFuY2Ugb2YgSFRNTEVsZW1lbnQgd2hlbiB1cGdyYWRpbmcgYSBjdXN0b20g
ZWxlbWVudCAKK1BBU1MgVGhlIGRlZmluZWQgZmxhZyBvZiBhIGN1c3RvbSBlbGVtZW50IG11c3Qg
YmUgc2V0IGluc2lkZSBhIGNvbnN0cnVjdG9yIHdoZW4gY29uc3RydWN0aW5nIGEgY3VzdG9tIGVs
ZW1lbnQgc3luY2hyb25vdXNseSBldmVuIGlmIHRoZSBjb25zdHJ1Y3RvciB0aHJldyBhbiBleGNl
cHRpb24gbGF0ZXIgCitQQVNTIFRoZSBkZWZpbmVkIGZsYWcgb2YgYSBjdXN0b20gZWxlbWVudCBt
dXN0IG5vdCBiZSBzZXQgd2hlbiBhbiB1cGdyYWRlIG9mIGEgY3VzdG9tIGVsZW1lbnQgZmFpbHMg
CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL2RlZmluZWQtcHNldWRv
LWNsYXNzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVu
dHMvZGVmaW5lZC1wc2V1ZG8tY2xhc3MuaHRtbAkocmV2aXNpb24gMjA1MzkzKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZGVmaW5lZC1wc2V1ZG8tY2xhc3MuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMTgsMTMgKzE4LDEzIEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGFz
c2VydF9mYWxzZSh1cGdyYWRlQ2FuZGlkYXRlLm1hdGNoZXMoJzpkZWZpbmVkJykpOwogfSwgJ1Ro
ZSBkZWZpbmVkIGZsYWcgb2YgYSBjdXN0b20gZWxlbWVudCBtdXN0IG5vdCBiZSBzZXQgaWYgYSBj
dXN0b20gZWxlbWVudCBoYXMgbm90IGJlZW4gdXBncmFkZWQgeWV0Jyk7CiAKLXZhciBtYXRjaElu
c2lkZUNvbnN0cnVjdG9yOwogY2xhc3MgTXlFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQgewog
ICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICBzdXBlcigpOwotICAgICAgICBtYXRjaEluc2lk
ZUNvbnN0cnVjdG9yID0gdGhpcy5tYXRjaGVzKCc6ZGVmaW5lZCcpOworICAgICAgICB0aGlzLm1h
dGNoSW5zaWRlQ29uc3RydWN0b3IgPSB0aGlzLm1hdGNoZXMoJzpkZWZpbmVkJyk7CiAgICAgfQog
fQorCiBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ215LWVsZW1lbnQnLCBNeUVsZW1lbnQpOwogCiB0
ZXN0KGZ1bmN0aW9uICgpIHsKQEAgLTM0LDE5ICszNCwxOSBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsK
IHRlc3QoZnVuY3Rpb24gKCkgewogICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodXBncmFk
ZUNhbmRpZGF0ZSk7CiAgICAgYXNzZXJ0X3RydWUodXBncmFkZUNhbmRpZGF0ZS5tYXRjaGVzKCc6
ZGVmaW5lZCcpKTsKLSAgICBhc3NlcnRfZmFsc2UobWF0Y2hJbnNpZGVDb25zdHJ1Y3RvciwgJ1Vw
Z3JhZGluZyBhIGN1c3RvbSBlbGVtZW50IG11c3Qgc2V0IGRlZmluZWQgZmxhZyBhZnRlciBpbnZv
a2luZyB0aGUgY29uc3RydWN0b3InKTsKKyAgICBhc3NlcnRfZmFsc2UoISF1cGdyYWRlQ2FuZGlk
YXRlLm1hdGNoSW5zaWRlQ29uc3RydWN0b3IsICdVcGdyYWRpbmcgYSBjdXN0b20gZWxlbWVudCBt
dXN0IHNldCBkZWZpbmVkIGZsYWcgYWZ0ZXIgaW52b2tpbmcgdGhlIGNvbnN0cnVjdG9yJyk7CiB9
LCAnVGhlIGRlZmluZWQgZmxhZyBvZiBhIGN1c3RvbSBlbGVtZW50IG11c3QgYmUgc2V0IHdoZW4g
YSBjdXN0b20gZWxlbWVudCBpcyBzdWNjZXNzZnVsbHkgdXBncmFkZWQnKTsKIAogdGVzdChmdW5j
dGlvbiAoKSB7CiAgICAgdmFyIGRlZmluZWRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnbXktZWxlbWVudCcpOwogICAgIGFzc2VydF90cnVlKGRlZmluZWRFbGVtZW50Lm1hdGNoZXMo
JzpkZWZpbmVkJykpOwotICAgIGFzc2VydF9mYWxzZShtYXRjaEluc2lkZUNvbnN0cnVjdG9yLCAn
Q3JlYXRpbmcgYSBjdXN0b20gZWxlbWVudCBtdXN0IHNldCBkZWZpbmVkIGZsYWcgYWZ0ZXIgaW52
b2tpbmcgdGhlIGNvbnN0cnVjdG9yJyk7Ci19LCAnVGhlIGRlZmluZWQgZmxhZyBvZiBhIGN1c3Rv
bSBlbGVtZW50IG11c3QgYmUgc2V0IGlmIHRoZXJlIGlzIGEgbWF0Y2hpbmcgZGVmaW5pdGlvbicp
OworICAgIGFzc2VydF90cnVlKCEhZGVmaW5lZEVsZW1lbnQubWF0Y2hJbnNpZGVDb25zdHJ1Y3Rv
cik7Cit9LCAnVGhlIGRlZmluZWQgZmxhZyBvZiBhIGN1c3RvbSBlbGVtZW50IG11c3QgYmUgc2V0
IGluc2lkZSB0aGUgSFRNTEVsZW1lbnQgY29uc3RydWN0b3InKTsKIAogdGVzdChmdW5jdGlvbiAo
KSB7CiAgICAgdmFyIHVwZ3JhZGVkRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ215
LWVsZW1lbnQnKS5jbG9uZU5vZGUodHJ1ZSk7CiAgICAgYXNzZXJ0X3RydWUodXBncmFkZWRFbGVt
ZW50Lm1hdGNoZXMoJzpkZWZpbmVkJykpOwotICAgIGFzc2VydF9mYWxzZShtYXRjaEluc2lkZUNv
bnN0cnVjdG9yLCAnQ3JlYXRpbmcgYSBjdXN0b20gZWxlbWVudCBtdXN0IHNldCBkZWZpbmVkIGZs
YWcgYWZ0ZXIgaW52b2tpbmcgdGhlIGNvbnN0cnVjdG9yJyk7CisgICAgYXNzZXJ0X2ZhbHNlKCEh
dXBncmFkZWRFbGVtZW50Lm1hdGNoSW5zaWRlQ29uc3RydWN0b3IsICdVcGdyYWRpbmcgYSBjdXN0
b20gZWxlbWVudCBtdXN0IHNldCBkZWZpbmVkIGZsYWcgYWZ0ZXIgaW52b2tpbmcgdGhlIGNvbnN0
cnVjdG9yJyk7CiB9LCAnVGhlIGRlZmluZWQgZmxhZyBvZiBhbiB1cGdyYWRlZCBjdXN0b20gZWxl
bWVudCBtdXN0IGJlIHNldCcpOwogCiBkb2N1bWVudC53cml0ZSgnPG15LW90aGVyLWVsZW1lbnQ+
PC9teS1vdGhlci1lbGVtZW50PicpOwpAQCAtNTQsMTkgKzU0LDIzIEBAIGRvY3VtZW50LndyaXRl
KCc8bXktb3RoZXItZWxlbWVudD48L215LW8KIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIHZhciBw
YXJzZXJDcmVhdGVkVW5mZWZpbmVkRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ215
LW90aGVyLWVsZW1lbnQnKTsKICAgICBhc3NlcnRfZmFsc2UocGFyc2VyQ3JlYXRlZFVuZmVmaW5l
ZEVsZW1lbnQubWF0Y2hlcygnOmRlZmluZWQnKSk7CisgICAgYXNzZXJ0X2ZhbHNlKCEhcGFyc2Vy
Q3JlYXRlZFVuZmVmaW5lZEVsZW1lbnQubWF0Y2hJbnNpZGVDb25zdHJ1Y3Rvcik7CiB9LCAnVGhl
IGRlZmluZWQgZmxhZyBvZiBhIGN1c3RvbSBlbGVtZW50IGNyZWF0ZWQgYnkgSFRNTCBwYXJzZXIg
bXVzdCBiZSB1bnNldCBpZiB0aGVyZSBpcyBubyBtYXRjaGluZyBkZWZpbml0aW9uJyk7CiAKLWRv
Y3VtZW50LndyaXRlKCc8bXktZWxlbWVudD48L215LWVsZW1lbnQ+Jyk7Citkb2N1bWVudC53cml0
ZSgnPG15LWVsZW1lbnQgaWQ9InBhcnNlci1jcmVhdGVkLWRlZmluZWQtZWxlbWVudCI+PC9teS1l
bGVtZW50PicpOwogCiB0ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICB2YXIgcGFyc2VyQ3JlYXRlZERl
ZmluZWRFbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbXktZWxlbWVudCcpOworICAg
IHZhciBwYXJzZXJDcmVhdGVkRGVmaW5lZEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncGFyc2VyLWNyZWF0ZWQtZGVmaW5lZC1lbGVtZW50Jyk7CiAgICAgYXNzZXJ0X3RydWUocGFy
c2VyQ3JlYXRlZERlZmluZWRFbGVtZW50Lm1hdGNoZXMoJzpkZWZpbmVkJykpOworICAgIGFzc2Vy
dF90cnVlKCEhcGFyc2VyQ3JlYXRlZERlZmluZWRFbGVtZW50Lm1hdGNoSW5zaWRlQ29uc3RydWN0
b3IsCisgICAgICAgICdUaGUgZGVmaW5lZCBmbGFnIG11c3QgYmUgc2V0IGluc2lkZSBIVE1MRWxl
bWVudCBjb25zdHJ1Y3RvciB3aGVuIEhUTUxQYXJzZXIgY3JlYXRlcyBhIGN1c3RvbSBlbGVtZW50
IHN5bmNocm9ub3VzbHknKTsKIH0sICdUaGUgZGVmaW5lZCBmbGFnIG9mIGEgY3VzdG9tIGVsZW1l
bnQgY3JlYXRlZCBieSBIVE1MIHBhcnNlciBtdXN0IGJlIHNldCBpZiB0aGVyZSBpcyBhIG1hdGNo
aW5nIGRlZmluaXRpb24nKTsKIAogY2xhc3MgUmV0dXJuc0Fub3RoZXJOb2RlIGV4dGVuZHMgSFRN
TEVsZW1lbnQgewogICAgIGNvbnN0cnVjdG9yKCkgewogICAgICAgICBzdXBlcigpOwotICAgICAg
ICBtYXRjaEluc2lkZUNvbnN0cnVjdG9yID0gdGhpcy5tYXRjaGVzKCc6ZGVmaW5lZCcpOworICAg
ICAgICB0aGlzLm1hdGNoSW5zaWRlQ29uc3RydWN0b3IgPSB0aGlzLm1hdGNoZXMoJzpkZWZpbmVk
Jyk7CisgICAgICAgIFJldHVybnNBbm90aGVyTm9kZS5sYXN0SW5zdGFuY2UgPSB0aGlzOwogICAg
ICAgICByZXR1cm4gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpOwogICAgIH0KIH0KQEAgLTc1
LDEwICs3OSwxNCBAQCBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ3JldHVybnMtYW5vdGhlci1uCiBk
b2N1bWVudC53cml0ZSgnPHJldHVybnMtYW5vdGhlci1ub2RlPjwvcmV0dXJucy1hbm90aGVyLW5v
ZGU+Jyk7CiAKIHRlc3QoZnVuY3Rpb24gKCkgewotICAgIGFzc2VydF90cnVlKGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ3JldHVybnMtYW5vdGhlci1ub2RlJykubWF0Y2hlcygnOmRlZmluZWQnKSk7
Ci0gICAgYXNzZXJ0X2ZhbHNlKG1hdGNoSW5zaWRlQ29uc3RydWN0b3IsCi0gICAgICAgICdIVE1M
IHBhcnNlciBtdXN0IGNyZWF0ZSBhIGN1c3RvbSBlbGVtZW50IHdpdGggdGhlIGRlZmluZWQgZmxh
ZyBpbml0aWFsbHkgdW5zZXQnKTsKLX0sICdUaGUgZGVmaW5lZCBmbGFnIG9mIGEgY3VzdG9tIGVs
ZW1lbnQgY3JlYXRlZCBieSBIVE1MIHBhcnNlciBtdXN0IGJlIHNldCBhZnRlciBjaGVja2luZyB0
aGUgcmV0dXJuZWQgcmVzdWx0IGlzIGFuIGluc3RhbmNlIG9mIEhUTUxFbGVtZW50Jyk7CisgICAg
dmFyIGluc3RhbmNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigncmV0dXJucy1hbm90aGVyLW5v
ZGUnKTsKKyAgICBhc3NlcnRfbm90X2VxdWFscyhpbnN0YW5jZSwgUmV0dXJuc0Fub3RoZXJOb2Rl
Lmxhc3RJbnN0YW5jZSwgJ1RoZSBlbGVtZW50IGluc2VydGVkIGJ5IEhUTUwgcGFyc2VyIG11c3Qg
bm90IGJlIHRoZSBvbmUgcmV0dXJuZWQgYnkgc3VwZXIoKSBjYWxsJyk7CisgICAgYXNzZXJ0X3Ry
dWUoaW5zdGFuY2UgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCwgJ1RoZSBlbGVtZW50IGluc2VydGVk
IGJ5IEhUTUwgcGFyc2VyIG11c3QgYmUgYSBIVE1MRWxlbWVudCcpOworICAgIGFzc2VydF9mYWxz
ZShpbnN0YW5jZSBpbnN0YW5jZW9mIFJldHVybnNBbm90aGVyTm9kZSwgJ1RoZSBlbGVtZW50IGlu
c2VydGVkIGJ5IEhUTUwgcGFyc2VyIG11c3QgYmUgYSBjdXN0b20gZWxlbWVudCcpOworICAgIGFz
c2VydF9mYWxzZShpbnN0YW5jZS5tYXRjaGVzKCc6ZGVmaW5lZCcpLCAnVGhlIGRlZmluZWQgZmxh
ZyBtdXN0IG5vdCBiZSBzZXQgb24gdGhlIGVsZW1lbnQgaW5zZXJ0ZWQgYnkgSFRNTCBwYXJzZXIn
KTsKKyAgICBhc3NlcnRfdHJ1ZSghIVJldHVybnNBbm90aGVyTm9kZS5sYXN0SW5zdGFuY2UubWF0
Y2hJbnNpZGVDb25zdHJ1Y3RvciwKKyAgICAgICAgJ1RoZSBkZWZpbmVkIGZsYWcgbXVzdCBiZSBz
ZXQgaW5zaWRlIEhUTUxFbGVtZW50IGNvbnN0cnVjdG9yIHdoZW4gSFRNTFBhcnNlciBjcmVhdGVz
IGEgY3VzdG9tIGVsZW1lbnQgc3luY2hyb25vdXNseScpOworfSwgJ1RoZSBlbGVtZW50IGluc2Vy
dGVkIGJ5IEhUTUwgcGFyc2VyIG11c3Qgbm90IGhhdmUgdGhlIGRlZmluZWQgZmxhZyBzZXQgaWYg
dGhlIGNvbnN0cnVjdG9yIHJldHVybnMgYSBUZXh0IG5vZGUnKTsKIAogdGVzdChmdW5jdGlvbiAo
KSB7CiAgICAgdmFyIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncmV0dXJucy1h
bm90aGVyLW5vZGUtMicpOwpAQCAtODYsMTAgKzk0LDM4IEBAIHRlc3QoZnVuY3Rpb24gKCkgewog
ICAgICAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ3JldHVybnMtYW5vdGhlci1ub2RlLTInLCBj
bGFzcyBleHRlbmRzIFJldHVybnNBbm90aGVyTm9kZSB7fSk7CiAgICAgfSBjYXRjaCAoZSkgeyB9
CiAgICAgYXNzZXJ0X2ZhbHNlKGluc3RhbmNlLm1hdGNoZXMoJzpkZWZpbmVkJykpOwotICAgIGFz
c2VydF9mYWxzZShtYXRjaEluc2lkZUNvbnN0cnVjdG9yLAorICAgIGFzc2VydF9mYWxzZSghIWlu
c3RhbmNlLm1hdGNoSW5zaWRlQ29uc3RydWN0b3IsCiAgICAgICAgICdDcmVhdGluZyBhIGN1c3Rv
bSBlbGVtZW50IG11c3QgbGVhdmUgdGhlIGRlZmluZWQgZmxhZyB1bnNldCB3aGVuIHN5bmNocm9u
b3VzIGN1c3RvbSBlbGVtZW50cyBmbGFnIGlzIG5vdCBzZXQnKTsKIH0sICdUaGUgZGVmaW5lZCBm
bGFnIG9mIGEgY3VzdG9tIGVsZW1lbnQgbXVzdCBiZSBzZXQgYWZ0ZXIgY2hlY2tpbmcgdGhlIHJl
dHVybmVkIHJlc3VsdCBpcyBhbiBpbnN0YW5jZSBvZiBIVE1MRWxlbWVudCB3aGVuIHVwZ3JhZGlu
ZyBhIGN1c3RvbSBlbGVtZW50Jyk7CiAKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBtYXRj
aEluc2lkZUNvbnN0cnVjdG9yID0gZmFsc2U7CisgICAgY3VzdG9tRWxlbWVudHMuZGVmaW5lKCd0
aHJvd3MtZXhjZXB0aW9uJywgY2xhc3MgZXh0ZW5kcyBIVE1MRWxlbWVudCB7CisgICAgICAgIGNv
bnN0cnVjdG9yKCkgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgIG1hdGNoSW5z
aWRlQ29uc3RydWN0b3IgPSB0aGlzLm1hdGNoZXMoJzpkZWZpbmVkJyk7CisgICAgICAgICAgICB0
aHJvdyB7bmFtZTogJ2JhZCd9OworICAgICAgICB9CisgICAgfSk7CisgICAgdmFyIGluc3RhbmNl
OworICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdiYWQnfSwgZnVuY3Rpb24gKCkgeyBpbnN0YW5j
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3Rocm93cy1leGNlcHRpb24nKTsgfSk7CisgICAg
YXNzZXJ0X3RydWUobWF0Y2hJbnNpZGVDb25zdHJ1Y3Rvcik7Cit9LCAnVGhlIGRlZmluZWQgZmxh
ZyBvZiBhIGN1c3RvbSBlbGVtZW50IG11c3QgYmUgc2V0IGluc2lkZSBhIGNvbnN0cnVjdG9yIHdo
ZW4gY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQgc3luY2hyb25vdXNseScKKyAgICArICcg
ZXZlbiBpZiB0aGUgY29uc3RydWN0b3IgdGhyZXcgYW4gZXhjZXB0aW9uIGxhdGVyJyk7CisKK3Rl
c3QoZnVuY3Rpb24gKCkgeworICAgIHZhciBpbnN0YW5jZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3Rocm93cy1leGNlcHRpb24tMicpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
aW5zdGFuY2UpOworICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdiYWQnfSwgZnVuY3Rpb24gKCkg
eworICAgICAgICBjdXN0b21FbGVtZW50cy5kZWZpbmUoJ3Rocm93cy1leGNlcHRpb24tMicsIGNs
YXNzIGV4dGVuZHMgSFRNTEVsZW1lbnQgeworICAgICAgICAgICAgY29uc3RydWN0b3IoKSB7Cisg
ICAgICAgICAgICAgICAgdGhyb3cge25hbWU6ICdiYWQnfTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSk7CisgICAgfSk7CisgICAgYXNzZXJ0X2ZhbHNlKGluc3RhbmNlLm1hdGNoZXMoJzpkZWZp
bmVkJykpOworfSwgJ1RoZSBkZWZpbmVkIGZsYWcgb2YgYSBjdXN0b20gZWxlbWVudCBtdXN0IG5v
dCBiZSBzZXQgd2hlbiBhbiB1cGdyYWRlIG9mIGEgY3VzdG9tIGVsZW1lbnQgZmFpbHMnKTsKKwog
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2N1c3Rv
bS1lbGVtZW50cy9kZWZpbmVkLXJ1bGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2N1c3RvbS1lbGVtZW50cy9kZWZpbmVkLXJ1bGUuaHRtbAkocmV2aXNpb24gMjA1MzkzKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvZGVmaW5lZC1ydWxlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTIxLDE3ICsyMSwyNSBAQAogICAgICAgICBteS11bmRlZmluZWQtZWxl
bWVudDpkZWZpbmVkIHsgYmFja2dyb3VuZDogcmVkOyB9CiAgICAgICAgIG15LXVuZGVmaW5lZC1l
bGVtZW50Om5vdCg6ZGVmaW5lZCkgeyBjb2xvcjogZ3JlZW47IH0KIAotICAgICAgICBkaXYuYm94
IHsgYmFja2dyb3VuZDogZ3JlZW47IGNvbG9yOiByZWQ7IGhlaWdodDogNTBweDsgfQorICAgICAg
ICBmYWlsZWQtZWxlbWVudCB7IGJhY2tncm91bmQ6IGdyZWVuOyBjb2xvcjogcmVkOyB9CisgICAg
ICAgIGZhaWxlZC1lbGVtZW50OmRlZmluZWQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKyAgICAgICAg
ZmFpbGVkLWVsZW1lbnQ6bm90KDpkZWZpbmVkKSB7IGNvbG9yOiBncmVlbjsgfQorCisgICAgICAg
IGRpdi5ib3ggeyBiYWNrZ3JvdW5kOiBncmVlbjsgY29sb3I6IHJlZDsgfQogICAgICAgICBkaXY6
ZGVmaW5lZCB7IGNvbG9yOiBncmVlbjsgfQogICAgICAgICBkaXY6bm90KDpkZWZpbmVkKSB7IGJh
Y2tncm91bmQ6IHJlZDsgfQogICAgIDwvc3R5bGU+CiAgICAgPHA+VGVzdCBwYXNzZXMgaWYgeW91
IHNlZSBhIHNpbmdsZSAxMDBweCBieSAxMDBweCBncmVlbiBib3ggYmVsb3cuPC9wPgogICAgIDxt
eS1kZWZpbmVkLWVsZW1lbnQgY2xhc3M9ImJveCI+RkFJTDwvbXktZGVmaW5lZC1lbGVtZW50Pgog
ICAgIDxteS11bmRlZmluZWQtZWxlbWVudCBjbGFzcz0iYm94Ij5GQUlMPC9teS11bmRlZmluZWQt
ZWxlbWVudD4KKyAgICA8ZmFpbGVkLWVsZW1lbnQgY2xhc3M9ImJveCI+RkFJTDwvZmFpbGVkLWVs
ZW1lbnQ+CiAgICAgPGRpdiBjbGFzcz0iYm94Ij48L2Rpdj4KICAgICA8c2NyaXB0PgogCiAgICAg
ICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnbXktZGVmaW5lZC1lbGVtZW50JywgY2xhc3MgZXh0
ZW5kcyBIVE1MRWxlbWVudCB7fSk7CisgICAgICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgnZmFp
bGVkLWVsZW1lbnQnLCBjbGFzcyBleHRlbmRzIEhUTUxFbGVtZW50IHsKKyAgICAgICAgICAgIGNv
bnN0cnVjdG9yKCkgeyB0aHJvdyAnYmFkJzsgfQorICAgICAgICB9KTsKIAogICAgIDwvc2NyaXB0
PgogPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdXBncmFk
aW5nL05vZGUtY2xvbmVOb2RlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2N1c3RvbS1lbGVtZW50cy91cGdyYWRpbmcvTm9kZS1jbG9uZU5vZGUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAyMDUzOTMpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50
cy91cGdyYWRpbmcvTm9kZS1jbG9uZU5vZGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC02LDQgKzYsNSBAQCBQQVNTIE5vZGUucHJvdG90eXBlLmNsb25lTm9kZSh0cnVlKSBtdXN0CiBQ
QVNTIEhUTUxFbGVtZW50IGNvbnN0cnVjdG9yIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJy
b3Igd2hlbiB0aGUgdG9wIG9mIHRoZSBjb25zdHJ1Y3Rpb24gc3RhY2sgaXMgbWFya2VkIEFscmVh
ZHlDb25zdHJ1Y3RlZCBkdWUgdG8gYSBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3RvciBjb25zdHJ1
Y3RpbmcgaXRzZWxmIGFmdGVyIHN1cGVyKCkgY2FsbCAKIFBBU1MgSFRNTEVsZW1lbnQgY29uc3Ry
dWN0b3IgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHRoZSB0b3Agb2YgdGhl
IGNvbnN0cnVjdGlvbiBzdGFjayBpcyBtYXJrZWQgQWxyZWFkeUNvbnN0cnVjdGVkIGR1ZSB0byBh
IGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdG9yIGNvbnN0cnVjdGluZyBpdHNlbGYgYmVmb3JlIHN1
cGVyKCkgY2FsbCAKIFBBU1MgVXBncmFkaW5nIGEgY3VzdG9tIGVsZW1lbnQgbXVzdCB0aHJvdyBJ
bnZhbGlkU3RhdGVFcnJvciB3aGVuIHRoZSBjdXN0b20gZWxlbWVudCdzIGNvbnN0cnVjdG9yIHJl
dHVybnMgYW5vdGhlciBlbGVtZW50IAorUEFTUyBJbnNlcnRpbmcgYW4gZWxlbWVudCBtdXN0IG5v
dCB0cnkgdG8gdXBncmFkZSBhIGN1c3RvbSBlbGVtZW50IHdoZW4gaXQgaGFkIGFscmVhZHkgZmFp
bGVkIHRvIHVwZ3JhZGUgb25jZSAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxl
bWVudHMvdXBncmFkaW5nL05vZGUtY2xvbmVOb2RlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdXBncmFkaW5nL05vZGUtY2xvbmVOb2RlLmh0bWwJ
KHJldmlzaW9uIDIwNTM5MykKKysrIExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Vw
Z3JhZGluZy9Ob2RlLWNsb25lTm9kZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsNiArMTY0
LDMzIEBAIHRlc3QoZnVuY3Rpb24gKCkgewogICAgIH0pOwogfSwgJ1VwZ3JhZGluZyBhIGN1c3Rv
bSBlbGVtZW50IG11c3QgdGhyb3cgSW52YWxpZFN0YXRlRXJyb3Igd2hlbiB0aGUgY3VzdG9tIGVs
ZW1lbnRcJ3MgY29uc3RydWN0b3IgcmV0dXJucyBhbm90aGVyIGVsZW1lbnQnKTsKIAordGVzdChm
dW5jdGlvbiAoKSB7CisgICAgd2l0aE5ld0RvY3VtZW50V2l0aEFCcm93c2luZ0NvbnRleHQoZnVu
Y3Rpb24gKGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgeworCisgICAgICAgIHZhciBp
bnN0YW5jZSA9IGNvbnRlbnREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdteS1jdXN0b20tZWxlbWVu
dCcpOworICAgICAgICBjb250ZW50RG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpbnN0YW5jZSk7
CisKKyAgICAgICAgdmFyIGNhbGxzID0gW107CisgICAgICAgIGNsYXNzIE15Q3VzdG9tRWxlbWVu
dCBleHRlbmRzIGNvbnRlbnRXaW5kb3cuSFRNTEVsZW1lbnQgeworICAgICAgICAgICAgY29uc3Ry
dWN0b3IoKSB7CisgICAgICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgICAgICBjYWxs
cy5wdXNoKHRoaXMpOworICAgICAgICAgICAgICAgIHRocm93ICdiYWQnOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNvbnRlbnRXaW5kb3cu
Y3VzdG9tRWxlbWVudHMuZGVmaW5lKCdteS1jdXN0b20tZWxlbWVudCcsIE15Q3VzdG9tRWxlbWVu
dCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsgfQorCisgICAgICAgIGFzc2VydF9hcnJheV9lcXVh
bHMoY2FsbHMsIFtpbnN0YW5jZV0pOworICAgICAgICBjb250ZW50RG9jdW1lbnQuYm9keS5yZW1v
dmVDaGlsZChpbnN0YW5jZSk7CisgICAgICAgIGNvbnRlbnREb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGluc3RhbmNlKTsKKyAgICAgICAgYXNzZXJ0X2FycmF5X2VxdWFscyhjYWxscywgW2luc3Rh
bmNlXSk7CisKKyAgICB9KTsKK30sICdJbnNlcnRpbmcgYW4gZWxlbWVudCBtdXN0IG5vdCB0cnkg
dG8gdXBncmFkZSBhIGN1c3RvbSBlbGVtZW50IHdoZW4gaXQgaGFkIGFscmVhZHkgZmFpbGVkIHRv
IHVwZ3JhZGUgb25jZScpOworCiA8L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>