<?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>219169</bug_id>
          
          <creation_ts>2020-11-19 11:15:23 -0800</creation_ts>
          <short_desc>Use final in generated callback code</short_desc>
          <delta_ts>2020-11-20 08:41:19 -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>Bindings</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Don Olmstead">don.olmstead</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1709189</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-11-19 11:15:23 -0800</bug_when>
    <thetext>Splitting of https://bugs.webkit.org/show_bug.cgi?id=219098 to change just the callback code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709222</commentid>
    <comment_count>1</comment_count>
      <attachid>414609</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-11-19 12:29:44 -0800</bug_when>
    <thetext>Created attachment 414609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709242</commentid>
    <comment_count>2</comment_count>
      <attachid>414609</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-11-19 12:59:37 -0800</bug_when>
    <thetext>Comment on attachment 414609
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        Generated callbacks descend from ContextDestructionObserver and are final. The 
&gt; +        scriptExecutionContext method is not virtual so adding override errors. Remove the virtual
&gt; +        for that case and mark the destructor as final.

When you put final on a destructor that seems to imply that the entire class could be marked final. Yet I don’t see that change here.

Thrilled that we discovered that scriptExecutionContext was unnecessarily virtual. And it’s safe if the class is indeed final. Otherwise, I worry that some derived class might want to override.

Do you know what code uses the scriptExecutionContext function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709476</commentid>
    <comment_count>3</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-11-20 07:37:22 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #2)
&gt; Comment on attachment 414609 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=414609&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        Generated callbacks descend from ContextDestructionObserver and are final. The 
&gt; &gt; +        scriptExecutionContext method is not virtual so adding override errors. Remove the virtual
&gt; &gt; +        for that case and mark the destructor as final.
&gt; 
&gt; When you put final on a destructor that seems to imply that the entire class
&gt; could be marked final. Yet I don’t see that change here.

The code originally had the generated classes marked as final.
 
&gt; Thrilled that we discovered that scriptExecutionContext was unnecessarily
&gt; virtual. And it’s safe if the class is indeed final. Otherwise, I worry that
&gt; some derived class might want to override.
&gt; 
&gt; Do you know what code uses the scriptExecutionContext function?

I just happened upon this patch because I was running clang-tidy&apos;s modernizer for using override over the code and it found a bunch of cases in the generated bindings.

I did look in the derived sources to see what classes are actually generated. There are 33 in total. Callback classes derive from ActiveDOMCallback which descends from ContextDestructionObserver where scriptExecutionContext is defined in this hierarchy. The only classes that don&apos;t are the Storage ones defined in ENABLE(QUOTA) but those seem like errors since they don&apos;t descend from ContextDestructionObserver.

