<?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>156778</bug_id>
          
          <creation_ts>2016-04-19 19:27:30 -0700</creation_ts>
          <short_desc>WebIDL: [StrictTypeChecking] should be the default behavior</short_desc>
          <delta_ts>2016-05-08 19:13:00 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=156961</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>157321</dependson>
    
    <dependson>157467</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>darin</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1185297</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-19 19:27:30 -0700</bug_when>
    <thetext>We currently have to explicitly use [StrictTypeChecking] in order to get standard behavior. Of course, every one forget. We need to flip it so [StrictTypeChecking] becomes the default and we can use a [LegacyTreatWrongTypeAsNull] attribute for existing IDL code.

Relevant spec:
http://heycam.github.io/webidl/#es-interface
http://heycam.github.io/webidl/#es-nullable-type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185312</commentid>
    <comment_count>1</comment_count>
      <attachid>276796</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-19 20:18:52 -0700</bug_when>
    <thetext>Created attachment 276796
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1185314</commentid>
    <comment_count>2</comment_count>
      <attachid>276796</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-19 20:21:39 -0700</bug_when>
    <thetext>Comment on attachment 276796
WIP patch

Wrong bug</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276796</attachid>
            <date>2016-04-19 20:18:52 -0700</date>
            <delta_ts>2016-04-19 20:21:39 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>WebAudio_wip.patch</filename>
            <type>text/plain</type>
            <size>28959</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0Rl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVj
