<?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>154855</bug_id>
          
          <creation_ts>2016-03-01 04:45:42 -0800</creation_ts>
          <short_desc>Text control shadow element style shouldn&apos;t depend on renderers</short_desc>
          <delta_ts>2016-03-01 09:33:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1169417</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-03-01 04:45:42 -0800</bug_when>
    <thetext>Currently the code for computing style for text control shadow elements lives in render tree. Style is the input for building a render tree and should be computable without having one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169421</commentid>
    <comment_count>1</comment_count>
      <attachid>272559</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-03-01 04:54:46 -0800</bug_when>
    <thetext>Created attachment 272559
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169440</commentid>
    <comment_count>2</comment_count>
      <attachid>272559</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-03-01 08:39:36 -0800</bug_when>
    <thetext>Comment on attachment 272559
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169462</commentid>
    <comment_count>3</comment_count>
      <attachid>272559</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-01 09:33:40 -0800</bug_when>
    <thetext>Comment on attachment 272559
patch

Clearing flags on attachment: 272559

Committed r197401: &lt;http://trac.webkit.org/changeset/197401&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1169463</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-01 09:33:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272559</attachid>
            <date>2016-03-01 04:54:46 -0800</date>
            <delta_ts>2016-03-01 09:33:40 -0800</delta_ts>
            <desc>patch</desc>
            <filename>text-control-innertextstyle-3.patch</filename>
            <type>text/plain</type>
            <size>29863</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE5NzM5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE2LTAzLTAxICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBUZXh0IGNvbnRyb2wgc2hhZG93