In a subsequent patch we might want to look at removing this generated method but we should double check everything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709481</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-11-20 07:46:12 -0800</bug_when>
    <thetext>Committed r270115: &lt;https://trac.webkit.org/changeset/270115&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 414609.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709482</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-20 07:47:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/71627628&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709497</commentid>
    <comment_count>6</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2020-11-20 08:41:19 -0800</bug_when>
    <thetext>(In reply to Don Olmstead from comment #3)
&gt; (In reply to Darin Adler from comment #2)
&gt; &gt; Thrilled that we discovered that scriptExecutionContext was unnecessarily
&gt; &gt; virtual. And it’s safe if the class is indeed final. Otherwise, I worry that
&gt; &gt; some derived class might want to override.
&gt; &gt; 
&gt; &gt; Do you know what code uses the scriptExecutionContext function?
&gt; 
&gt; I just happened upon this patch because I was running clang-tidy&apos;s
&gt; modernizer for using override over the code and it found a bunch of cases in
&gt; the generated bindings.
&gt; 
&gt; I did look in the derived sources to see what classes are actually
&gt; generated. There are 33 in total. Callback classes derive from
&gt; ActiveDOMCallback which descends from ContextDestructionObserver where
&gt; scriptExecutionContext is defined in this hierarchy. The only classes that
&gt; don&apos;t are the Storage ones defined in ENABLE(QUOTA) but those seem like
&gt; errors since they don&apos;t descend from ContextDestructionObserver.
&gt; 
&gt; In a subsequent patch we might want to look at removing this generated
&gt; method but we should double check everything.

The quota callbacks being wrong brought me to https://bugs.webkit.org/show_bug.cgi?id=219206 which removes the quota module.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>414609</attachid>
            <date>2020-11-19 12:29:44 -0800</date>
            <delta_ts>2020-11-20 07:46:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219169.diff</filename>
            <type>text/plain</type>
            <size>7731</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxMWI1MjYwNGQxZmMuLmNmMjFjYmYyNzZjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI0IEBACisyMDIwLTExLTE5ICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29u
eS5jb20+CisKKyAgICAgICAgVXNlIGZpbmFsIGluIGdlbmVyYXRlZCBjYWxsYmFjayBjb2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTkxNjkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZW5lcmF0ZWQg
Y2FsbGJhY2tzIGRlc2NlbmQgZnJvbSBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciBhbmQgYXJl
IGZpbmFsLiBUaGUgCisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgbWV0aG9kIGlzIG5v
dCB2aXJ0dWFsIHNvIGFkZGluZyBvdmVycmlkZSBlcnJvcnMuIFJlbW92ZSB0aGUgdmlydHVhbAor
ICAgICAgICBmb3IgdGhhdCBjYXNlIGFuZCBtYXJrIHRoZSBkZXN0cnVjdG9yIGFzIGZpbmFsLgor
CisgICAgICAgIFJlZ2VuZXJhdGVkIGJpbmRpbmdzIHRocm91Z2ggcnVuLWJpbmRpbmdzLXRlc3Rz
LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uaDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlv
blJldGhyb3cuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2Fs
bGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0Lmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMuaDoKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rp
b24uaDoKKwogMjAyMC0xMS0xOSAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29t
PgogCiAgICAgICAgIFVzZSBmaW5hbCBpbiBnZW5lcmF0ZWQgd3JhcHBlciBvd25lciBjb2RlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
CmluZGV4IGJlNDFkM2UzNDBiZi4uNzk4NzQ2NmJlMDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNjQ3Nyw5ICs2NDc3
LDkgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tIZWFkZXJDb250ZW50CiAgICAgcHVzaChAJGNvbnRl
bnRSZWYsICIgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3ICR7Y2xhc3NOYW1lfShjYWxsYmFj
aywgZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICB9XG5c
biIpOwogCi0gICAgcHVzaChAJGNvbnRlbnRSZWYsICIgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfVxuXG4iKTsK
KyAgICBwdXNoKEAkY29udGVudFJlZiwgIiAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfVxuXG4iKTsKIAotICAgIHB1c2goQCRj
b250ZW50UmVmLCAiICAgIHZpcnR1YWwgfiRjbGFzc05hbWUoKTtcbiIpOworICAgIHB1c2goQCRj
b250ZW50UmVmLCAiICAgIH4kY2xhc3NOYW1lKCkgZmluYWw7XG4iKTsKIAogICAgIHB1c2goQCRj
b250ZW50UmVmLCAiICAgICR7Y2FsbGJhY2tEYXRhVHlwZX0qIGNhbGxiYWNrRGF0YSgpIHsgcmV0
dXJuIG1fZGF0YTsgfVxuIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5oCmluZGV4
IGVjOTc1MGZhYjNiZi4uMzhjYTA3M2U2ZTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uLmgKQEAgLTM0LDkgKzM0LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9i
c2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAotICAgIHZpcnR1YWwgfkpTVGVz
dENhbGxiYWNrRnVuY3Rpb24oKTsKKyAgICB+SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbigpIGZpbmFs
OwogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBjYWxsYmFja0RhdGEoKSB7IHJldHVybiBtX2Rh
dGE7IH0KIAogICAgIC8vIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93LmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvblJldGhyb3cuaAppbmRleCBlN2FmM2IyNzY1YWYuLjNmM2ZkNDk0MzQzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNr
RnVuY3Rpb25SZXRocm93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93LmgKQEAgLTM0LDkgKzM0LDkgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0Z1bmN0
aW9uUmV0aHJvdyhjYWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CiAgICAgfQogCi0gICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qg
eyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOyB9CiAKLSAgICB2aXJ0dWFsIH5KU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
UmV0aHJvdygpOworICAgIH5KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uUmV0aHJvdygpIGZpbmFsOwog
ICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBjYWxsYmFja0RhdGEoKSB7IHJldHVybiBtX2RhdGE7
IH0KIAogICAgIC8vIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNr
RnVuY3Rpb25XaXRoVGhpc09iamVjdC5oCmluZGV4IGFiNmQ5Zjg2MjNiOS4uMzkyODdjZjk5Mjg0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09i
amVjdC5oCkBAIC0zNCw5ICszNCw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0KGNhbGxiYWNrLCBnbG9i
YWxPYmplY3QpKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRl
eHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAotICAg
IHZpcnR1YWwgfkpTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVGhpc09iamVjdCgpOworICAgIH5K
U1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QoKSBmaW5hbDsKICAgICBKU0NhbGxi
YWNrRGF0YVN0cm9uZyogY2FsbGJhY2tEYXRhKCkgeyByZXR1cm4gbV9kYXRhOyB9CiAKICAgICAv
LyBGdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhU
eXBlZGVmcy5oCmluZGV4IGQ4YTRlODhmMjY0YS4uMDM4ZTFlZjQyNzFjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5j
dGlvbldpdGhUeXBlZGVmcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmgKQEAgLTM0LDkgKzM0
LDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFj
a0Z1bmN0aW9uV2l0aFR5cGVkZWZzKGNhbGxiYWNrLCBnbG9iYWxPYmplY3QpKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSBjb25zdCB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOyB9CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIAotICAgIHZpcnR1YWwgfkpTVGVzdENhbGxi
YWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMoKTsKKyAgICB+SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldp
dGhUeXBlZGVmcygpIGZpbmFsOwogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25nKiBjYWxsYmFja0Rh
dGEoKSB7IHJldHVybiBtX2RhdGE7IH0KIAogICAgIC8vIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50
ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2UuaAppbmRleCA0MGM0YWIzMjUyMDYuLmE3ODU4ZjkxMGYzMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENh
bGxiYWNrSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmgKQEAgLTM4LDkgKzM4LDkgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZShj
YWxsYmFjaywgZ2xvYmFsT2JqZWN0KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQorICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7
IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOyB9CiAKLSAgICB2aXJ0dWFsIH5KU1Rlc3RDYWxsYmFja0ludGVyZmFjZSgpOworICAgIH5K
U1Rlc3RDYWxsYmFja0ludGVyZmFjZSgpIGZpbmFsOwogICAgIEpTQ2FsbGJhY2tEYXRhU3Ryb25n
KiBjYWxsYmFja0RhdGEoKSB7IHJldHVybiBtX2RhdGE7IH0KICAgICBzdGF0aWMgSlNDOjpKU1Zh
bHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uLmgKaW5kZXggYzBhZjk1ODdl
MTU0Li4xMTQ1YTVmNDA5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RWb2lkQ2FsbGJhY2tGdW5jdGlv
bi5oCkBAIC0zNiw5ICszNiw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oY2FsbGJhY2ssIGdsb2JhbE9iamVjdCkpOwog
ICAgIH0KIAotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCi0gICAgdmlydHVhbCB+SlNU
ZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24oKTsKKyAgICB+SlNUZXN0Vm9pZENhbGxiYWNrRnVuY3Rp
b24oKSBmaW5hbDsKICAgICBKU0NhbGxiYWNrRGF0YVN0cm9uZyogY2FsbGJhY2tEYXRhKCkgeyBy
ZXR1cm4gbV9kYXRhOyB9CiAKICAgICAvLyBGdW5jdGlvbnMK
</data>

          </attachment>
      

    </bug>

</bugzilla>