b2Rlci5jcHAKaW5kZXggNmQ3MjgxZi4uMjkyZjA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5jcHAKQEAgLTUxLDE0ICs1
MSwxMSBAQCBBc3luY0F1ZGlvRGVjb2Rlcjo6fkFzeW5jQXVkaW9EZWNvZGVyKCkKICAgICBtX3Ro
cmVhZElEID0gMDsKIH0KIAotdm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6ZGVjb2RlQXN5bmMoQXJy
YXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1
ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjaykKK3ZvaWQgQXN5bmNBdWRpb0RlY29kZXI6OmRlY29kZUFzeW5j
KFJlZjxBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIGZsb2F0IHNhbXBsZVJhdGUsIFJlZlB0cjxB
dWRpb0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywgUmVmUHRyPEF1ZGlvQnVmZmVy
Q2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIEFTU0VSVChhdWRpb0RhdGEpOwotICAgIGlmICghYXVkaW9EYXRhKQotICAgICAgICBy
ZXR1cm47CiAKLSAgICBhdXRvIGRlY29kaW5nVGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8RGVjb2Rp
bmdUYXNrPihhdWRpb0RhdGEsIHNhbXBsZVJhdGUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjayk7CisgICAgYXV0byBkZWNvZGluZ1Rhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPERlY29kaW5n
VGFzaz4oV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlLCBXVEZNb3ZlKHN1Y2Nlc3NDYWxs
YmFjayksIFdURk1vdmUoZXJyb3JDYWxsYmFjaykpOwogICAgIG1fcXVldWUuYXBwZW5kKFdURk1v
dmUoZGVjb2RpbmdUYXNrKSk7IC8vIG5vdGUgdGhhdCBvd25lcnNoaXAgb2YgdGhlIHRhc2sgaXMg
ZWZmZWN0aXZlbHkgdGFrZW4gYnkgdGhlIHF1ZXVlLgogfQogCkBAIC04NywyMCArODQsMTYgQEAg
dm9pZCBBc3luY0F1ZGlvRGVjb2Rlcjo6cnVuTG9vcCgpCiAgICAgfQogfQogCi1Bc3luY0F1ZGlv
RGVjb2Rlcjo6RGVjb2RpbmdUYXNrOjpEZWNvZGluZ1Rhc2soQXJyYXlCdWZmZXIqIGF1ZGlvRGF0
YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aykKLSAgICA6IG1fYXVkaW9EYXRhKGF1ZGlvRGF0YSkKK0FzeW5jQXVkaW9EZWNvZGVyOjpEZWNv
ZGluZ1Rhc2s6OkRlY29kaW5nVGFzayhSZWY8QXJyYXlCdWZmZXI+JiYgYXVkaW9EYXRhLCBmbG9h
dCBzYW1wbGVSYXRlLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBzdWNjZXNzQ2FsbGJh
Y2ssIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIGVycm9yQ2FsbGJhY2spCisgICAgOiBt
X2F1ZGlvRGF0YShXVEZNb3ZlKGF1ZGlvRGF0YSkpCiAgICAgLCBtX3NhbXBsZVJhdGUoc2FtcGxl
UmF0ZSkKLSAgICAsIG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKLSAgICAsIG1f
ZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQorICAgICwgbV9zdWNjZXNzQ2FsbGJhY2soV1RG
TW92ZShzdWNjZXNzQ2FsbGJhY2spKQorICAgICwgbV9lcnJvckNhbGxiYWNrKFdURk1vdmUoZXJy
b3JDYWxsYmFjaykpCiB7CiB9CiAKIHZvaWQgQXN5bmNBdWRpb0RlY29kZXI6OkRlY29kaW5nVGFz
azo6ZGVjb2RlKCkKIHsKLSAgICBBU1NFUlQobV9hdWRpb0RhdGEuZ2V0KCkpOwotICAgIGlmICgh
bV9hdWRpb0RhdGEuZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIC8vIERvIHRoZSBhY3R1
YWwgZGVjb2RpbmcgYW5kIGludm9rZSB0aGUgY2FsbGJhY2suCiAgICAgbV9hdWRpb0J1ZmZlciA9
IEF1ZGlvQnVmZmVyOjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShtX2F1ZGlvRGF0YS0+ZGF0YSgp
LCBtX2F1ZGlvRGF0YS0+Ynl0ZUxlbmd0aCgpLCBmYWxzZSwgc2FtcGxlUmF0ZSgpKTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0Rl
Y29kZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXN5bmNBdWRpb0RlY29k
ZXIuaAppbmRleCA4NzMwZDllLi4yM2U3ZmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0FzeW5jQXVkaW9EZWNvZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9Bc3luY0F1ZGlvRGVjb2Rlci5oCkBAIC01MSwxNyArNTEsMTcgQEAg
cHVibGljOgogICAgIH5Bc3luY0F1ZGlvRGVjb2RlcigpOwogCiAgICAgLy8gTXVzdCBiZSBjYWxs
ZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgIHZvaWQgZGVjb2RlQXN5bmMoSlNDOjpBcnJheUJ1
ZmZlciogYXVkaW9EYXRhLCBmbG9hdCBzYW1wbGVSYXRlLCBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVy
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNr
PiBlcnJvckNhbGxiYWNrKTsKKyAgICB2b2lkIGRlY29kZUFzeW5jKFJlZjxKU0M6OkFycmF5QnVm
ZmVyPiYmIGF1ZGlvRGF0YSwgZmxvYXQgc2FtcGxlUmF0ZSwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2Fs
bGJhY2s+JiYgc3VjY2Vzc0NhbGxiYWNrLCBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4mJiBl
cnJvckNhbGxiYWNrKTsKIAogcHJpdmF0ZToKICAgICBjbGFzcyBEZWNvZGluZ1Rhc2sgewogICAg
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShEZWNvZGluZ1Rhc2spOwogICAgIHB1YmxpYzoKLSAg
ICAgICAgRGVjb2RpbmdUYXNrKEpTQzo6QXJyYXlCdWZmZXIqIGF1ZGlvRGF0YSwgZmxvYXQgc2Ft
cGxlUmF0ZSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ss
IFBhc3NSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjayk7CisgICAgICAg
IERlY29kaW5nVGFzayhSZWY8SlNDOjpBcnJheUJ1ZmZlcj4mJiBhdWRpb0RhdGEsIGZsb2F0IHNh
bXBsZVJhdGUsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFjaywg
UmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjayk7CiAgICAgICAgIHZv
aWQgZGVjb2RlKCk7CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTQzo6QXJyYXlC
dWZmZXIqIGF1ZGlvRGF0YSgpIHsgcmV0dXJuIG1fYXVkaW9EYXRhLmdldCgpOyB9CisgICAgICAg
IEpTQzo6QXJyYXlCdWZmZXImIGF1ZGlvRGF0YSgpIHsgcmV0dXJuIG1fYXVkaW9EYXRhOyB9CiAg
ICAgICAgIGZsb2F0IHNhbXBsZVJhdGUoKSBjb25zdCB7IHJldHVybiBtX3NhbXBsZVJhdGU7IH0K
ICAgICAgICAgQXVkaW9CdWZmZXJDYWxsYmFjayogc3VjY2Vzc0NhbGxiYWNrKCkgeyByZXR1cm4g
bV9zdWNjZXNzQ2FsbGJhY2suZ2V0KCk7IH0KICAgICAgICAgQXVkaW9CdWZmZXJDYWxsYmFjayog
ZXJyb3JDYWxsYmFjaygpIHsgcmV0dXJuIG1fZXJyb3JDYWxsYmFjay5nZXQoKTsgfQpAQCAtNjks
NyArNjksNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHZvaWQgbm90aWZ5Q29tcGxldGUoKTsKIAot
ICAgICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gbV9hdWRpb0RhdGE7CisgICAgICAgIFJl
ZjxKU0M6OkFycmF5QnVmZmVyPiBtX2F1ZGlvRGF0YTsKICAgICAgICAgZmxvYXQgbV9zYW1wbGVS
YXRlOwogICAgICAgICBSZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJh
Y2s7CiAgICAgICAgIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAK
aW5kZXggYTdmZTYxMy4uYjQ4OWE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIHZvaWQgQXVkaW9D
b250ZXh0OjpsYXp5SW5pdGlhbGl6ZSgpCiAgICAgaWYgKG1faXNBdWRpb1RocmVhZEZpbmlzaGVk
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUuZ2V0KCkpIHsK
KyAgICBpZiAobV9kZXN0aW5hdGlvbk5vZGUpIHsKICAgICAgICAgbV9kZXN0aW5hdGlvbk5vZGUt
PmluaXRpYWxpemUoKTsKIAogICAgICAgICBpZiAoIWlzT2ZmbGluZUNvbnRleHQoKSkgewpAQCAt
Mzc3LDEwICszNzcsMTAgQEAgY29uc3QgRG9jdW1lbnQqIEF1ZGlvQ29udGV4dDo6aG9zdGluZ0Rv
Y3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7CiB9CiAKLVBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+IEF1ZGlvQ29udGV4
dDo6Y3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJP
ZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8QXVk
aW9CdWZmZXI+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBhdWRpb0J1ZmZlciA9IEF1ZGlv
QnVmZmVyOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNhbXBsZVJh
dGUpOwotICAgIGlmICghYXVkaW9CdWZmZXIuZ2V0KCkpIHsKKyAgICBpZiAoIWF1ZGlvQnVmZmVy
KSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KQEAgLTM4OCwxNiArMzg4LDEwIEBAIFBhc3NSZWZQdHI8QXVkaW9CdWZmZXI+
IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQnVmZmVyKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNp
CiAgICAgcmV0dXJuIGF1ZGlvQnVmZmVyOwogfQogCi1QYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBB
dWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIsIGJvb2wg
bWl4VG9Nb25vLCBFeGNlcHRpb25Db2RlJiBlYykKK1JlZlB0cjxBdWRpb0J1ZmZlcj4gQXVkaW9D
b250ZXh0OjpjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXImIGFycmF5QnVmZmVyLCBib29sIG1peFRv
TW9ubywgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgQVNTRVJUKGFycmF5QnVmZmVyKTsKLSAg
ICBpZiAoIWFycmF5QnVmZmVyKSB7Ci0gICAgICAgIGVjID0gU1lOVEFYX0VSUjsKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAgUmVmUHRyPEF1ZGlvQnVmZmVyPiBhdWRpb0J1
ZmZlciA9IEF1ZGlvQnVmZmVyOjpjcmVhdGVGcm9tQXVkaW9GaWxlRGF0YShhcnJheUJ1ZmZlci0+
ZGF0YSgpLCBhcnJheUJ1ZmZlci0+Ynl0ZUxlbmd0aCgpLCBtaXhUb01vbm8sIHNhbXBsZVJhdGUo
KSk7Ci0gICAgaWYgKCFhdWRpb0J1ZmZlci5nZXQoKSkgeworICAgIFJlZlB0cjxBdWRpb0J1ZmZl
cj4gYXVkaW9CdWZmZXIgPSBBdWRpb0J1ZmZlcjo6Y3JlYXRlRnJvbUF1ZGlvRmlsZURhdGEoYXJy
YXlCdWZmZXIuZGF0YSgpLCBhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKCksIG1peFRvTW9ubywgc2Ft
cGxlUmF0ZSgpKTsKKyAgICBpZiAoIWF1ZGlvQnVmZmVyKSB7CiAgICAgICAgIGVjID0gU1lOVEFY
X0VSUjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtNDA1LDY3ICszOTksNTEg
QEAgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gQXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXIoQXJy
YXlCdWZmZXIqIGFycmF5QnVmZmVyLCBib28KICAgICByZXR1cm4gYXVkaW9CdWZmZXI7CiB9CiAK
LXZvaWQgQXVkaW9Db250ZXh0OjpkZWNvZGVBdWRpb0RhdGEoQXJyYXlCdWZmZXIqIGF1ZGlvRGF0
YSwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8QXVkaW9CdWZmZXJDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgRXhjZXB0aW9uQ29kZSYg
ZWMpCit2b2lkIEF1ZGlvQ29udGV4dDo6ZGVjb2RlQXVkaW9EYXRhKFJlZjxBcnJheUJ1ZmZlcj4m
JiBhdWRpb0RhdGEsIFJlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiYmIHN1Y2Nlc3NDYWxsYmFj
aywgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYgZXJyb3JDYWxsYmFjaykKIHsKLSAgICBp
ZiAoIWF1ZGlvRGF0YSkgewotICAgICAgICBlYyA9IFNZTlRBWF9FUlI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0gICAgbV9hdWRpb0RlY29kZXIuZGVjb2RlQXN5bmMoYXVkaW9EYXRhLCBzYW1w
bGVSYXRlKCksIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CisgICAgbV9hdWRpb0Rl
Y29kZXIuZGVjb2RlQXN5bmMoV1RGTW92ZShhdWRpb0RhdGEpLCBzYW1wbGVSYXRlKCksIFdURk1v
dmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGTW92ZShlcnJvckNhbGxiYWNrKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlclNv
dXJjZSgpCitSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1
ZmZlclNvdXJjZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBsYXp5SW5p
dGlhbGl6ZSgpOwotICAgIFJlZlB0cjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IG5vZGUgPSBBdWRp
b0J1ZmZlclNvdXJjZU5vZGU6OmNyZWF0ZSgqdGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBs
ZVJhdGUoKSk7CisgICAgUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gbm9kZSA9IEF1ZGlvQnVm
ZmVyU291cmNlTm9kZTo6Y3JlYXRlKCp0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0
ZSgpKTsKIAogICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGUsIHRoZSBjb250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVudGlsIGl0IGhhcyBmaW5pc2hlZCBw
bGF5aW5nLgogICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGU6OmZpbmlzaCgpIGNhbGxzIEF1ZGlvQ29udGV4dDo6bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vz
c2luZygpLgotICAgIHJlZk5vZGUobm9kZS5nZXQoKSk7CisgICAgcmVmTm9kZShub2RlKTsKIAog
ICAgIHJldHVybiBub2RlOwogfQogCiAjaWYgRU5BQkxFKFZJREVPKQotUGFzc1JlZlB0cjxNZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFFbGVtZW50
U291cmNlKEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMp
CitSZWZQdHI8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0
ZU1lZGlhRWxlbWVudFNvdXJjZShIVE1MTWVkaWFFbGVtZW50JiBtZWRpYUVsZW1lbnQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIEFTU0VSVChtZWRpYUVsZW1lbnQpOwotICAgIGlmICghbWVk
aWFFbGVtZW50KSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KLSAgICAgICAgCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogICAgIAogICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRo
aXMgbWVkaWEgZWxlbWVudCBhbHJlYWR5IGhhcyBhIHNvdXJjZSBub2RlLgotICAgIGlmIChtZWRp
YUVsZW1lbnQtPmF1ZGlvU291cmNlTm9kZSgpKSB7CisgICAgaWYgKG1lZGlhRWxlbWVudC5hdWRp
b1NvdXJjZU5vZGUoKSkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgICAgIAotICAgIFJlZlB0cjxNZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGU+IG5vZGUgPSBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNy
ZWF0ZSgqdGhpcywgbWVkaWFFbGVtZW50KTsKKyAgICBSZWY8TWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlPiBub2RlID0gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMs
IG1lZGlhRWxlbWVudCk7CiAKLSAgICBtZWRpYUVsZW1lbnQtPnNldEF1ZGlvU291cmNlTm9kZShu
b2RlLmdldCgpKTsKKyAgICBtZWRpYUVsZW1lbnQuc2V0QXVkaW9Tb3VyY2VOb2RlKG5vZGUucHRy
KCkpOwogCiAgICAgcmVmTm9kZShub2RlLmdldCgpKTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVu
Y2UgdW50aWwgbm9kZSBpcyBkaXNjb25uZWN0ZWQKLSAgICByZXR1cm4gbm9kZTsKKyAgICByZXR1
cm4gV1RGTW92ZShub2RlKTsKIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
LVBhc3NSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU+IEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlTWVkaWFTdHJlYW1Tb3VyY2UoTWVkaWFTdHJlYW0qIG1lZGlhU3RyZWFtLCBFeGNlcHRpb25D
b2RlJiBlYykKK1JlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gQXVkaW9Db250ZXh0
OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWRpYVN0cmVhbSYgbWVkaWFTdHJlYW0sIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBBU1NF
UlQobWVkaWFTdHJlYW0pOwotICAgIGlmICghbWVkaWFTdHJlYW0pIHsKLSAgICAgICAgZWMgPSBJ
TlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQotCi0gICAg
YXV0byBhdWRpb1RyYWNrcyA9IG1lZGlhU3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpOworICAgIGF1
dG8gYXVkaW9UcmFja3MgPSBtZWRpYVN0cmVhbS5nZXRBdWRpb1RyYWNrcygpOwogICAgIGlmIChh
dWRpb1RyYWNrcy5pc0VtcHR5KCkpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC00ODYsMTQgKzQ2NCwxNCBAQCBQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3Ry
ZWFtU291cmNlKE1lZAogCiAgICAgbGF6eUluaXRpYWxpemUoKTsKIAotICAgIGF1dG8gbm9kZSA9
IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMsICptZWRpYVN0cmVhbSwg
KnByb3ZpZGVyVHJhY2spOworICAgIGF1dG8gbm9kZSA9IE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VO
b2RlOjpjcmVhdGUoKnRoaXMsIG1lZGlhU3RyZWFtLCAqcHJvdmlkZXJUcmFjayk7CiAgICAgbm9k
ZS0+c2V0Rm9ybWF0KDIsIHNhbXBsZVJhdGUoKSk7CiAKLSAgICByZWZOb2RlKCZub2RlLmdldCgp
KTsgLy8gY29udGV4dCBrZWVwcyByZWZlcmVuY2UgdW50aWwgbm9kZSBpcyBkaXNjb25uZWN0ZWQK
LSAgICByZXR1cm4gJm5vZGUuZ2V0KCk7CisgICAgcmVmTm9kZShub2RlKTsgLy8gY29udGV4dCBr
ZWVwcyByZWZlcmVuY2UgdW50aWwgbm9kZSBpcyBkaXNjb25uZWN0ZWQKKyAgICByZXR1cm4gV1RG
TW92ZShub2RlKTsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtRGVzdGluYXRpb24oKQorUmVmPE1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFT
dHJlYW1EZXN0aW5hdGlvbigpCiB7CiAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBhbiBv
cHRpb25hbCBhcmd1bWVudCB3aGljaCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBjaGFubmVscy4K
ICAgICAvLyBGSVhNRTogVGhlIGRlZmF1bHQgc2hvdWxkIHByb2JhYmx5IGJlIHN0ZXJlbyBpbnN0
ZWFkIG9mIG1vbm8uCkBAIC01MDIsMTEyICs0ODAsMTEyIEBAIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbURl
c3RpCiAKICNlbmRpZgogCi1QYXNzUmVmUHRyPFNjcmlwdFByb2Nlc3Nvck5vZGU+IEF1ZGlvQ29u
dGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBFeGNlcHRpb25D
b2RlJiBlYykKK1JlZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0
ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
CiAgICAgLy8gU2V0IG51bWJlciBvZiBpbnB1dC9vdXRwdXQgY2hhbm5lbHMgdG8gc3RlcmVvIGJ5
IGRlZmF1bHQuCiAgICAgcmV0dXJuIGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihidWZmZXJTaXplLCAy
LCAyLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8U2NyaXB0UHJvY2Vzc29yTm9kZT4gQXVkaW9Db250
ZXh0OjpjcmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1i
ZXJPZklucHV0Q2hhbm5lbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFNjcmlwdFByb2Nl
c3Nvck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZm
ZXJTaXplLCBzaXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICAvLyBTZXQgbnVtYmVyIG9mIG91dHB1dCBjaGFubmVscyB0byBzdGVyZW8gYnkgZGVm
YXVsdC4KICAgICByZXR1cm4gY3JlYXRlU2NyaXB0UHJvY2Vzc29yKGJ1ZmZlclNpemUsIG51bWJl
ck9mSW5wdXRDaGFubmVscywgMiwgZWMpOwogfQogCi1QYXNzUmVmUHRyPFNjcmlwdFByb2Nlc3Nv
ck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJT
aXplLCBzaXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRD
aGFubmVscywgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8U2NyaXB0UHJvY2Vzc29yTm9kZT4g
QXVkaW9Db250ZXh0OjpjcmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90IGJ1ZmZlclNpemUsIHNp
emVfdCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZk91dHB1dENoYW5uZWxz
LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IGxhenlJbml0aWFsaXplKCk7CiAgICAgUmVmUHRyPFNjcmlwdFByb2Nlc3Nvck5vZGU+IG5vZGUg
PSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoKnRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5z
YW1wbGVSYXRlKCksIGJ1ZmZlclNpemUsIG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZP
dXRwdXRDaGFubmVscyk7CiAKLSAgICBpZiAoIW5vZGUuZ2V0KCkpIHsKKyAgICBpZiAoIW5vZGUp
IHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCi0gICAgcmVmTm9kZShub2RlLmdldCgpKTsgLy8gY29udGV4dCBrZWVwcyByZWZl
cmVuY2UgdW50aWwgd2Ugc3RvcCBtYWtpbmcgamF2YXNjcmlwdCByZW5kZXJpbmcgY2FsbGJhY2tz
CisgICAgcmVmTm9kZSgqbm9kZSk7IC8vIGNvbnRleHQga2VlcHMgcmVmZXJlbmNlIHVudGlsIHdl
IHN0b3AgbWFraW5nIGphdmFzY3JpcHQgcmVuZGVyaW5nIGNhbGxiYWNrcwogICAgIHJldHVybiBu
b2RlOwogfQogCi1QYXNzUmVmUHRyPEJpcXVhZEZpbHRlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3Jl
YXRlQmlxdWFkRmlsdGVyKCkKK1JlZjxCaXF1YWRGaWx0ZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNy
ZWF0ZUJpcXVhZEZpbHRlcigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBs
YXp5SW5pdGlhbGl6ZSgpOwogICAgIHJldHVybiBCaXF1YWRGaWx0ZXJOb2RlOjpjcmVhdGUoKnRo
aXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkpOwogfQogCi1QYXNzUmVmUHRyPFdh
dmVTaGFwZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZVdhdmVTaGFwZXIoKQorUmVmPFdhdmVT
aGFwZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZVdhdmVTaGFwZXIoKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgbGF6eUluaXRpYWxpemUoKTsKICAgICByZXR1cm4gV2F2
ZVNoYXBlck5vZGU6OmNyZWF0ZSgqdGhpcyk7CiB9CiAKLVBhc3NSZWZQdHI8UGFubmVyTm9kZT4g
QXVkaW9Db250ZXh0OjpjcmVhdGVQYW5uZXIoKQorUmVmPFBhbm5lck5vZGU+IEF1ZGlvQ29udGV4
dDo6Y3JlYXRlUGFubmVyKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxh
enlJbml0aWFsaXplKCk7CiAgICAgcmV0dXJuIFBhbm5lck5vZGU6OmNyZWF0ZSgqdGhpcywgbV9k
ZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q29udm9sdmVy
Tm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVDb252b2x2ZXIoKQorUmVmPENvbnZvbHZlck5vZGU+
IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ29udm9sdmVyKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7CiAgICAgcmV0dXJuIENvbnZvbHZlck5vZGU6
OmNyZWF0ZSgqdGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CiB9CiAKLVBh
c3NSZWZQdHI8RHluYW1pY3NDb21wcmVzc29yTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVEeW5h
bWljc0NvbXByZXNzb3IoKQorUmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+IEF1ZGlvQ29udGV4
dDo6Y3JlYXRlRHluYW1pY3NDb21wcmVzc29yKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7CiAgICAgcmV0dXJuIER5bmFtaWNzQ29tcHJlc3Nv
ck5vZGU6OmNyZWF0ZSgqdGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CiB9
CiAKLVBhc3NSZWZQdHI8QW5hbHlzZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUFuYWx5c2Vy
KCkKK1JlZjxBbmFseXNlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQW5hbHlzZXIoKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbGF6eUluaXRpYWxpemUoKTsKICAgICBy
ZXR1cm4gQW5hbHlzZXJOb2RlOjpjcmVhdGUoKnRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1w
bGVSYXRlKCkpOwogfQogCi1QYXNzUmVmUHRyPEdhaW5Ob2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0
ZUdhaW4oKQorUmVmPEdhaW5Ob2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUdhaW4oKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbGF6eUluaXRpYWxpemUoKTsKICAgICByZXR1
cm4gR2Fpbk5vZGU6OmNyZWF0ZSgqdGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUo
KSk7CiB9CiAKLVBhc3NSZWZQdHI8RGVsYXlOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5
KEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPERlbGF5Tm9kZT4gQXVkaW9Db250ZXh0OjpjcmVh
dGVEZWxheShFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBjb25zdCBkb3VibGUgZGVmYXVsdE1h
eERlbGF5VGltZSA9IDE7CiAgICAgcmV0dXJuIGNyZWF0ZURlbGF5KGRlZmF1bHRNYXhEZWxheVRp
bWUsIGVjKTsKIH0KIAotUGFzc1JlZlB0cjxEZWxheU5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRl
RGVsYXkoZG91YmxlIG1heERlbGF5VGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8RGVs
YXlOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KGRvdWJsZSBtYXhEZWxheVRpbWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbGF6
eUluaXRpYWxpemUoKTsKLSAgICBSZWZQdHI8RGVsYXlOb2RlPiBub2RlID0gRGVsYXlOb2RlOjpj
cmVhdGUoKnRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCksIG1heERlbGF5VGlt
ZSwgZWMpOworICAgIFJlZjxEZWxheU5vZGU+IG5vZGUgPSBEZWxheU5vZGU6OmNyZWF0ZSgqdGhp
cywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgbWF4RGVsYXlUaW1lLCBlYyk7CiAg
ICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gbm9kZTsKKyAg
ICByZXR1cm4gV1RGTW92ZShub2RlKTsKIH0KIAotUGFzc1JlZlB0cjxDaGFubmVsU3BsaXR0ZXJO
b2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxTcGxpdHRlcihFeGNlcHRpb25Db2RlJiBl
YykKK1JlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5u
ZWxTcGxpdHRlcihFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBjb25zdCB1bnNpZ25lZCBDaGFu
bmVsU3BsaXR0ZXJEZWZhdWx0TnVtYmVyT2ZPdXRwdXRzID0gNjsKICAgICByZXR1cm4gY3JlYXRl
Q2hhbm5lbFNwbGl0dGVyKENoYW5uZWxTcGxpdHRlckRlZmF1bHROdW1iZXJPZk91dHB1dHMsIGVj
KTsKIH0KIAotUGFzc1JlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNy
ZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzLCBFeGNlcHRpb25Db2Rl
JiBlYykKK1JlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUNo
YW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVyT2ZPdXRwdXRzLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7CiAK
ICAgICBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gbm9kZSA9IENoYW5uZWxTcGxpdHRlck5v
ZGU6OmNyZWF0ZSgqdGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgbnVtYmVy
T2ZPdXRwdXRzKTsKIAotICAgIGlmICghbm9kZS5nZXQoKSkgeworICAgIGlmICghbm9kZSkgewog
ICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CkBAIC02MTUsMjAgKzU5MywyMCBAQCBQYXNzUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+
IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKHNpemVfdCBudW1iZQogICAgIHJl
dHVybiBub2RlOwogfQogCi1QYXNzUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBBdWRpb0NvbnRl
eHQ6OmNyZWF0ZUNoYW5uZWxNZXJnZXIoRXhjZXB0aW9uQ29kZSYgZWMpCitSZWZQdHI8Q2hhbm5l
bE1lcmdlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcihFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBjb25zdCB1bnNpZ25lZCBDaGFubmVsTWVyZ2VyRGVmYXVsdE51bWJl
ck9mSW5wdXRzID0gNjsKICAgICByZXR1cm4gY3JlYXRlQ2hhbm5lbE1lcmdlcihDaGFubmVsTWVy
Z2VyRGVmYXVsdE51bWJlck9mSW5wdXRzLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8Q2hhbm5lbE1l
cmdlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVy
T2ZJbnB1dHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBB
dWRpb0NvbnRleHQ6OmNyZWF0ZUNoYW5uZWxNZXJnZXIoc2l6ZV90IG51bWJlck9mSW5wdXRzLCBF
eGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxh
enlJbml0aWFsaXplKCk7CiAKICAgICBSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IG5vZGUgPSBD
aGFubmVsTWVyZ2VyTm9kZTo6Y3JlYXRlKCp0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxl
UmF0ZSgpLCBudW1iZXJPZklucHV0cyk7CiAKLSAgICBpZiAoIW5vZGUuZ2V0KCkpIHsKKyAgICBp
ZiAoIW5vZGUpIHsKICAgICAgICAgZWMgPSBJTkRFWF9TSVpFX0VSUjsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQpAQCAtNjM2LDIxICs2MTQsMjEgQEAgUGFzc1JlZlB0cjxDaGFubmVs
TWVyZ2VyTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVDaGFubmVsTWVyZ2VyKHNpemVfdCBudW1i
ZXJPZkkKICAgICByZXR1cm4gbm9kZTsKIH0KIAotUGFzc1JlZlB0cjxPc2NpbGxhdG9yTm9kZT4g
QXVkaW9Db250ZXh0OjpjcmVhdGVPc2NpbGxhdG9yKCkKK1JlZjxPc2NpbGxhdG9yTm9kZT4gQXVk
aW9Db250ZXh0OjpjcmVhdGVPc2NpbGxhdG9yKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBSZWZQdHI8T3NjaWxsYXRvck5vZGU+
IG5vZGUgPSBPc2NpbGxhdG9yTm9kZTo6Y3JlYXRlKCp0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+
c2FtcGxlUmF0ZSgpKTsKKyAgICBSZWY8T3NjaWxsYXRvck5vZGU+IG5vZGUgPSBPc2NpbGxhdG9y
Tm9kZTo6Y3JlYXRlKCp0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKIAog
ICAgIC8vIEJlY2F1c2UgdGhpcyBpcyBhbiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUsIHRoZSBj
b250ZXh0IGtlZXBzIGEgcmVmZXJlbmNlIHVudGlsIGl0IGhhcyBmaW5pc2hlZCBwbGF5aW5nLgog
ICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zLCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OmZpbmlz
aCgpIGNhbGxzIEF1ZGlvQ29udGV4dDo6bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZygpLgot
ICAgIHJlZk5vZGUobm9kZS5nZXQoKSk7CisgICAgcmVmTm9kZShub2RlKTsKIAogICAgIHJldHVy
biBub2RlOwogfQogCi1QYXNzUmVmUHRyPFBlcmlvZGljV2F2ZT4gQXVkaW9Db250ZXh0OjpjcmVh
dGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5KiByZWFsLCBGbG9hdDMyQXJyYXkqIGltYWcsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUmVmUHRyPFBlcmlvZGljV2F2ZT4gQXVkaW9Db250ZXh0OjpjcmVh
dGVQZXJpb2RpY1dhdmUoRmxvYXQzMkFycmF5KiByZWFsLCBGbG9hdDMyQXJyYXkqIGltYWcsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCkBA
IC02NzQsMjggKzY1MiwyOCBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6ZGVyZWZGaW5pc2hlZFNvdXJj
ZU5vZGVzKCkKICAgICBBU1NFUlQoaXNHcmFwaE93bmVyKCkpOwogICAgIEFTU0VSVChpc0F1ZGlv
VGhyZWFkKCkgfHwgaXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpOwogICAgIGZvciAoYXV0byYgbm9k
ZSA6IG1fZmluaXNoZWROb2RlcykKLSAgICAgICAgZGVyZWZOb2RlKG5vZGUpOworICAgICAgICBk
ZXJlZk5vZGUoKm5vZGUpOwogCiAgICAgbV9maW5pc2hlZE5vZGVzLmNsZWFyKCk7CiB9CiAKLXZv
aWQgQXVkaW9Db250ZXh0OjpyZWZOb2RlKEF1ZGlvTm9kZSogbm9kZSkKK3ZvaWQgQXVkaW9Db250
ZXh0OjpyZWZOb2RlKEF1ZGlvTm9kZSYgbm9kZSkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKICAgICAKLSAgICBub2RlLT5yZWYo
QXVkaW9Ob2RlOjpSZWZUeXBlQ29ubmVjdGlvbik7Ci0gICAgbV9yZWZlcmVuY2VkTm9kZXMuYXBw
ZW5kKG5vZGUpOworICAgIG5vZGUucmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOwor
ICAgIG1fcmVmZXJlbmNlZE5vZGVzLmFwcGVuZCgmbm9kZSk7CiB9CiAKLXZvaWQgQXVkaW9Db250
ZXh0OjpkZXJlZk5vZGUoQXVkaW9Ob2RlKiBub2RlKQordm9pZCBBdWRpb0NvbnRleHQ6OmRlcmVm
Tm9kZShBdWRpb05vZGUmIG5vZGUpCiB7CiAgICAgQVNTRVJUKGlzR3JhcGhPd25lcigpKTsKICAg
ICAKLSAgICBub2RlLT5kZXJlZihBdWRpb05vZGU6OlJlZlR5cGVDb25uZWN0aW9uKTsKKyAgICBu
b2RlLmRlcmVmKEF1ZGlvTm9kZTo6UmVmVHlwZUNvbm5lY3Rpb24pOwogCi0gICAgQVNTRVJUKG1f
cmVmZXJlbmNlZE5vZGVzLmNvbnRhaW5zKG5vZGUpKTsKLSAgICBtX3JlZmVyZW5jZWROb2Rlcy5y
ZW1vdmVGaXJzdChub2RlKTsKKyAgICBBU1NFUlQobV9yZWZlcmVuY2VkTm9kZXMuY29udGFpbnMo
Jm5vZGUpKTsKKyAgICBtX3JlZmVyZW5jZWROb2Rlcy5yZW1vdmVGaXJzdCgmbm9kZSk7CiB9CiAK
IHZvaWQgQXVkaW9Db250ZXh0OjpkZXJlZlVuZmluaXNoZWRTb3VyY2VOb2RlcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCA4ZDYxZTYx
Li5mZDVhYzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9D
b250ZXh0LmgKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlIDxhdG9taWM+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3
dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1RocmVhZFNhZmVSZWZDb3VudGVkLmg+CkBAIC0x
MDEsMTEgKzEwMCwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVTb3VyY2VD
b3VudCgpOwogICAgIHZvaWQgZGVjcmVtZW50QWN0aXZlU291cmNlQ291bnQoKTsKICAgICAKLSAg
ICBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyPiBjcmVhdGVCdWZmZXIodW5zaWduZWQgbnVtYmVyT2ZD
aGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlcj4gY3JlYXRlQnVmZmVyKEFycmF5
QnVmZmVyKiwgYm9vbCBtaXhUb01vbm8sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8QXVk
aW9CdWZmZXI+IGNyZWF0ZUJ1ZmZlcih1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3Qg
bnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBS
ZWZQdHI8QXVkaW9CdWZmZXI+IGNyZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciYsIGJvb2wgbWl4VG9N
b25vLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICAvLyBBc3luY2hyb25vdXMgYXVkaW8gZmlsZSBk
YXRhIGRlY29kaW5nLgotICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKEFycmF5QnVmZmVyKiwgUGFz
c1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxiYWNrPiwgUGFzc1JlZlB0cjxBdWRpb0J1ZmZlckNhbGxi
YWNrPiwgRXhjZXB0aW9uQ29kZSYgZWMpOworICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKFJlZjxB
cnJheUJ1ZmZlcj4mJiwgUmVmUHRyPEF1ZGlvQnVmZmVyQ2FsbGJhY2s+JiYsIFJlZlB0cjxBdWRp
b0J1ZmZlckNhbGxiYWNrPiYmKTsKIAogICAgIEF1ZGlvTGlzdGVuZXIqIGxpc3RlbmVyKCkgeyBy
ZXR1cm4gbV9saXN0ZW5lci5nZXQoKTsgfQogCkBAIC0xMjEsMzIgKzEyMCwzMiBAQCBwdWJsaWM6
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdGF0ZSgpIGNvbnN0OwogCiAgICAgLy8gVGhlIEF1
ZGlvTm9kZSBjcmVhdGUgbWV0aG9kcyBhcmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCAoZnJv
bSBKYXZhU2NyaXB0KS4KLSAgICBQYXNzUmVmUHRyPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gY3Jl
YXRlQnVmZmVyU291cmNlKCk7CisgICAgUmVmPEF1ZGlvQnVmZmVyU291cmNlTm9kZT4gY3JlYXRl
QnVmZmVyU291cmNlKCk7CiAjaWYgRU5BQkxFKFZJREVPKQotICAgIFBhc3NSZWZQdHI8TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlh
RWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8TWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlPiBjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UoSFRNTE1lZGlhRWxlbWVudCYsIEV4
Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0gICAgUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gY3JlYXRlTWVkaWFTdHJlYW1Tb3Vy
Y2UoTWVkaWFTdHJlYW0qLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlPiBjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKCk7
CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBjcmVhdGVNZWRpYVN0cmVh
bVNvdXJjZShNZWRpYVN0cmVhbSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWY8TWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlvbigpOwog
I2VuZGlmCi0gICAgUGFzc1JlZlB0cjxHYWluTm9kZT4gY3JlYXRlR2FpbigpOwotICAgIFBhc3NS
ZWZQdHI8QmlxdWFkRmlsdGVyTm9kZT4gY3JlYXRlQmlxdWFkRmlsdGVyKCk7Ci0gICAgUGFzc1Jl
ZlB0cjxXYXZlU2hhcGVyTm9kZT4gY3JlYXRlV2F2ZVNoYXBlcigpOwotICAgIFBhc3NSZWZQdHI8
RGVsYXlOb2RlPiBjcmVhdGVEZWxheShFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxE
ZWxheU5vZGU+IGNyZWF0ZURlbGF5KGRvdWJsZSBtYXhEZWxheVRpbWUsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICBQYXNzUmVmUHRyPFBhbm5lck5vZGU+IGNyZWF0ZVBhbm5lcigpOwotICAgIFBhc3NS
ZWZQdHI8Q29udm9sdmVyTm9kZT4gY3JlYXRlQ29udm9sdmVyKCk7Ci0gICAgUGFzc1JlZlB0cjxE
eW5hbWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGVEeW5hbWljc0NvbXByZXNzb3IoKTsgICAgCi0g
ICAgUGFzc1JlZlB0cjxBbmFseXNlck5vZGU+IGNyZWF0ZUFuYWx5c2VyKCk7Ci0gICAgUGFzc1Jl
ZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBjcmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90IGJ1
ZmZlclNpemUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPFNjcmlwdFByb2Nlc3Nv
ck5vZGU+IGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmVyU2l6ZSwgc2l6ZV90IG51
bWJlck9mSW5wdXRDaGFubmVscywgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8U2Ny
aXB0UHJvY2Vzc29yTm9kZT4gY3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXpl
LCBzaXplX3QgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFu
bmVscywgRXhjZXB0aW9uQ29kZSYpOwotICAgIFBhc3NSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9k
ZT4gY3JlYXRlQ2hhbm5lbFNwbGl0dGVyKEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRy
PENoYW5uZWxTcGxpdHRlck5vZGU+IGNyZWF0ZUNoYW5uZWxTcGxpdHRlcihzaXplX3QgbnVtYmVy
T2ZPdXRwdXRzLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0cjxDaGFubmVsTWVyZ2Vy
Tm9kZT4gY3JlYXRlQ2hhbm5lbE1lcmdlcihFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc1JlZlB0
cjxDaGFubmVsTWVyZ2VyTm9kZT4gY3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJ
bnB1dHMsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBQYXNzUmVmUHRyPE9zY2lsbGF0b3JOb2RlPiBj
cmVhdGVPc2NpbGxhdG9yKCk7Ci0gICAgUGFzc1JlZlB0cjxQZXJpb2RpY1dhdmU+IGNyZWF0ZVBl
cmlvZGljV2F2ZShGbG9hdDMyQXJyYXkqIHJlYWwsIEZsb2F0MzJBcnJheSogaW1hZywgRXhjZXB0
aW9uQ29kZSYpOworICAgIFJlZjxHYWluTm9kZT4gY3JlYXRlR2FpbigpOworICAgIFJlZjxCaXF1
YWRGaWx0ZXJOb2RlPiBjcmVhdGVCaXF1YWRGaWx0ZXIoKTsKKyAgICBSZWY8V2F2ZVNoYXBlck5v
ZGU+IGNyZWF0ZVdhdmVTaGFwZXIoKTsKKyAgICBSZWZQdHI8RGVsYXlOb2RlPiBjcmVhdGVEZWxh
eShFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPERlbGF5Tm9kZT4gY3JlYXRlRGVsYXkoZG91
YmxlIG1heERlbGF5VGltZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZjxQYW5uZXJOb2RlPiBj
cmVhdGVQYW5uZXIoKTsKKyAgICBSZWY8Q29udm9sdmVyTm9kZT4gY3JlYXRlQ29udm9sdmVyKCk7
CisgICAgUmVmPER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+IGNyZWF0ZUR5bmFtaWNzQ29tcHJlc3Nv
cigpOworICAgIFJlZjxBbmFseXNlck5vZGU+IGNyZWF0ZUFuYWx5c2VyKCk7CisgICAgUmVmUHRy
PFNjcmlwdFByb2Nlc3Nvck5vZGU+IGNyZWF0ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmVy
U2l6ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2RlPiBj
cmVhdGVTY3JpcHRQcm9jZXNzb3Ioc2l6ZV90IGJ1ZmZlclNpemUsIHNpemVfdCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBSZWZQdHI8U2NyaXB0UHJvY2Vzc29y
Tm9kZT4gY3JlYXRlU2NyaXB0UHJvY2Vzc29yKHNpemVfdCBidWZmZXJTaXplLCBzaXplX3QgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscywgRXhjZXB0
aW9uQ29kZSYpOworICAgIFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2RlPiBjcmVhdGVDaGFubmVs
U3BsaXR0ZXIoRXhjZXB0aW9uQ29kZSYpOworICAgIFJlZlB0cjxDaGFubmVsU3BsaXR0ZXJOb2Rl
PiBjcmVhdGVDaGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlck9mT3V0cHV0cywgRXhjZXB0aW9u
Q29kZSYpOworICAgIFJlZlB0cjxDaGFubmVsTWVyZ2VyTm9kZT4gY3JlYXRlQ2hhbm5lbE1lcmdl
cihFeGNlcHRpb25Db2RlJik7CisgICAgUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBjcmVhdGVD
aGFubmVsTWVyZ2VyKHNpemVfdCBudW1iZXJPZklucHV0cywgRXhjZXB0aW9uQ29kZSYpOworICAg
IFJlZjxPc2NpbGxhdG9yTm9kZT4gY3JlYXRlT3NjaWxsYXRvcigpOworICAgIFJlZlB0cjxQZXJp
b2RpY1dhdmU+IGNyZWF0ZVBlcmlvZGljV2F2ZShGbG9hdDMyQXJyYXkqIHJlYWwsIEZsb2F0MzJB
cnJheSogaW1hZywgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgLy8gV2hlbiBhIHNvdXJjZSBub2Rl
IGhhcyBubyBtb3JlIHByb2Nlc3NpbmcgdG8gZG8gKGhhcyBmaW5pc2hlZCBwbGF5aW5nKSwgdGhl
biBpdCB0ZWxscyB0aGUgY29udGV4dCB0byBkZXJlZmVyZW5jZSBpdC4KICAgICB2b2lkIG5vdGlm
eU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcoQXVkaW9Ob2RlKik7CkBAIC0zMDMsOCArMzAyLDggQEAg
cHJpdmF0ZToKICAgICAvLyBJbiB0dXJuLCB0aGVzZSBub2RlcyByZWZlcmVuY2UgYWxsIG5vZGVz
IHRoZXkncmUgY29ubmVjdGVkIHRvLiAgQWxsIG5vZGVzIGFyZSB1bHRpbWF0ZWx5IGNvbm5lY3Rl
ZCB0byB0aGUgQXVkaW9EZXN0aW5hdGlvbk5vZGUuCiAgICAgLy8gV2hlbiB0aGUgY29udGV4dCBk
ZXJlZmVyZW5jZXMgYSBzb3VyY2Ugbm9kZSwgaXQgd2lsbCBiZSBkZWFjdGl2YXRlZCBmcm9tIHRo
ZSByZW5kZXJpbmcgZ3JhcGggYWxvbmcgd2l0aCBhbGwgb3RoZXIgbm9kZXMgaXQgaXMKICAgICAv
LyB1bmlxdWVseSBjb25uZWN0ZWQgdG8uICBTZWUgdGhlIEF1ZGlvTm9kZTo6cmVmKCkgYW5kIEF1
ZGlvTm9kZTo6ZGVyZWYoKSBtZXRob2RzIGZvciBtb3JlIGRldGFpbHMuCi0gICAgdm9pZCByZWZO
b2RlKEF1ZGlvTm9kZSopOwotICAgIHZvaWQgZGVyZWZOb2RlKEF1ZGlvTm9kZSopOworICAgIHZv
aWQgcmVmTm9kZShBdWRpb05vZGUmKTsKKyAgICB2b2lkIGRlcmVmTm9kZShBdWRpb05vZGUmKTsK
IAogICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCiAgICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5pZGwK
aW5kZXggNDUxZjQ4NS4uM2UxOWZjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmlkbApAQCAtMzUsNyArMzUsNiBAQCBlbnVtIEF1ZGlvQ29u
dGV4dFN0YXRlIHsKICAgICBDb25kaXRpb25hbD1XRUJfQVVESU8sCiAgICAgQWN0aXZlRE9NT2Jq
ZWN0LAogICAgIEN1c3RvbUNvbnN0cnVjdG9yLAotICAgIFVzZVBvaW50ZXJzRXZlbkZvck5vbk51
bGxhYmxlT2JqZWN0QXJndW1lbnRzLAogICAgIEludGVyZmFjZU5hbWU9d2Via2l0QXVkaW9Db250
ZXh0LAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAogXSBpbnRlcmZhY2UgQXVkaW9D
b250ZXh0IDogRXZlbnRUYXJnZXQgewpAQCAtNjIsMTAgKzYxLDExIEBAIGVudW0gQXVkaW9Db250
ZXh0U3RhdGUgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGFjdGl2ZVNv
dXJjZUNvdW50OwogICAgIAogICAgIFtSYWlzZXNFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNyZWF0
ZUJ1ZmZlcih1bnNpZ25lZCBsb25nIG51bWJlck9mQ2hhbm5lbHMsIHVuc2lnbmVkIGxvbmcgbnVt
YmVyT2ZGcmFtZXMsIHVucmVzdHJpY3RlZCBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICBbUmFpc2Vz
RXhjZXB0aW9uXSBBdWRpb0J1ZmZlciBjcmVhdGVCdWZmZXIoQXJyYXlCdWZmZXI/IGJ1ZmZlciwg
Ym9vbGVhbiBtaXhUb01vbm8pOworICAgIFtSYWlzZXNFeGNlcHRpb25dIEF1ZGlvQnVmZmVyIGNy
ZWF0ZUJ1ZmZlcihBcnJheUJ1ZmZlciBidWZmZXIsIGJvb2xlYW4gbWl4VG9Nb25vKTsKIAogICAg
IC8vIEFzeW5jaHJvbm91cyBhdWRpbyBmaWxlIGRhdGEgZGVjb2RpbmcuCi0gICAgW1JhaXNlc0V4
Y2VwdGlvbl0gdm9pZCBkZWNvZGVBdWRpb0RhdGEoQXJyYXlCdWZmZXIgYXVkaW9EYXRhLCBBdWRp
b0J1ZmZlckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgb3B0aW9uYWwgQXVkaW9CdWZmZXJDYWxs
YmFjayBlcnJvckNhbGxiYWNrKTsKKyAgICAvLyBGSVhNRTogc3VjY2Vzc0NhbGxiYWNrIHNob3Vs
ZCBiZSBvcHRpb25hbCBhbmQgdGhlIGNhbGxiYWNrcyBzaG91bGQgbm90IGJlIG51bGxhYmxlLgor
ICAgIHZvaWQgZGVjb2RlQXVkaW9EYXRhKEFycmF5QnVmZmVyIGF1ZGlvRGF0YSwgQXVkaW9CdWZm
ZXJDYWxsYmFjaz8gc3VjY2Vzc0NhbGxiYWNrLCBvcHRpb25hbCBBdWRpb0J1ZmZlckNhbGxiYWNr
PyBlcnJvckNhbGxiYWNrKTsKIAogICAgIC8vIFNvdXJjZXMKICAgICBBdWRpb0J1ZmZlclNvdXJj
ZU5vZGUgY3JlYXRlQnVmZmVyU291cmNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAK
aW5kZXggMDEzOTFmZC4uMmM5Y2RiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcApA
QCAtNDAsMTIgKzQwLDEyIEBAIGNvbnN0IHVuc2lnbmVkIG1heFNhbXBsZVJhdGUgPSAxOTIwMDA7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZT4gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCitSZWY8TWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlPiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0ZShBdWRpb0Nv
bnRleHQmIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1lbnQmIG1lZGlhRWxlbWVudCkKIHsKICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoY29udGV4dCwg
bWVkaWFFbGVtZW50KSk7CiB9CiAKLU1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZTo6TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgSFRNTE1lZGlhRWxl
bWVudCogbWVkaWFFbGVtZW50KQorTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBIVE1MTWVkaWFFbGVt
ZW50JiBtZWRpYUVsZW1lbnQpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgY29udGV4dC5zYW1w
bGVSYXRlKCkpCiAgICAgLCBtX21lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQpCiAgICAgLCBtX3Nv
dXJjZU51bWJlck9mQ2hhbm5lbHMoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5oCmluZGV4IGMx
ODA0MmYuLmQzMTExNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuaApAQCAtNDEsMTEgKzQx
LDExIEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKICAgICAKIGNsYXNzIE1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZSA6IHB1YmxpYyBBdWRpb05vZGUsIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVy
Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYsIEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBzdGF0
aWMgUmVmPE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYs
IFJlZjxIVE1MTWVkaWFFbGVtZW50PiYmKTsKIAogICAgIHZpcnR1YWwgfk1lZGlhRWxlbWVudEF1
ZGlvU291cmNlTm9kZSgpOwogCi0gICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkg
eyByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7IH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgCisgICAgSFRNTE1lZGlhRWxlbWVudCYgbWVkaWFFbGVtZW50KCkgeyBy
ZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZvaWQgcHJv
Y2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTU4LDcgKzU4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgdW5sb2NrKCk7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIEhUTUxNZWRpYUVsZW1lbnQqKTsKKyAgICBN
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiwgSFRNTE1lZGlhRWxlbWVu
dCYpOwogCiAgICAgZG91YmxlIHRhaWxUaW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsg
fQogICAgIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0K
QEAgLTY2LDcgKzY2LDcgQEAgcHJpdmF0ZToKICAgICAvLyBBcyBhbiBhdWRpbyBzb3VyY2UsIHdl
IHdpbGwgbmV2ZXIgcHJvcGFnYXRlIHNpbGVuY2UuCiAgICAgYm9vbCBwcm9wYWdhdGVzU2lsZW5j
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICBSZWZQdHI8SFRNTE1l
ZGlhRWxlbWVudD4gbV9tZWRpYUVsZW1lbnQ7CisgICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IG1f
bWVkaWFFbGVtZW50OwogICAgIExvY2sgbV9wcm9jZXNzTXV0ZXg7CiAKICAgICB1bnNpZ25lZCBt
X3NvdXJjZU51bWJlck9mQ2hhbm5lbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRsCmluZGV4IDdjNmUxNDQuLjk0N2Y5Y2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaWRs
CkBAIC0yNSw3ICsyNSw2IEBACiAvLyBPc2NpbGxhdG9yTm9kZSBpcyBhbiBhdWRpbyBnZW5lcmF0
b3Igb2YgcGVyaW9kaWMgd2F2ZWZvcm1zLgogWwogICAgIENvbmRpdGlvbmFsPVdFQl9BVURJTywK
LSAgICBVc2VQb2ludGVyc0V2ZW5Gb3JOb25OdWxsYWJsZU9iamVjdEFyZ3VtZW50cywKICAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKIF0gaW50ZXJmYWNlIE9zY2lsbGF0b3JOb2RlIDogQXVkaW9O
b2RlIHsKIApAQCAtNTUsNyArNTQsOCBAQAogICAgIFtDb25kaXRpb25hbD1MRUdBQ1lfV0VCX0FV
RElPLCBSYWlzZXNFeGNlcHRpb25dIHZvaWQgbm90ZU9uKHVucmVzdHJpY3RlZCBkb3VibGUgd2hl
bik7CiAgICAgW0NvbmRpdGlvbmFsPUxFR0FDWV9XRUJfQVVESU8sIFJhaXNlc0V4Y2VwdGlvbl0g
dm9pZCBub3RlT2ZmKHVucmVzdHJpY3RlZCBkb3VibGUgd2hlbik7CiAKLSAgICB2b2lkIHNldFBl
cmlvZGljV2F2ZShQZXJpb2RpY1dhdmUgd2F2ZSk7CisgICAgLy8gRklYTUU6IFRoZSBwYXJhbWV0
ZXIgc2hvdWxkIG5vdCBiZSBudWxsYWJsZS4KKyAgICB2b2lkIHNldFBlcmlvZGljV2F2ZShQZXJp
b2RpY1dhdmU/IHdhdmUpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVuZGVkOwog
fTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>