IGVsZW1lbnQgc3R5bGUgc2hvdWxkbid0IGRlcGVuZCBvbiByZW5kZXJlcnMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDg1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSB0aGUgY29kZSBm
b3IgY29tcHV0aW5nIHN0eWxlIGZvciB0ZXh0IGNvbnRyb2wgc2hhZG93IGVsZW1lbnRzIGxpdmVz
IGluIHJlbmRlciB0cmVlLgorICAgICAgICBTdHlsZSBpcyB0aGUgaW5wdXQgZm9yIGJ1aWxkaW5n
IGEgcmVuZGVyIHRyZWUgYW5kIHNob3VsZCBiZSBjb21wdXRhYmxlIHdpdGhvdXQgaGF2aW5nIG9u
ZS4KKworICAgICAgICBGaXggYnkgbW92aW5nIHZpcnR1YWwgY3JlYXRlSW5uZXJUZXh0U3R5bGUo
KSBmcm9tIFJlbmRlclRleHRDb250cm9sIGhpZXJhcmNoeSB0byB0aGUgRE9NIHNpZGUKKyAgICAg
ICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQgaGllcmFyY2h5LgorCisgICAgICAgICogZG9t
L0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZGlkRGV0YWNoUmVuZGVy
ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIp
OgorCisgICAgICAgICAgICBBbHNvIHBhc3Mgc2hhZG93IGhvc3Qgc3R5bGUgYXMgaXQgaXMgbmVl
ZGVkIGZvciB0ZXh0IGNvbnRyb2xzLgorCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBkb20vUHNldWRvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVt
ZW50OjpjbGVhckhvc3RFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6
OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIpOgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxJbnB1dEVsZW1lbnQ6OnNldFJhbmdlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MSW5wdXRFbGVtZW50OjpzZXR1cERhdGVUaW1lQ2hvb3NlclBhcmFtZXRlcnMpOgorICAgICAg
ICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFyZWFFbGVtZW50Ojp3aWxs
UmVzcG9uZFRvTW91c2VDbGlja0V2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEFy
ZWFFbGVtZW50OjpjcmVhdGVJbm5lclRleHRTdHlsZSk6CisgICAgICAgICogaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6ZGly
ZWN0aW9uRm9yRm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ6OmFkanVzdElubmVyVGV4dFN0eWxlKToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250
cm9sRWxlbWVudDo6Y2FjaGVkU2VsZWN0aW9uRGlyZWN0aW9uKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dENvbnRyb2xJbm5lckVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q29u
dHJvbElubmVyRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQ6OnJlbmRlcmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJl
cik6CisgICAgICAgICogaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHRDb250cm9sOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0Q29udHJvbDo6dGV4dEJsb2NrTG9naWNhbEhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6YWRqdXN0SW5uZXJUZXh0U3R5bGUpOiBEZWxldGVk
LgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6YmFzZWxpbmVQb3NpdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6bGF5b3V0U3BlY2lhbEV4Y2x1
ZGVkQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmU6
OmNyZWF0ZUlubmVyVGV4dFN0eWxlKTogRGVsZXRlZC4KKworICAgICAgICAgICAgY3JlYXRlSW5u
ZXJUZXh0U3R5bGUgbW92ZXMgdG8gSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0
U3R5bGUKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5o
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUpOgorCisgICAgICAgICAgICBSZW1vdmUgbV9kZXNpcmVkSW5uZXJU
ZXh0TG9naWNhbEhlaWdodCBjYWNoZS4gSXQgZG9lc24ndCB3b3JrLCBpdCBpcyBuZXZlciB2YWxp
ZCB3aGVuIGhpdC4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjpsYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjpzdHlsZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmU6OmNvbXB1dGVDb250cm9sTG9naWNhbEhlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnRleHRTaG91bGRCZVRydW5jYXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmNyZWF0ZUlu
bmVyVGV4dFN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250
cm9sU2luZ2xlTGluZTo6Y3JlYXRlSW5uZXJCbG9ja1N0eWxlKTogRGVsZXRlZC4KKworICAgICAg
ICAgICAgLSBjcmVhdGVJbm5lclRleHRTdHlsZSBtb3ZlcyB0byBIVE1MSW5wdXRFbGVtZW50Ojpj
cmVhdGVJbm5lclRleHRTdHlsZQorICAgICAgICAgICAgLSBjcmVhdGVJbm5lckJsb2NrU3R5bGUg
bW92ZXMgdG8gVGV4dENvbnRyb2xJbm5lckVsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIK
KworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6Y2VudGVyQ29udGFp
bmVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVM
aW5lOjpjb250YWluZXJFbGVtZW50KToKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpzdHlsZUZvckVs
ZW1lbnQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcik6CisgICAgICAgICogc3ZnL1NW
R0VsZW1lbnQuaDoKKwogMjAxNi0wMy0wMSAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtNYWNdW2NtYWtlXSBPbmUgbW9yZSB1bnJldmlld2VkIHNwZWN1
bGF0aXZlIGJ1aWxkZml4IGFmdGVyIHIxOTczNzUuIEp1c3QgZm9yIGZ1bi4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5NzE2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI2OSw3ICszMjY5LDcgQEAgdm9pZCBFbGVt
ZW50OjpkaWREZXRhY2hSZW5kZXJlcnMoKQogICAgIEFTU0VSVChoYXNDdXN0b21TdHlsZVJlc29s
dmVDYWxsYmFja3MoKSk7CiB9CiAKLVJlZlB0cjxSZW5kZXJTdHlsZT4gRWxlbWVudDo6Y3VzdG9t
U3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYpCitSZWZQdHI8UmVuZGVyU3R5bGU+IEVsZW1l
bnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmLCBSZW5kZXJTdHlsZSopCiB7
CiAgICAgQVNTRVJUKGhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMTk3MTY0KQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDcgKzQ3
Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoUmVuZGVyZXJzKCk7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxEZXRhY2hSZW5kZXJlcnMoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRGV0YWNoUmVuZGVyZXJzKCk7Ci0gICAgdmlydHVhbCBSZWZQdHI8UmVuZGVyU3R5bGU+IGN1
c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKTsKKyAgICB2aXJ0
dWFsIFJlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHls
ZSYgcGFyZW50U3R5bGUsIFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpOwogCiAgICAgTGF5
b3V0UmVjdCBhYnNvbHV0ZUV2ZW50SGFuZGxlckJvdW5kcyhib29sJiBpbmNsdWRlc0ZpeGVkUG9z
aXRpb25FbGVtZW50cykgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1
ZG9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxl
bWVudC5jcHAJKHJldmlzaW9uIDE5NzE2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9F
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFBzZXVkb0Vs
ZW1lbnQ6OmNsZWFySG9zdEVsZW1lbnQoKQogICAgIG1faG9zdEVsZW1lbnQgPSBudWxscHRyOwog
fQogCi1SZWZQdHI8UmVuZGVyU3R5bGU+IFBzZXVkb0VsZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVu
ZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKQorUmVmUHRyPFJlbmRlclN0eWxlPiBQc2V1
ZG9FbGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJiBwYXJlbnRTdHls
ZSwgUmVuZGVyU3R5bGUqKQogewogICAgIHJldHVybiBtX2hvc3RFbGVtZW50LT5yZW5kZXJlcigp
LT5nZXRDYWNoZWRQc2V1ZG9TdHlsZShtX3BzZXVkb0lkLCAmcGFyZW50U3R5bGUpOwogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCShyZXZpc2lvbiAxOTcxNjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0
NSw3IEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiBob3N0RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1faG9zdEVsZW1lbnQ7IH0KICAgICB2b2lkIGNsZWFySG9zdEVsZW1lbnQoKTsKIAotICAgIHZp
cnR1YWwgUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0
eWxlJiBwYXJlbnRTdHlsZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBSZWZQdHI8UmVuZGVyU3R5
bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBSZW5k
ZXJTdHlsZSogc2hhZG93SG9zdFN0eWxlKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
QXR0YWNoUmVuZGVyZXJzKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2FsY1N0
eWxlKFN0eWxlOjpDaGFuZ2UpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCByZW5kZXJlcklz
TmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHJldmlzaW9uIDE5NzE2NCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NzEs
NiArMTg3MSwyOSBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnNldFJhbmdlVGV4dChjb25zCiAg
ICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OnNldFJhbmdlVGV4dChyZXBsYWNlbWVudCwg
c3RhcnQsIGVuZCwgc2VsZWN0aW9uTW9kZSwgZWMpOwogfQogCitSZWY8UmVuZGVyU3R5bGU+IEhU
TUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkgY29uc3QKK3sKKyAgICBhdXRvIHRleHRCbG9ja1N0eWxlID0gUmVuZGVyU3R5bGU6OmNy
ZWF0ZSgpOworICAgIHRleHRCbG9ja1N0eWxlLmdldCgpLmluaGVyaXRGcm9tKCZzdHlsZSk7Cisg
ICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3R5bGUsIHRleHRCbG9ja1N0eWxlLmdldCgpKTsKKwor
ICAgIHRleHRCbG9ja1N0eWxlLmdldCgpLnNldFdoaXRlU3BhY2UoUFJFKTsKKyAgICB0ZXh0Qmxv
Y2tTdHlsZS5nZXQoKS5zZXRPdmVyZmxvd1dyYXAoTm9ybWFsT3ZlcmZsb3dXcmFwKTsKKyAgICB0
ZXh0QmxvY2tTdHlsZS5nZXQoKS5zZXRPdmVyZmxvd1goT0hJRERFTik7CisgICAgdGV4dEJsb2Nr
U3R5bGUuZ2V0KCkuc2V0T3ZlcmZsb3dZKE9ISURERU4pOworCisgICAgYm9vbCB0ZXh0U2hvdWxk
QmVUcnVuY2F0ZWQgPSBkb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCkgIT0gdGhpcyAmJiBzdHls
ZS50ZXh0T3ZlcmZsb3coKSA9PSBUZXh0T3ZlcmZsb3dFbGxpcHNpczsKKyAgICB0ZXh0QmxvY2tT
dHlsZS5nZXQoKS5zZXRUZXh0T3ZlcmZsb3codGV4dFNob3VsZEJlVHJ1bmNhdGVkID8gVGV4dE92
ZXJmbG93RWxsaXBzaXMgOiBUZXh0T3ZlcmZsb3dDbGlwKTsKKworICAgIC8vIERvIG5vdCBhbGxv
dyBsaW5lLWhlaWdodCB0byBiZSBzbWFsbGVyIHRoYW4gb3VyIGRlZmF1bHQuCisgICAgaWYgKHRl
eHRCbG9ja1N0eWxlLmdldCgpLmZvbnRNZXRyaWNzKCkubGluZVNwYWNpbmcoKSA+IHN0eWxlLmNv
bXB1dGVkTGluZUhlaWdodCgpKQorICAgICAgICB0ZXh0QmxvY2tTdHlsZS5nZXQoKS5zZXRMaW5l
SGVpZ2h0KFJlbmRlclN0eWxlOjppbml0aWFsTGluZUhlaWdodCgpKTsKKworICAgIHRleHRCbG9j
a1N0eWxlLmdldCgpLnNldERpc3BsYXkoQkxPQ0spOworCisgICAgcmV0dXJuIHRleHRCbG9ja1N0
eWxlOworfQorCiAjaWYgRU5BQkxFKERBVEVfQU5EX1RJTUVfSU5QVVRfVFlQRVMpCiBib29sIEhU
TUxJbnB1dEVsZW1lbnQ6OnNldHVwRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycyhEYXRlVGltZUNo
b29zZXJQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW5wdXRFbGVtZW50LmgJKHJldmlzaW9uIDE5NzE2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNyArMTQwLDEwIEBA
IHB1YmxpYzoKICNlbmRpZgogCiAgICAgSFRNTEVsZW1lbnQqIGNvbnRhaW5lckVsZW1lbnQoKSBj
b25zdDsKKyAgICAKICAgICB2aXJ0dWFsIFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCogaW5u
ZXJUZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgUmVmPFJl
bmRlclN0eWxlPiBjcmVhdGVJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0
IG92ZXJyaWRlOworCiAgICAgSFRNTEVsZW1lbnQqIGlubmVyQmxvY2tFbGVtZW50KCkgY29uc3Q7
CiAgICAgSFRNTEVsZW1lbnQqIGlubmVyU3BpbkJ1dHRvbkVsZW1lbnQoKSBjb25zdDsKICAgICBI
VE1MRWxlbWVudCogY2Fwc0xvY2tJbmRpY2F0b3JFbGVtZW50KCkgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5NzE2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzOSw0ICs1MzksMjAgQEAgYm9vbCBIVE1MVGV4dEFyZWFFbGVtZW50Ojp3
aWxsUmVzcG9uZFRvTQogICAgIHJldHVybiAhaXNEaXNhYmxlZEZvcm1Db250cm9sKCk7CiB9CiAK
K1JlZjxSZW5kZXJTdHlsZT4gSFRNTFRleHRBcmVhRWxlbWVudDo6Y3JlYXRlSW5uZXJUZXh0U3R5
bGUoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAoreworICAgIGF1dG8gdGV4dEJsb2Nr
U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgdGV4dEJsb2NrU3R5bGUuZ2V0KCku
aW5oZXJpdEZyb20oJnN0eWxlKTsKKyAgICBhZGp1c3RJbm5lclRleHRTdHlsZShzdHlsZSwgdGV4
dEJsb2NrU3R5bGUuZ2V0KCkpOworICAgIHRleHRCbG9ja1N0eWxlLmdldCgpLnNldERpc3BsYXko
QkxPQ0spOworCisjaWYgUExBVEZPUk0oSU9TKQorICAgIC8vIFdlJ3JlIGFkZGluZyB0aHJlZSBl
eHRyYSBwaXhlbHMgb2YgcGFkZGluZyB0byBsaW5lIHRleHRhcmVhcyB1cCB3aXRoIHRleHQgZmll
bGRzLiAgCisgICAgdGV4dEJsb2NrU3R5bGUuZ2V0KCkuc2V0UGFkZGluZ0xlZnQoTGVuZ3RoKDMs
IEZpeGVkKSk7CisgICAgdGV4dEJsb2NrU3R5bGUuZ2V0KCkuc2V0UGFkZGluZ1JpZ2h0KExlbmd0
aCgzLCBGaXhlZCkpOworI2VuZGlmCisKKyAgICByZXR1cm4gdGV4dEJsb2NrU3R5bGU7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRl
eHRBcmVhRWxlbWVudC5oCShyZXZpc2lvbiAxOTcxNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBpc1ZhbGlkVmFsdWUoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAgICAg
CiAgICAgdmlydHVhbCBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQqIGlubmVyVGV4dEVsZW1l
bnQoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZjxSZW5kZXJTdHlsZT4gY3JlYXRl
SW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmKSBjb25zdCBvdmVycmlkZTsKIAogICAg
IHZvaWQgcmVuZGVyZXJXaWxsQmVEZXN0cm95ZWQoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHJldmlzaW9uIDE5
NzE2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAiSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQuaCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZU1hcHBpbmdzLmgiCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudC5oIgpAQCAtNzU4LDQg
Kzc1OSw0OCBAQCBTdHJpbmcgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpcmVjCiAgICAg
cmV0dXJuICJsdHIiOwogfQogCit2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjphZGp1
c3RJbm5lclRleHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIFJlbmRlclN0
eWxlJiB0ZXh0QmxvY2tTdHlsZSkgY29uc3QKK3sKKyAgICAvLyBUaGUgaW5uZXIgYmxvY2ssIGlm
IHByZXNlbnQsIGFsd2F5cyBoYXMgaXRzIGRpcmVjdGlvbiBzZXQgdG8gTFRSLAorICAgIC8vIHNv
IHdlIG5lZWQgdG8gaW5oZXJpdCB0aGUgZGlyZWN0aW9uIGFuZCB1bmljb2RlLWJpZGkgc3R5bGUg
ZnJvbSB0aGUgZWxlbWVudC4KKyAgICB0ZXh0QmxvY2tTdHlsZS5zZXREaXJlY3Rpb24ocGFyZW50
U3R5bGUuZGlyZWN0aW9uKCkpOworICAgIHRleHRCbG9ja1N0eWxlLnNldFVuaWNvZGVCaWRpKHBh
cmVudFN0eWxlLnVuaWNvZGVCaWRpKCkpOworCisgICAgaWYgKEhUTUxFbGVtZW50KiBpbm5lclRl
eHQgPSBpbm5lclRleHRFbGVtZW50KCkpIHsKKyAgICAgICAgaWYgKGNvbnN0IFN0eWxlUHJvcGVy
dGllcyogcHJvcGVydGllcyA9IGlubmVyVGV4dC0+cHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUo
KSkgeworICAgICAgICAgICAgUmVmUHRyPENTU1ZhbHVlPiB2YWx1ZSA9IHByb3BlcnRpZXMtPmdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5KTsKKyAgICAgICAg
ICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4odmFsdWUuZ2V0KCkpKQorICAgICAgICAgICAg
ICAgIHRleHRCbG9ja1N0eWxlLnNldFVzZXJNb2RpZnkoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWU+KCp2YWx1ZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGlzRGlzYWJsZWRGb3Jt
Q29udHJvbCgpKQorICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRDb2xvcihkb2N1bWVudCgpLnBh
Z2UoKS0+dGhlbWUoKS5kaXNhYmxlZFRleHRDb2xvcih0ZXh0QmxvY2tTdHlsZS52aXNpdGVkRGVw
ZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlDb2xvciksIHBhcmVudFN0eWxlLnZpc2l0ZWREZXBlbmRl
bnRDb2xvcihDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikpKTsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgaWYgKHRleHRCbG9ja1N0eWxlLnRleHRTZWN1cml0eSgpICE9IFRTTk9ORSAmJiAhdGV4
dEJsb2NrU3R5bGUuaXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSB7CisgICAgICAgIC8vIFByZXNl
cnZlIHRoZSBhbGlnbm1lbnQgYnV0IGZvcmNlIHRoZSBkaXJlY3Rpb24gdG8gTFRSIHNvIHRoYXQg
dGhlIGxhc3QtdHlwZWQsIHVubWFza2VkIGNoYXJhY3RlcgorICAgICAgICAvLyAod2hpY2ggY2Fu
bm90IGhhdmUgUlRMIGRpcmVjdGlvbmFsaXR5KSB3aWxsIGFwcGVhciB0byB0aGUgcmlnaHQgb2Yg
dGhlIG1hc2tlZCBjaGFyYWN0ZXJzLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzcwMjQzNzU+LgorICAg
ICAgICAKKyAgICAgICAgc3dpdGNoICh0ZXh0QmxvY2tTdHlsZS50ZXh0QWxpZ24oKSkgeworICAg
ICAgICBjYXNlIFRBU1RBUlQ6CisgICAgICAgIGNhc2UgSlVTVElGWToKKyAgICAgICAgICAgIHRl
eHRCbG9ja1N0eWxlLnNldFRleHRBbGlnbihSSUdIVCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBUQUVORDoKKyAgICAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldFRleHRBbGln
bihMRUZUKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIExFRlQ6CisgICAgICAg
IGNhc2UgUklHSFQ6CisgICAgICAgIGNhc2UgQ0VOVEVSOgorICAgICAgICBjYXNlIFdFQktJVF9M
RUZUOgorICAgICAgICBjYXNlIFdFQktJVF9SSUdIVDoKKyAgICAgICAgY2FzZSBXRUJLSVRfQ0VO
VEVSOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICB0ZXh0QmxvY2tT
dHlsZS5zZXREaXJlY3Rpb24oTFRSKTsKKyAgICB9CisjZW5kaWYKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViY29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3Jt
Q29udHJvbEVsZW1lbnQuaAkocmV2aXNpb24gMTk3MTY0KQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyB2YWx1ZSgpIGNvbnN0ID0gMDsKIAog
ICAgIHZpcnR1YWwgVGV4dENvbnRyb2xJbm5lclRleHRFbGVtZW50KiBpbm5lclRleHRFbGVtZW50
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVJbm5lclRl
eHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSYpIGNvbnN0ID0gMDsKIAogICAgIHZvaWQgc2VsZWN0
aW9uQ2hhbmdlZChib29sIHNob3VsZEZpcmVTZWxlY3RFdmVudCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgYm9vbCBsYXN0Q2hhbmdlV2FzVXNlckVkaXQoKSBjb25zdDsKQEAgLTEyMCw2ICsxMjEsOCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICBTdHJpbmcgdmFsdWVXaXRoSGFyZExpbmVCcmVha3MoKSBjb25z
dDsKIAorICAgIHZvaWQgYWRqdXN0SW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUmIHBh
cmVudFN0eWxlLCBSZW5kZXJTdHlsZSYgdGV4dEJsb2NrU3R5bGUpIGNvbnN0OworCiBwcml2YXRl
OgogICAgIFRleHRGaWVsZFNlbGVjdGlvbkRpcmVjdGlvbiBjYWNoZWRTZWxlY3Rpb25EaXJlY3Rp
b24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RmllbGRTZWxlY3Rpb25EaXJlY3Rp
b24+KG1fY2FjaGVkU2VsZWN0aW9uRGlyZWN0aW9uKTsgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250cm9sSW5uZXJFbGVtZW50cy5jcHAJ
KHJldmlzaW9uIDE5NzE2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRDb250
cm9sSW5uZXJFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDEwICs3MywyMSBAQCBS
ZWY8VGV4dENvbnRyb2xJbm5lckVsZW1lbnQ+IFRleHRDb250cm9sCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgVGV4dENvbnRyb2xJbm5lckVsZW1lbnQoZG9jdW1lbnQpKTsKIH0KIAotUmVmUHRy
PFJlbmRlclN0eWxlPiBUZXh0Q29udHJvbElubmVyRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5k
ZXJlcihSZW5kZXJTdHlsZSYpCitSZWZQdHI8UmVuZGVyU3R5bGU+IFRleHRDb250cm9sSW5uZXJF
bGVtZW50OjpjdXN0b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJiwgUmVuZGVyU3R5bGUq
IHNoYWRvd0hvc3RTdHlsZSkKIHsKLSAgICBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUmIHBh
cmVudFJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lPigqc2hh
ZG93SG9zdCgpLT5yZW5kZXJlcigpKTsKLSAgICByZXR1cm4gcGFyZW50UmVuZGVyZXIuY3JlYXRl
SW5uZXJCbG9ja1N0eWxlKCZwYXJlbnRSZW5kZXJlci5zdHlsZSgpKTsKKyAgICBhdXRvIGlubmVy
Q29udGFpbmVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlKCk7CisgICAgaW5uZXJDb250YWlu
ZXJTdHlsZS5nZXQoKS5pbmhlcml0RnJvbShzaGFkb3dIb3N0U3R5bGUpOworCisgICAgaW5uZXJD
b250YWluZXJTdHlsZS5nZXQoKS5zZXRGbGV4R3JvdygxKTsKKyAgICAvLyBtaW4td2lkdGg6IDA7
IGlzIG5lZWRlZCBmb3IgY29ycmVjdCBzaHJpbmtpbmcuCisgICAgaW5uZXJDb250YWluZXJTdHls
ZS5nZXQoKS5zZXRNaW5XaWR0aChMZW5ndGgoMCwgRml4ZWQpKTsKKyAgICBpbm5lckNvbnRhaW5l
clN0eWxlLmdldCgpLnNldERpc3BsYXkoQkxPQ0spOworICAgIGlubmVyQ29udGFpbmVyU3R5bGUu
Z2V0KCkuc2V0RGlyZWN0aW9uKExUUik7CisKKyAgICAvLyBXZSBkb24ndCB3YW50IHRoZSBzaGFk
b3cgZG9tIHRvIGJlIGVkaXRhYmxlLCBzbyB3ZSBzZXQgdGhpcyBibG9jayB0byByZWFkLW9ubHkg
aW4gY2FzZSB0aGUgaW5wdXQgaXRzZWxmIGlzIGVkaXRhYmxlLgorICAgIGlubmVyQ29udGFpbmVy
U3R5bGUuZ2V0KCkuc2V0VXNlck1vZGlmeShSRUFEX09OTFkpOworCisgICAgcmV0dXJuIFdURk1v
dmUoaW5uZXJDb250YWluZXJTdHlsZSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtMTIxLDEwICsxMzIsOSBAQCBSZW5kZXJUZXh0Q29udHJvbElubmVyQmxvY2sqIFRl
eHRDb250cm9sCiAgICAgcmV0dXJuIGRvd25jYXN0PFJlbmRlclRleHRDb250cm9sSW5uZXJCbG9j
az4oSFRNTERpdkVsZW1lbnQ6OnJlbmRlcmVyKCkpOwogfQogCi1SZWZQdHI8UmVuZGVyU3R5bGU+
IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5k
ZXJTdHlsZSYpCitSZWZQdHI8UmVuZGVyU3R5bGU+IFRleHRDb250cm9sSW5uZXJUZXh0RWxlbWVu
dDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYsIFJlbmRlclN0eWxlKiBzaGFk
b3dIb3N0U3R5bGUpCiB7Ci0gICAgUmVuZGVyVGV4dENvbnRyb2wmIHBhcmVudFJlbmRlcmVyID0g
ZG93bmNhc3Q8UmVuZGVyVGV4dENvbnRyb2w+KCpzaGFkb3dIb3N0KCktPnJlbmRlcmVyKCkpOwot
ICAgIHJldHVybiBwYXJlbnRSZW5kZXJlci5jcmVhdGVJbm5lclRleHRTdHlsZSgmcGFyZW50UmVu
ZGVyZXIuc3R5bGUoKSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50Pigqc2hhZG93SG9zdCgpKS5jcmVhdGVJbm5lclRleHRTdHlsZSgqc2hhZG93SG9zdFN0
eWxlKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRz
LmgJKHJldmlzaW9uIDE5NzE2NCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1RleHRD
b250cm9sSW5uZXJFbGVtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1
YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFRleHRDb250cm9sSW5uZXJFbGVtZW50KERvY3VtZW50
Jik7Ci0gICAgdmlydHVhbCBSZWZQdHI8UmVuZGVyU3R5bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVy
ZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50
U3R5bGUsIFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5bGUpIG92ZXJyaWRlOwogCiBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gZmFsc2U7IH0KQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBU
ZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQoRG9jdW1lbnQmKTsKICAgICB2aXJ0dWFsIFJlbmRl
clB0cjxSZW5kZXJFbGVtZW50PiBjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVmPFJlbmRlclN0eWxl
PiYmLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFJl
ZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcihSZW5kZXJTdHlsZSYgcGFy
ZW50U3R5bGUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgUmVmUHRyPFJlbmRlclN0eWxlPiBjdXN0
b21TdHlsZUZvclJlbmRlcmVyKFJlbmRlclN0eWxlJiBwYXJlbnRTdHlsZSwgUmVuZGVyU3R5bGUq
IHNoYWRvd0hvc3RTdHlsZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1
c2FibGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc1RleHRDb250cm9sSW5uZXJUZXh0RWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IHRydWU7IH0KIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbC5jcHAJKHJldmlzaW9uIDE5NzE2NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgog
Ci0jaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oIgogI2luY2x1ZGUgIkhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIlJlbmRlclRleHQuaCIKQEAgLTY4LDU2ICs2NywxMSBAQCB2b2lkIFJlbmRlclRleHRD
b250cm9sOjpzdHlsZURpZENoYW5nZShTCiAgICAgICAgIC8vIFJlc2V0IHRoZW0gbm93IHRvIGF2
b2lkIGdldHRpbmcgYSBzcHVyaW91cyBsYXlvdXQgaGludC4KICAgICAgICAgaW5uZXJUZXh0UmVu
ZGVyZXItPnN0eWxlKCkuc2V0SGVpZ2h0KExlbmd0aCgpKTsKICAgICAgICAgaW5uZXJUZXh0UmVu
ZGVyZXItPnN0eWxlKCkuc2V0V2lkdGgoTGVuZ3RoKCkpOwotICAgICAgICBpbm5lclRleHRSZW5k
ZXJlci0+c2V0U3R5bGUoY3JlYXRlSW5uZXJUZXh0U3R5bGUoJnN0eWxlKCkpKTsKKyAgICAgICAg
aW5uZXJUZXh0UmVuZGVyZXItPnNldFN0eWxlKHRleHRGb3JtQ29udHJvbEVsZW1lbnQoKS5jcmVh
dGVJbm5lclRleHRTdHlsZShzdHlsZSgpKSk7CiAgICAgfQogICAgIHRleHRGb3JtQ29udHJvbEVs
ZW1lbnQoKS51cGRhdGVQbGFjZWhvbGRlclZpc2liaWxpdHkoKTsKIH0KIAotdm9pZCBSZW5kZXJU
ZXh0Q29udHJvbDo6YWRqdXN0SW5uZXJUZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0
U3R5bGUsIFJlbmRlclN0eWxlJiB0ZXh0QmxvY2tTdHlsZSkgY29uc3QKLXsKLSAgICAvLyBUaGUg
aW5uZXIgYmxvY2ssIGlmIHByZXNlbnQsIGFsd2F5cyBoYXMgaXRzIGRpcmVjdGlvbiBzZXQgdG8g
TFRSLAotICAgIC8vIHNvIHdlIG5lZWQgdG8gaW5oZXJpdCB0aGUgZGlyZWN0aW9uIGFuZCB1bmlj
b2RlLWJpZGkgc3R5bGUgZnJvbSB0aGUgZWxlbWVudC4KLSAgICB0ZXh0QmxvY2tTdHlsZS5zZXRE
aXJlY3Rpb24oc3R5bGUoKS5kaXJlY3Rpb24oKSk7Ci0gICAgdGV4dEJsb2NrU3R5bGUuc2V0VW5p
Y29kZUJpZGkoc3R5bGUoKS51bmljb2RlQmlkaSgpKTsKLQotICAgIEhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50JiBjb250cm9sID0gdGV4dEZvcm1Db250cm9sRWxlbWVudCgpOwotICAgIGlmIChI
VE1MRWxlbWVudCogaW5uZXJUZXh0ID0gY29udHJvbC5pbm5lclRleHRFbGVtZW50KCkpIHsKLSAg
ICAgICAgaWYgKGNvbnN0IFN0eWxlUHJvcGVydGllcyogcHJvcGVydGllcyA9IGlubmVyVGV4dC0+
cHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSkgewotICAgICAgICAgICAgUmVmUHRyPENTU1Zh
bHVlPiB2YWx1ZSA9IHByb3BlcnRpZXMtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlX
ZWJraXRVc2VyTW9kaWZ5KTsKLSAgICAgICAgICAgIGlmIChpczxDU1NQcmltaXRpdmVWYWx1ZT4o
dmFsdWUuZ2V0KCkpKQotICAgICAgICAgICAgICAgIHRleHRCbG9ja1N0eWxlLnNldFVzZXJNb2Rp
ZnkoZG93bmNhc3Q8Q1NTUHJpbWl0aXZlVmFsdWU+KCp2YWx1ZSkpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgaWYgKGNvbnRyb2wuaXNEaXNhYmxlZEZvcm1Db250cm9sKCkpCi0gICAgICAgIHRl
eHRCbG9ja1N0eWxlLnNldENvbG9yKHRoZW1lKCkuZGlzYWJsZWRUZXh0Q29sb3IodGV4dEJsb2Nr
U3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5Q29sb3IpLCBzdGFydFN0eWxl
LT52aXNpdGVkRGVwZW5kZW50Q29sb3IoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpKSk7Ci0j
aWYgUExBVEZPUk0oSU9TKQotICAgIGlmICh0ZXh0QmxvY2tTdHlsZS50ZXh0U2VjdXJpdHkoKSAh
PSBUU05PTkUgJiYgIXRleHRCbG9ja1N0eWxlLmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSkgewot
ICAgICAgICAvLyBQcmVzZXJ2ZSB0aGUgYWxpZ25tZW50IGJ1dCBmb3JjZSB0aGUgZGlyZWN0aW9u
IHRvIExUUiBzbyB0aGF0IHRoZSBsYXN0LXR5cGVkLCB1bm1hc2tlZCBjaGFyYWN0ZXIKLSAgICAg
ICAgLy8gKHdoaWNoIGNhbm5vdCBoYXZlIFJUTCBkaXJlY3Rpb25hbGl0eSkgd2lsbCBhcHBlYXIg
dG8gdGhlIHJpZ2h0IG9mIHRoZSBtYXNrZWQgY2hhcmFjdGVycy4gU2VlIDxyZGFyOi8vcHJvYmxl
bS83MDI0Mzc1Pi4KLSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAodGV4dEJsb2NrU3R5bGUudGV4
dEFsaWduKCkpIHsKLSAgICAgICAgY2FzZSBUQVNUQVJUOgotICAgICAgICBjYXNlIEpVU1RJRlk6
Ci0gICAgICAgICAgICB0ZXh0QmxvY2tTdHlsZS5zZXRUZXh0QWxpZ24oUklHSFQpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVEFFTkQ6Ci0gICAgICAgICAgICB0ZXh0QmxvY2tT
dHlsZS5zZXRUZXh0QWxpZ24oTEVGVCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBMRUZUOgotICAgICAgICBjYXNlIFJJR0hUOgotICAgICAgICBjYXNlIENFTlRFUjoKLSAgICAg
ICAgY2FzZSBXRUJLSVRfTEVGVDoKLSAgICAgICAgY2FzZSBXRUJLSVRfUklHSFQ6Ci0gICAgICAg
IGNhc2UgV0VCS0lUX0NFTlRFUjoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdGV4dEJsb2NrU3R5bGUuc2V0RGlyZWN0aW9uKExUUik7Ci0gICAgfQotI2VuZGlmCi19
Ci0KIGludCBSZW5kZXJUZXh0Q29udHJvbDo6dGV4dEJsb2NrTG9naWNhbEhlaWdodCgpIGNvbnN0
CiB7CiAgICAgcmV0dXJuIGxvZ2ljYWxIZWlnaHQoKSAtIGJvcmRlckFuZFBhZGRpbmdMb2dpY2Fs
SGVpZ2h0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRy
b2wuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuaAkocmV2aXNpb24gMTk3MTY0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgflJlbmRlclRleHRDb250cm9sKCk7CiAKICAgICBXRUJDT1JFX0VYUE9S
VCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dEZvcm1Db250cm9sRWxlbWVudCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgUmVmPFJlbmRlclN0eWxlPiBjcmVhdGVJbm5lclRleHRTdHlsZShj
b25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3QgPSAwOwogCiAjaWYgUExBVEZPUk0o
SU9TKQogICAgIGJvb2wgY2FuU2Nyb2xsKCkgY29uc3Q7CkBAIC01MSw3ICs1MCw2IEBAIHByb3Rl
Y3RlZDoKICAgICBUZXh0Q29udHJvbElubmVyVGV4dEVsZW1lbnQqIGlubmVyVGV4dEVsZW1lbnQo
KSBjb25zdDsKIAogICAgIGludCBzY3JvbGxiYXJUaGlja25lc3MoKSBjb25zdDsKLSAgICB2b2lk
IGFkanVzdElubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlLCBSZW5k
ZXJTdHlsZSYgdGV4dEJsb2NrU3R5bGUpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHN0eWxl
RGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKSBv
dmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250
cm9sTXVsdGlMaW5lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCShyZXZpc2lvbiAxOTcxNjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NywyMiArODcsNiBAQCBpbnQgUmVuZGVyVGV4dENvbnRyb2xNdWx0aUxp
bmU6OmJhc2VsaW5lCiAgICAgcmV0dXJuIFJlbmRlckJveDo6YmFzZWxpbmVQb3NpdGlvbihiYXNl
bGluZVR5cGUsIGZpcnN0TGluZSwgZGlyZWN0aW9uLCBsaW5lUG9zaXRpb25Nb2RlKTsKIH0KIAot
UmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZTo6Y3JlYXRlSW5uZXJU
ZXh0U3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIHN0YXJ0U3R5bGUpIGNvbnN0Ci17Ci0gICAgYXV0
byB0ZXh0QmxvY2tTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGUoKTsKLSAgICB0ZXh0QmxvY2tT
dHlsZS5nZXQoKS5pbmhlcml0RnJvbShzdGFydFN0eWxlKTsKLSAgICBhZGp1c3RJbm5lclRleHRT
dHlsZShzdGFydFN0eWxlLCB0ZXh0QmxvY2tTdHlsZS5nZXQoKSk7Ci0gICAgdGV4dEJsb2NrU3R5
bGUuZ2V0KCkuc2V0RGlzcGxheShCTE9DSyk7Ci0KLSNpZiBQTEFURk9STShJT1MpCi0gICAgLy8g
V2UncmUgYWRkaW5nIHRocmVlIGV4dHJhIHBpeGVscyBvZiBwYWRkaW5nIHRvIGxpbmUgdGV4dGFy
ZWFzIHVwIHdpdGggdGV4dCBmaWVsZHMuICAKLSAgICB0ZXh0QmxvY2tTdHlsZS5nZXQoKS5zZXRQ
YWRkaW5nTGVmdChMZW5ndGgoMywgRml4ZWQpKTsKLSAgICB0ZXh0QmxvY2tTdHlsZS5nZXQoKS5z
ZXRQYWRkaW5nUmlnaHQoTGVuZ3RoKDMsIEZpeGVkKSk7Ci0jZW5kaWYKLQotICAgIHJldHVybiB0
ZXh0QmxvY2tTdHlsZTsKLX0KLQogUmVuZGVyT2JqZWN0KiBSZW5kZXJUZXh0Q29udHJvbE11bHRp
TGluZTo6bGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKQog
ewogICAgIFJlbmRlck9iamVjdCogcGxhY2Vob2xkZXJSZW5kZXJlciA9IFJlbmRlclRleHRDb250
cm9sOjpsYXlvdXRTcGVjaWFsRXhjbHVkZWRDaGlsZChyZWxheW91dENoaWxkcmVuKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11bHRpTGluZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbE11
bHRpTGluZS5oCShyZXZpc2lvbiAxOTcxNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2xNdWx0aUxpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcs
NiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgTGF5b3V0VW5pdCBjb21wdXRlQ29udHJvbExvZ2lj
YWxIZWlnaHQoTGF5b3V0VW5pdCBsaW5lSGVpZ2h0LCBMYXlvdXRVbml0IG5vbkNvbnRlbnRIZWln
aHQpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgaW50IGJhc2VsaW5lUG9zaXRpb24oRm9u
dEJhc2VsaW5lLCBib29sIGZpcnN0TGluZSwgTGluZURpcmVjdGlvbk1vZGUsIExpbmVQb3NpdGlv
bk1vZGUgPSBQb3NpdGlvbk9uQ29udGFpbmluZ0xpbmUpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAg
dmlydHVhbCBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRl
clN0eWxlKiBzdGFydFN0eWxlKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogbGF5b3V0U3BlY2lhbEV4Y2x1ZGVkQ2hpbGQoYm9vbCByZWxheW91dENoaWxkcmVuKSBv
dmVycmlkZTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCShyZXZpc2lvbiAxOTcxNjQpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsNiBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OlJlbmRlclRleHRDb250cm9sU2lu
Z2xlTGluZShIVE1MSW5wdXRFbGVtZW50JiBlbGVtZW50LCBSZWY8UmVuZGVyU3R5bGU+JiYgc3R5
bGUpCiAgICAgOiBSZW5kZXJUZXh0Q29udHJvbChlbGVtZW50LCBXVEZNb3ZlKHN0eWxlKSkKLSAg
ICAsIG1fZGVzaXJlZElubmVyVGV4dExvZ2ljYWxIZWlnaHQoLTEpCiB7CiB9CiAKQEAgLTEyOSw4
ICsxMjgsNiBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bGF5b3V0CiAgICAg
ICAgIGlmIChkZXNpcmVkTG9naWNhbEhlaWdodCAhPSBpbm5lclRleHRSZW5kZXJlci0+bG9naWNh
bEhlaWdodCgpKQogICAgICAgICAgICAgc2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKIAot
ICAgICAgICBtX2Rlc2lyZWRJbm5lclRleHRMb2dpY2FsSGVpZ2h0ID0gZGVzaXJlZExvZ2ljYWxI
ZWlnaHQ7Ci0KICAgICAgICAgaW5uZXJUZXh0UmVuZGVyZXItPnN0eWxlKCkuc2V0TG9naWNhbEhl
aWdodChMZW5ndGgoZGVzaXJlZExvZ2ljYWxIZWlnaHQsIEZpeGVkKSk7CiAgICAgICAgIGlubmVy
VGV4dFJlbmRlcmVyLT5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOwogICAgICAgICBpZiAo
aW5uZXJCbG9ja1JlbmRlcmVyKSB7CkBAIC0yMzQsNyArMjMxLDYgQEAgYm9vbCBSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmU6Om5vZGVBdAogCiB2b2lkIFJlbmRlclRleHRDb250cm9sU2luZ2xl
TGluZTo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdHlsZSkKIHsKLSAgICBtX2Rlc2lyZWRJbm5lclRleHRMb2dpY2FsSGVpZ2h0ID0g
LTE7CiAgICAgUmVuZGVyVGV4dENvbnRyb2w6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxl
KTsKIAogICAgIC8vIFdlIG1heSBoYXZlIHNldCB0aGUgd2lkdGggYW5kIHRoZSBoZWlnaHQgaW4g
dGhlIG9sZCBzdHlsZSBpbiBsYXlvdXQoKS4KQEAgLTMyNSw0NiArMzIxLDYgQEAgTGF5b3V0VW5p
dCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OgogICAgIHJldHVybiBsaW5lSGVpZ2h0ICsg
bm9uQ29udGVudEhlaWdodDsKIH0KIAotUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmU6OmNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFy
dFN0eWxlKSBjb25zdAotewotICAgIGF1dG8gdGV4dEJsb2NrU3R5bGUgPSBSZW5kZXJTdHlsZTo6
Y3JlYXRlKCk7Ci0gICAgdGV4dEJsb2NrU3R5bGUuZ2V0KCkuaW5oZXJpdEZyb20oc3RhcnRTdHls
ZSk7Ci0gICAgYWRqdXN0SW5uZXJUZXh0U3R5bGUoc3RhcnRTdHlsZSwgdGV4dEJsb2NrU3R5bGUu
Z2V0KCkpOwotCi0gICAgdGV4dEJsb2NrU3R5bGUuZ2V0KCkuc2V0V2hpdGVTcGFjZShQUkUpOwot
ICAgIHRleHRCbG9ja1N0eWxlLmdldCgpLnNldE92ZXJmbG93V3JhcChOb3JtYWxPdmVyZmxvd1dy
YXApOwotICAgIHRleHRCbG9ja1N0eWxlLmdldCgpLnNldE92ZXJmbG93WChPSElEREVOKTsKLSAg
ICB0ZXh0QmxvY2tTdHlsZS5nZXQoKS5zZXRPdmVyZmxvd1koT0hJRERFTik7Ci0gICAgdGV4dEJs
b2NrU3R5bGUuZ2V0KCkuc2V0VGV4dE92ZXJmbG93KHRleHRTaG91bGRCZVRydW5jYXRlZCgpID8g
VGV4dE92ZXJmbG93RWxsaXBzaXMgOiBUZXh0T3ZlcmZsb3dDbGlwKTsKLQotICAgIGlmIChtX2Rl
c2lyZWRJbm5lclRleHRMb2dpY2FsSGVpZ2h0ID49IDApCi0gICAgICAgIHRleHRCbG9ja1N0eWxl
LmdldCgpLnNldExvZ2ljYWxIZWlnaHQoTGVuZ3RoKG1fZGVzaXJlZElubmVyVGV4dExvZ2ljYWxI
ZWlnaHQsIEZpeGVkKSk7Ci0gICAgLy8gRG8gbm90IGFsbG93IGxpbmUtaGVpZ2h0IHRvIGJlIHNt
YWxsZXIgdGhhbiBvdXIgZGVmYXVsdC4KLSAgICBpZiAodGV4dEJsb2NrU3R5bGUuZ2V0KCkuZm9u
dE1ldHJpY3MoKS5saW5lU3BhY2luZygpID4gbGluZUhlaWdodCh0cnVlLCBIb3Jpem9udGFsTGlu
ZSwgUG9zaXRpb25PZkludGVyaW9yTGluZUJveGVzKSkKLSAgICAgICAgdGV4dEJsb2NrU3R5bGUu
Z2V0KCkuc2V0TGluZUhlaWdodChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVIZWlnaHQoKSk7Ci0K
LSAgICB0ZXh0QmxvY2tTdHlsZS5nZXQoKS5zZXREaXNwbGF5KEJMT0NLKTsKLQotICAgIHJldHVy
biB0ZXh0QmxvY2tTdHlsZTsKLX0KLQotUmVmPFJlbmRlclN0eWxlPiBSZW5kZXJUZXh0Q29udHJv
bFNpbmdsZUxpbmU6OmNyZWF0ZUlubmVyQmxvY2tTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3Rh
cnRTdHlsZSkgY29uc3QKLXsKLSAgICBhdXRvIGlubmVyQmxvY2tTdHlsZSA9IFJlbmRlclN0eWxl
OjpjcmVhdGUoKTsKLSAgICBpbm5lckJsb2NrU3R5bGUuZ2V0KCkuaW5oZXJpdEZyb20oc3RhcnRT
dHlsZSk7Ci0KLSAgICBpbm5lckJsb2NrU3R5bGUuZ2V0KCkuc2V0RmxleEdyb3coMSk7Ci0gICAg
Ly8gbWluLXdpZHRoOiAwOyBpcyBuZWVkZWQgZm9yIGNvcnJlY3Qgc2hyaW5raW5nLgotICAgIGlu
bmVyQmxvY2tTdHlsZS5nZXQoKS5zZXRNaW5XaWR0aChMZW5ndGgoMCwgRml4ZWQpKTsKLSAgICBp
bm5lckJsb2NrU3R5bGUuZ2V0KCkuc2V0RGlzcGxheShCTE9DSyk7Ci0gICAgaW5uZXJCbG9ja1N0
eWxlLmdldCgpLnNldERpcmVjdGlvbihMVFIpOwotCi0gICAgLy8gV2UgZG9uJ3Qgd2FudCB0aGUg
c2hhZG93IGRvbSB0byBiZSBlZGl0YWJsZSwgc28gd2Ugc2V0IHRoaXMgYmxvY2sgdG8gcmVhZC1v
bmx5IGluIGNhc2UgdGhlIGlucHV0IGl0c2VsZiBpcyBlZGl0YWJsZS4KLSAgICBpbm5lckJsb2Nr
U3R5bGUuZ2V0KCkuc2V0VXNlck1vZGlmeShSRUFEX09OTFkpOwotCi0gICAgcmV0dXJuIGlubmVy
QmxvY2tTdHlsZTsKLX0KLQogYm9vbCBSZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OnRleHRT
aG91bGRCZVRydW5jYXRlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGRvY3VtZW50KCkuZm9jdXNl
ZEVsZW1lbnQoKSAhPSAmaW5wdXRFbGVtZW50KCkgJiYgc3R5bGUoKS50ZXh0T3ZlcmZsb3coKSA9
PSBUZXh0T3ZlcmZsb3dFbGxpcHNpczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmgJKHJldmlzaW9uIDE5NzE2
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxp
bmUuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsOSArMzQsNiBAQCBjbGFzcyBSZW5kZXJUZXh0Q29u
dHJvbFNpbmdsZUxpbmUgOiBwdWJsCiBwdWJsaWM6CiAgICAgUmVuZGVyVGV4dENvbnRyb2xTaW5n
bGVMaW5lKEhUTUxJbnB1dEVsZW1lbnQmLCBSZWY8UmVuZGVyU3R5bGU+JiYpOwogICAgIHZpcnR1
YWwgflJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZSgpOwotICAgIC8vIEZJWE1FOiBNb3ZlIGNy
ZWF0ZSpTdHlsZSgpIHRvIHRoZWlyIGNsYXNzZXMuCi0gICAgdmlydHVhbCBSZWY8UmVuZGVyU3R5
bGU+IGNyZWF0ZUlubmVyVGV4dFN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiBzdGFydFN0eWxlKSBj
b25zdCBvdmVycmlkZTsKLSAgICBSZWY8UmVuZGVyU3R5bGU+IGNyZWF0ZUlubmVyQmxvY2tTdHls
ZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAg
ICB2aXJ0dWFsIHZvaWQgY2VudGVyQ29udGFpbmVySWZOZWVkZWQoUmVuZGVyQm94KikgY29uc3Qg
eyB9CkBAIC03OSw4ICs3Niw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCB0ZXh0U2hvdWxkQmVUcnVu
Y2F0ZWQoKSBjb25zdDsKIAogICAgIEhUTUxFbGVtZW50KiBpbm5lclNwaW5CdXR0b25FbGVtZW50
KCkgY29uc3Q7Ci0KLSAgICBMYXlvdXRVbml0IG1fZGVzaXJlZElubmVyVGV4dExvZ2ljYWxIZWln
aHQ7CiB9OwogCiBpbmxpbmUgSFRNTEVsZW1lbnQqIFJlbmRlclRleHRDb250cm9sU2luZ2xlTGlu
ZTo6Y29udGFpbmVyRWxlbWVudCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVRyZWVSZXNvbHZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVUcmVlUmVzb2x2ZXIuY3BwCShyZXZpc2lvbiAxOTcxNjQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw3ICsx
NzksMTAgQEAgUmVmPFJlbmRlclN0eWxlPiBUcmVlUmVzb2x2ZXI6OnN0eWxlRm9yRQogICAgIH0K
IAogICAgIGlmIChlbGVtZW50Lmhhc0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKSB7Ci0g
ICAgICAgIGlmIChSZWZQdHI8UmVuZGVyU3R5bGU+IHN0eWxlID0gZWxlbWVudC5jdXN0b21TdHls
ZUZvclJlbmRlcmVyKGluaGVyaXRlZFN0eWxlKSkKKyAgICAgICAgUmVuZGVyU3R5bGUqIHNoYWRv
d0hvc3RTdHlsZSA9IG51bGxwdHI7CisgICAgICAgIGlmIChhdXRvKiBzaGFkb3dSb290ID0gc2Nv
cGUoKS5zaGFkb3dSb290KQorICAgICAgICAgICAgc2hhZG93SG9zdFN0eWxlID0gc2hhZG93Um9v
dC0+aG9zdCgpLT5yZW5kZXJTdHlsZSgpOworICAgICAgICBpZiAoUmVmUHRyPFJlbmRlclN0eWxl
PiBzdHlsZSA9IGVsZW1lbnQuY3VzdG9tU3R5bGVGb3JSZW5kZXJlcihpbmhlcml0ZWRTdHlsZSwg
c2hhZG93SG9zdFN0eWxlKSkKICAgICAgICAgICAgIHJldHVybiBzdHlsZS5yZWxlYXNlTm9uTnVs
bCgpOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAkocmV2aXNpb24g
MTk3MTY0KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03ODksNyArNzg5LDcgQEAgdm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3Rl
bUxhbmd1YQogICAgIGNvbnRleHRFbGVtZW50LT5zeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCk7
CiB9CiAKLVJlZlB0cjxSZW5kZXJTdHlsZT4gU1ZHRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5k
ZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUpCitSZWZQdHI8UmVuZGVyU3R5bGU+IFNWR0Vs
ZW1lbnQ6OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlLCBS
ZW5kZXJTdHlsZSopCiB7CiAgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgaW4gYSA8dXNlPiB0cmVl
IHdlIGdldCB0aGUgc3R5bGUgZnJvbSB0aGUgZGVmaW5pdGlvbiB0cmVlLgogICAgIGlmIChhdXRv
KiBzdHlsZUVsZW1lbnQgPSB0aGlzLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpKQpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5oCShyZXZpc2lvbiAxOTcxNjQpCisrKyBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNyArMTE5LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc3luY2hyb25pemVBbmltYXRlZFNWR0F0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJikgY29uc3Q7CiAgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVBbGxBbmltYXRlZFNW
R0F0dHJpYnV0ZShTVkdFbGVtZW50Kik7CiAgCi0gICAgdmlydHVhbCBSZWZQdHI8UmVuZGVyU3R5
bGU+IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoUmVuZGVyU3R5bGUmIHBhcmVudFN0eWxlKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIFJlZlB0cjxSZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5k
ZXJlcihSZW5kZXJTdHlsZSYgcGFyZW50U3R5bGUsIFJlbmRlclN0eWxlKiBzaGFkb3dIb3N0U3R5
bGUpIG92ZXJyaWRlOwogCiAgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1
cmVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsKICAgICBzdGF0aWMgdm9pZCBzeW5jaHJv
bml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>