<?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>197620</bug_id>
          
          <creation_ts>2019-05-06 12:05:07 -0700</creation_ts>
          <short_desc>Wasm should cage the memory base pointers in structs</short_desc>
          <delta_ts>2019-05-16 19:22:15 -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>WebAssembly</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="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1533471</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-05-06 12:05:07 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536899</commentid>
    <comment_count>1</comment_count>
      <attachid>370065</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-05-16 13:56:51 -0700</bug_when>
    <thetext>Created attachment 370065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536996</commentid>
    <comment_count>2</comment_count>
      <attachid>370065</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-16 18:34:45 -0700</bug_when>
    <thetext>Comment on attachment 370065
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:11
&gt; +        Currently, we use cageConditionally; this only matters for API
&gt; +        users since the web content process cannot disable primitive
&gt; +        gigacage. This patch also adds a set helper for union/intersection
&gt; +        of RegisterSets.

Do we have tests where Gigacage is disabled with Wasm enabled in JSC?

&gt; Source/JavaScriptCore/wasm/WasmBinding.cpp:48
&gt; +    GPRReg scratch = wasmCallingConventionAir().prologueScratch(0);

👍🏼

&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:-442
&gt; -        m_memory.resize(m_size, desiredSize);

Seems like this was a bug? Do we have a test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536997</commentid>
    <comment_count>3</comment_count>
      <attachid>370065</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-05-16 18:54:11 -0700</bug_when>
    <thetext>Comment on attachment 370065
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:11
&gt;&gt; +        of RegisterSets.
&gt; 
&gt; Do we have tests where Gigacage is disabled with Wasm enabled in JSC?

I don’t believe so. I’m not sure how important it is since wasn’t memory is always allocated out of the cage anyway.

&gt;&gt; Source/JavaScriptCore/wasm/WasmMemory.cpp:-442
&gt;&gt; -        m_memory.resize(m_size, desiredSize);
&gt; 
&gt; Seems like this was a bug? Do we have a test?

It’s not a bug. I changed the type of the container so I had to change the name of the method. There’s definitely theses that grow (I recall hitting this in the og patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536998</commentid>
    <comment_count>4</comment_count>
      <attachid>370065</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-16 19:21:57 -0700</bug_when>
    <thetext>Comment on attachment 370065
Patch

Clearing flags on attachment: 370065

Committed r245432: &lt;https://trac.webkit.org/changeset/245432&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1536999</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-05-16 19:21:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537000</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-16 19:22:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/50878478&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370065</attachid>
            <date>2019-05-16 13:56:51 -0700</date>
            <delta_ts>2019-05-16 19:21:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197620-20190516135650.patch</filename>
            <type>text/plain</type>
            <size>25105</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
NzMyNTI0ZDY5MWIzZWVkYmMwYjk3YTg4MWNkNjhiMDY5NTM1ZTczLi4zMTVhMjc2YTk5NjU3MmNm
OTY3YWEwMTE1M2NjYTM0MjAwMGRmMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzOSBAQAorMjAxOS0wNS0xNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBXYXNtIHNob3VsZCBjYWdlIHRoZSBtZW1vcnkgYmFzZSBwb2ludGVy
cyBpbiBzdHJ1Y3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTc2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDdXJyZW50bHksIHdlIHVzZSBjYWdlQ29uZGl0aW9uYWxseTsgdGhpcyBvbmx5IG1hdHRl
cnMgZm9yIEFQSQorICAgICAgICB1c2VycyBzaW5jZSB0aGUgd2ViIGNvbnRlbnQgcHJvY2VzcyBj
YW5ub3QgZGlzYWJsZSBwcmltaXRpdmUKKyAgICAgICAgZ2lnYWNhZ2UuIFRoaXMgcGF0Y2ggYWxz
byBhZGRzIGEgc2V0IGhlbHBlciBmb3IgdW5pb24vaW50ZXJzZWN0aW9uCisgICAgICAgIG9mIFJl
Z2lzdGVyU2V0cy4KKworICAgICAgICAqIGFzc2VtYmxlci9DUFUuaDoKKyAgICAgICAgKEpTQzo6
aXNBUk02NEUpOgorICAgICAgICAqIGppdC9SZWdpc3RlclNldC5oOgorICAgICAgICAoSlNDOjpS
ZWdpc3RlclNldDo6c2V0KToKKyAgICAgICAgKiB3YXNtL1dhc21BaXJJUkdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlH
bG9iYWxTdGF0ZSk6CisgICAgICAgIChKU0M6Oldhc206OkFpcklSR2VuZXJhdG9yOjphZGRDYWxs
SW5kaXJlY3QpOgorICAgICAgICAqIHdhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJhdG9yOjpyZXN0b3JlV2ViQXNzZW1ibHlHbG9iYWxTdGF0
ZSk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdCk6
CisgICAgICAgICogd2FzbS9XYXNtQmluZGluZy5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ondh
c21Ub1dhc20pOgorICAgICAgICAqIHdhc20vV2FzbUluc3RhbmNlLmg6CisgICAgICAgIChKU0M6
Oldhc206Okluc3RhbmNlOjpjYWNoZWRNZW1vcnkgY29uc3QpOgorICAgICAgICAoSlNDOjpXYXNt
OjpJbnN0YW5jZTo6dXBkYXRlQ2FjaGVkTWVtb3J5KToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1v
cnkuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Omdyb3cpOgorICAgICAgICAqIHdh
c20vV2FzbU1lbW9yeS5oOgorICAgICAgICAoSlNDOjpXYXNtOjpNZW1vcnk6Om1lbW9yeSBjb25z
dCk6CisgICAgICAgICogd2FzbS9qcy9KU1RvV2FzbS5jcHA6CisgICAgICAgIChKU0M6Oldhc206
OmNyZWF0ZUpTVG9XYXNtV3JhcHBlcik6CisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1
bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50
cnlwb2ludFNsb3cpOgorCiAyMDE5LTA1LTE0ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGlu
Z0Bzb255LmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIHJlc3RvcmF0aW9uIG9mIG5vbi11bmlm
aWVkIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwppbmRleCA2YmM2MGFhN2U0YmY3NGFhMjc1NDYxYzRhYzE4NWNhYTRkOTgyNjAx
Li5mMDg5ZDY3ZDg2ODJmOWQ0NjkxODk1YzcyYmVkMDdmZDc4NTAzYmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDE5LTA1LTE2ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29t
PgorCisgICAgICAgIFdhc20gc2hvdWxkIGNhZ2UgdGhlIG1lbW9yeSBiYXNlIHBvaW50ZXJzIGlu
IHN0cnVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NzYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbmFtZSByZWF1dGhlbnRpY2F0ZSB0byByZWNhZ2UuCisKKyAgICAgICAgKiB3dGYvQ2FnZWRQ
dHIuaDoKKyAgICAgICAgKFdURjo6Q2FnZWRQdHI6OnJlY2FnZSk6CisgICAgICAgIChXVEY6OkNh
Z2VkUHRyOjpyZWF1dGhlbnRpY2F0ZSk6IERlbGV0ZWQuCisKIDIwMTktMDUtMTQgIENvbW1pdCBR
dWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIyNDUyODEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKaW5kZXggMTI4YzFmZjU0YjI5ZmVlNGExZWQ0ZWQ5
NTFkNWI1MjMyMjQ2N2YzNC4uNzU4MWUwZWZjZjNmMDBlYzRiZWRhMWJhNmY5Y2U3MGM2YzA5ZjE0
NCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9ibWFs
bG9jL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTA1LTE2ICBLZWl0aCBNaWxsZXIg
IDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgorCisgICAgICAgIFdhc20gc2hvdWxkIGNhZ2UgdGhl
IG1lbW9yeSBiYXNlIHBvaW50ZXJzIGluIHN0cnVjdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NzYyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBzaWduYXR1cmUgdG8gdGFrZSBHaWdhY2FnZTo6
S2luZCwgd2hpY2ggbWF0Y2hlcyBHSUdBQ0FHRV9FTkFCTEVEIGJ1aWxkLgorCisgICAgICAgICog
Ym1hbGxvYy9HaWdhY2FnZS5oOgorICAgICAgICAoR2lnYWNhZ2U6OmlzRW5hYmxlZCk6CisKIDIw
MTktMDUtMDggIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgUmVtb3ZlIEdpZ2FjYWdlIGZyb20gYXJtNjQgYW5kIHVzZSBQQUMgZm9yIGFybTY0ZSBpbnN0
ZWFkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUuaAppbmRleCBkZGNjZDAwYTg3OWI1
MTcwMjFjZWVmOGZkMTk5NjYwOTdkYmY4NzU3Li5jMTY3NGVjOTE5YzdiZWMyNjc4YTM3NDgxN2I3
MTlhYjZlMmNiNmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0NQVS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQ1BVLmgKQEAgLTU2
LDYgKzU2LDE1IEBAIGNvbnN0ZXhwciBib29sIGlzQVJNNjQoKQogI2VuZGlmCiB9CiAKK2NvbnN0
ZXhwciBib29sIGlzQVJNNjRFKCkKK3sKKyNpZiBDUFUoQVJNNjRFKQorICAgIHJldHVybiB0cnVl
OworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKwogY29uc3RleHByIGJvb2wg
aXNYODYoKQogewogI2lmIENQVShYODZfNjQpIHx8IENQVShYODYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZ2lzdGVyU2V0LmgKaW5kZXggYWU0MjMyMzc2MzU4ZGE2YjhiOWM2NjE5MzJiNzNi
MWM5NjRkOTZkNy4uOGMwMTg0MmQ2OTQ5ZWE0OGE2MmVhMzZhNGViZjA2OTVmZmU2OGNkNiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdpc3RlclNldC5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaApAQCAtODQsNyArODQsOSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICBzZXQocmVncy50YWdHUFIoKSwgdmFsdWUpOwogICAgICAgICBz
ZXQocmVncy5wYXlsb2FkR1BSKCksIHZhbHVlKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIHNl
dChjb25zdCBSZWdpc3RlclNldCYgb3RoZXIsIGJvb2wgdmFsdWUgPSB0cnVlKSB7IHZhbHVlID8g
bWVyZ2Uob3RoZXIpIDogZXhjbHVkZShvdGhlcik7IH0KKwogICAgIHZvaWQgY2xlYXIoUmVnIHJl
ZykKICAgICB7CiAgICAgICAgIEFTU0VSVCghIXJlZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtQWlySVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUFpcklSR2VuZXJhdG9yLmNwcAppbmRleCAyNmE0MDBkZmJmNTEzMmQ3
ZTM3YTE1NjkzNGFhNjA1YTQxMTY2N2NlLi40NzVlOTI2ODg0OWU4MmI1MGVjNDI2NTM2OThhMDQ4
MmJkNmZlOTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQWly
SVJHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21BaXJJ
UkdlbmVyYXRvci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJCM1Byb2NlZHVyZS5o
IgogI2luY2x1ZGUgIkIzUHJvY2VkdXJlSW5saW5lcy5oIgogI2luY2x1ZGUgIkJpbmFyeVN3aXRj
aC5oIgorI2luY2x1ZGUgIkRpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oIgogI2lu
Y2x1ZGUgIlNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdp
c3Rlci5oIgogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29udmVudGlvbi5oIgpAQCAtODIyLDYgKzgy
Myw4IEBAIHZvaWQgQWlySVJHZW5lcmF0b3I6OnJlc3RvcmVXZWJBc3NlbWJseUdsb2JhbFN0YXRl
KFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0IHJlc3RvCiAgICAgICAgIFJlZ2lzdGVyU2V0IGNsb2Ji
ZXJzOwogICAgICAgICBjbG9iYmVycy5zZXQocGlubmVkUmVncy0+YmFzZU1lbW9yeVBvaW50ZXIp
OwogICAgICAgICBjbG9iYmVycy5zZXQocGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVyKTsKKyAgICAg
ICAgaWYgKCFpc0FSTTY0KCkpCisgICAgICAgICAgICBjbG9iYmVycy5zZXQoUmVnaXN0ZXJTZXQ6
Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKIAogICAgICAgICBhdXRvKiBwYXRjaHBvaW50ID0g
YWRkUGF0Y2hwb2ludChCMzo6Vm9pZCk7CiAgICAgICAgIEIzOjpFZmZlY3RzIGVmZmVjdHMgPSBC
Mzo6RWZmZWN0czo6bm9uZSgpOwpAQCAtODI5LDEzICs4MzIsMTggQEAgdm9pZCBBaXJJUkdlbmVy
YXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVzdG9yZUNhY2hlZFN0YWNrTGlt
aXQgcmVzdG8KICAgICAgICAgZWZmZWN0cy5yZWFkcyA9IEIzOjpIZWFwUmFuZ2U6OnRvcCgpOwog
ICAgICAgICBwYXRjaHBvaW50LT5lZmZlY3RzID0gZWZmZWN0czsKICAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihjbG9iYmVycyk7CisgICAgICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJl
Z2lzdGVycyA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlByaW1pdGl2ZSkgPyAxIDog
MDsKIAogICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoW3Bpbm5lZFJlZ3NdIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgQjM6OlN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1z
KSB7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghR2lnYWNhZ2U6OmlzRW5hYmxlZChHaWdh
Y2FnZTo6UHJpbWl0aXZlKSB8fCAhaXNBUk02NCgpKTsKKyAgICAgICAgICAgIEFsbG93TWFjcm9T
Y3JhdGNoUmVnaXN0ZXJVc2FnZUlmIGFsbG93U2NyYXRjaChqaXQsICFpc0FSTTY0KCkpOworICAg
ICAgICAgICAgR1BSUmVnIGJhc2VNZW1vcnkgPSBwaW5uZWRSZWdzLT5iYXNlTWVtb3J5UG9pbnRl
cjsKKyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoT3JTaXplID0gR2lnYWNhZ2U6OmlzRW5hYmxl
ZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IHBhcmFtcy5ncFNjcmF0Y2goMCkgOiBwaW5uZWRSZWdz
LT5zaXplUmVnaXN0ZXI7CisKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCksIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNp
emUoKSksIHBpbm5lZFJlZ3MtPnNpemVSZWdpc3Rlcik7Ci0gICAgICAgICAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0
T2ZDYWNoZWRNZW1vcnkoKSksIHBpbm5lZFJlZ3MtPmJhc2VNZW1vcnlQb2ludGVyKTsKLSNpZiBD
UFUoQVJNNjRFKQotICAgICAgICAgICAgaml0LnVudGFnQXJyYXlQdHIocGlubmVkUmVncy0+c2l6
ZVJlZ2lzdGVyLCBwaW5uZWRSZWdzLT5iYXNlTWVtb3J5UG9pbnRlcik7Ci0jZW5kaWYKKyAgICAg
ICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhwYXJhbXNbMF0uZ3ByKCks
IEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CisKKyAgICAg
ICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVt
b3J5LCBzY3JhdGNoT3JTaXplKTsKICAgICAgICAgfSk7CiAKICAgICAgICAgZW1pdFBhdGNocG9p
bnQoYmxvY2ssIHBhdGNocG9pbnQsIFRtcCgpLCBpbnN0YW5jZSk7CkBAIC0xODQ0LDYgKzE4NTIs
OCBAQCBhdXRvIEFpcklSR2VuZXJhdG9yOjphZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJl
JiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNzaQogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxk
bid0IGhhdmUgdG8gZG8gdGhpczogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3MjE4MQogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKFBpbm5lZFJlZ2lzdGVySW5m
bzo6Z2V0KCkudG9TYXZlKE1lbW9yeU1vZGU6OkJvdW5kc0NoZWNraW5nKSk7CiAgICAgICAgIHBh
dGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsK
KyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gR2lnYWNhZ2U6Omlz
RW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IDEgOiAwOworCiAgICAgICAgIHBhdGNocG9p
bnQtPnNldEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBCMzo6U3RhY2tt
YXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgIEFsbG93TWFjcm9TY3Jh
dGNoUmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKICAgICAgICAgICAgIEdQUlJlZyBu
ZXdDb250ZXh0SW5zdGFuY2UgPSBwYXJhbXNbMF0uZ3ByKCk7CkBAIC0xODU3LDExICsxODY3LDEy
IEBAIGF1dG8gQWlySVJHZW5lcmF0b3I6OmFkZENhbGxJbmRpcmVjdChjb25zdCBTaWduYXR1cmUm
IHNpZ25hdHVyZSwgVmVjdG9yPEV4cHJlc3NpCiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHN1cHBvcnQgbW9yZSB0aGFuIG9uZSBtZW1vcnkgc2l6ZSByZWdpc3RlcgogICAgICAgICAg
ICAgLy8gICBzZWU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5
NTIKICAgICAgICAgICAgIEFTU0VSVChwaW5uZWRSZWdzLnNpemVSZWdpc3RlciAhPSBuZXdDb250
ZXh0SW5zdGFuY2UpOworICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hPclNpemUgPSBHaWdhY2Fn
ZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUpID8gcGFyYW1zLmdwU2NyYXRjaCgwKSA6
IHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyOworCiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6b2Zmc2V0T2ZD
YWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7IC8vIE1lbW9yeSBz
aXplLgogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5ld0Nv
bnRleHRJbnN0YW5jZSwgSW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5KCkpLCBiYXNlTWVt
b3J5KTsgLy8gTWVtb3J5Ojp2b2lkKi4KLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAgaml0
LnVudGFnQXJyYXlQdHIocGlubmVkUmVncy5zaXplUmVnaXN0ZXIsIGJhc2VNZW1vcnkpOwotI2Vu
ZGlmCisKKyAgICAgICAgICAgIGppdC5jYWdlQ29uZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0
aXZlLCBiYXNlTWVtb3J5LCBzY3JhdGNoT3JTaXplKTsKICAgICAgICAgfSk7CiAKICAgICAgICAg
ZW1pdFBhdGNocG9pbnQoZG9Db250ZXh0U3dpdGNoLCBwYXRjaHBvaW50LCBUbXAoKSwgbmV3Q29u
dGV4dEluc3RhbmNlLCBpbnN0YW5jZVZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwCmluZGV4IGFlZThiNGRhMDA0ODUxNWVjNWM4
YmQ4OTI5NDU3MGI4ZGMwNjA2YzkuLjE1ZjQ2NGYwMmNlMzY5ZjM1ZTRjY2IxNWUxYmUyNWUwZGIw
ZTcwM2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVy
YXRvci5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJCM1ZhcmlhYmxlVmFsdWUuaCIK
ICNpbmNsdWRlICJCM1dhc21BZGRyZXNzVmFsdWUuaCIKICNpbmNsdWRlICJCM1dhc21Cb3VuZHND
aGVja1ZhbHVlLmgiCisjaW5jbHVkZSAiRGlzYWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdl
LmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlNjcmF0Y2hSZWdpc3RlckFs
bG9jYXRvci5oIgogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgpAQCAtNDY4LDYgKzQ2OSw4
IEBAIHZvaWQgQjNJUkdlbmVyYXRvcjo6cmVzdG9yZVdlYkFzc2VtYmx5R2xvYmFsU3RhdGUoUmVz
dG9yZUNhY2hlZFN0YWNrTGltaXQgcmVzdG9yCiAgICAgICAgIFJlZ2lzdGVyU2V0IGNsb2JiZXJz
OwogICAgICAgICBjbG9iYmVycy5zZXQocGlubmVkUmVncy0+YmFzZU1lbW9yeVBvaW50ZXIpOwog
ICAgICAgICBjbG9iYmVycy5zZXQocGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVyKTsKKyAgICAgICAg
aWYgKCFpc0FSTTY0KCkpCisgICAgICAgICAgICBjbG9iYmVycy5zZXQoUmVnaXN0ZXJTZXQ6Om1h
Y3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKIAogICAgICAgICBCMzo6UGF0Y2hwb2ludFZhbHVlKiBw
YXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxCMzo6UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBC
Mzo6Vm9pZCwgb3JpZ2luKCkpOwogICAgICAgICBFZmZlY3RzIGVmZmVjdHMgPSBFZmZlY3RzOjpu
b25lKCk7CkBAIC00NzUsMTYgKzQ3OCwxOSBAQCB2b2lkIEIzSVJHZW5lcmF0b3I6OnJlc3RvcmVX
ZWJBc3NlbWJseUdsb2JhbFN0YXRlKFJlc3RvcmVDYWNoZWRTdGFja0xpbWl0IHJlc3RvcgogICAg
ICAgICBlZmZlY3RzLnJlYWRzID0gQjM6OkhlYXBSYW5nZTo6dG9wKCk7CiAgICAgICAgIHBhdGNo
cG9pbnQtPmVmZmVjdHMgPSBlZmZlY3RzOwogICAgICAgICBwYXRjaHBvaW50LT5jbG9iYmVyKGNs
b2JiZXJzKTsKKyAgICAgICAgcGF0Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gR2ln
YWNhZ2U6OmlzRW5hYmxlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSA/IDEgOiAwOwogCiAgICAgICAg
IHBhdGNocG9pbnQtPmFwcGVuZChpbnN0YW5jZSwgVmFsdWVSZXA6OlNvbWVSZWdpc3Rlcik7Ci0K
ICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFtwaW5uZWRSZWdzXSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFtcykgewor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIUdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6
OlByaW1pdGl2ZSkgfHwgIWlzQVJNNjQoKSk7CisgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRj
aFJlZ2lzdGVyVXNhZ2VJZiBhbGxvd1NjcmF0Y2goaml0LCAhaXNBUk02NCgpKTsKICAgICAgICAg
ICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy0+YmFzZU1lbW9yeVBvaW50ZXI7Cisg
ICAgICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2ln
YWNhZ2U6OlByaW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVncy0+c2l6
ZVJlZ2lzdGVyOworCiAgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MocGFyYW1zWzBdLmdwcigpLCBJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkp
LCBwaW5uZWRSZWdzLT5zaXplUmVnaXN0ZXIpOwogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKHBhcmFtc1swXS5ncHIoKSwgSW5zdGFuY2U6Om9mZnNldE9mQ2Fj
aGVkTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAg
aml0LnVudGFnQXJyYXlQdHIocGlubmVkUmVncy0+c2l6ZVJlZ2lzdGVyLCBiYXNlTWVtb3J5KTsK
LSNlbmRpZgorCisgICAgICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgYmFzZU1lbW9yeSwgc2NyYXRjaE9yU2l6ZSk7CiAgICAgICAgIH0pOwogICAgIH0K
IH0KQEAgLTEyNzIsNiArMTI3OCw4IEBAIGF1dG8gQjNJUkdlbmVyYXRvcjo6YWRkQ2FsbEluZGly
ZWN0KGNvbnN0IFNpZ25hdHVyZSYgc2lnbmF0dXJlLCBWZWN0b3I8RXhwcmVzc2lvCiAgICAgICAg
IHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygp
KTsKICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kKG5ld0NvbnRleHRJbnN0YW5jZSwgVmFsdWVS
ZXA6OlNvbWVSZWdpc3Rlcik7CiAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZChpbnN0YW5jZVZh
bHVlKCksIFZhbHVlUmVwOjpTb21lUmVnaXN0ZXIpOworICAgICAgICBwYXRjaHBvaW50LT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnMgPSBHaWdhY2FnZTo6aXNFbmFibGVkKEdpZ2FjYWdlOjpQcmltaXRp
dmUpID8gMSA6IDA7CisKICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0Nh
bGxIZWxwZXJzJiBqaXQsIGNvbnN0IEIzOjpTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgewogICAgICAgICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2Ny
YXRjaChqaXQpOwogICAgICAgICAgICAgR1BSUmVnIG5ld0NvbnRleHRJbnN0YW5jZSA9IHBhcmFt
c1swXS5ncHIoKTsKQEAgLTEyODYsMTEgKzEyOTQsMTIgQEAgYXV0byBCM0lSR2VuZXJhdG9yOjph
ZGRDYWxsSW5kaXJlY3QoY29uc3QgU2lnbmF0dXJlJiBzaWduYXR1cmUsIFZlY3RvcjxFeHByZXNz
aW8KICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCBtb3JlIHRoYW4gb25l
IG1lbW9yeSBzaXplIHJlZ2lzdGVyCiAgICAgICAgICAgICAvLyAgIHNlZTogaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgogICAgICAgICAgICAgQVNTRVJUKHBp
bm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyICE9IG5ld0NvbnRleHRJbnN0YW5jZSk7CisgICAgICAgICAg
ICBHUFJSZWcgc2NyYXRjaE9yU2l6ZSA9IEdpZ2FjYWdlOjppc0VuYWJsZWQoR2lnYWNhZ2U6OlBy
aW1pdGl2ZSkgPyBwYXJhbXMuZ3BTY3JhdGNoKDApIDogcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7
CisKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhuZXdDb250
ZXh0SW5zdGFuY2UsIEluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5l
ZFJlZ3Muc2l6ZVJlZ2lzdGVyKTsgLy8gTWVtb3J5IHNpemUuCiAgICAgICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MobmV3Q29udGV4dEluc3RhbmNlLCBJbnN0YW5jZTo6
b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VNZW1vcnkpOyAvLyBNZW1vcnk6OnZvaWQqLgot
I2lmIENQVShBUk02NEUpCi0gICAgICAgICAgICBqaXQudW50YWdBcnJheVB0cihwaW5uZWRSZWdz
LnNpemVSZWdpc3RlciwgYmFzZU1lbW9yeSk7Ci0jZW5kaWYKKworICAgICAgICAgICAgaml0LmNh
Z2VDb25kaXRpb25hbGx5KEdpZ2FjYWdlOjpQcmltaXRpdmUsIGJhc2VNZW1vcnksIHNjcmF0Y2hP
clNpemUpOwogICAgICAgICB9KTsKICAgICAgICAgZG9Db250ZXh0U3dpdGNoLT5hcHBlbmROZXdD
b250cm9sVmFsdWUobV9wcm9jLCBKdW1wLCBvcmlnaW4oKSwgY29udGludWF0aW9uKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJpbmRpbmcuY3BwCmluZGV4IDA2NDdhNjM3NTE4
YzVjMGQ1YTdmODI4ZjY5NDczNDQxMzQ2YWVjNzkuLjBjNTNjYjY2ZmQwZGIzMmQ4ODM0YmZlNmEy
M2M0YjA2N2Y2ZWQyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQmluZGlu
Zy5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgRXhwZWN0ZWQ8TWFjcm9Bc3NlbWJsZXJDb2RlUmVmPFdh
c21FbnRyeVB0clRhZz4sIEJpbmRpbmdGYWlsdXJlPiB3YXNtVG9XYXNtKHVuc2kKICAgICBjb25z
dCBQaW5uZWRSZWdpc3RlckluZm8mIHBpbm5lZFJlZ3MgPSBQaW5uZWRSZWdpc3RlckluZm86Omdl
dCgpOwogICAgIEpJVCBqaXQ7CiAKLSAgICBHUFJSZWcgc2NyYXRjaCA9IEdQUkluZm86Om5vblBy
ZXNlcnZlZE5vbkFyZ3VtZW50R1BSMDsKKyAgICBHUFJSZWcgc2NyYXRjaCA9IHdhc21DYWxsaW5n
Q29udmVudGlvbkFpcigpLnByb2xvZ3VlU2NyYXRjaCgwKTsKICAgICBHUFJSZWcgYmFzZU1lbW9y
eSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CiAgICAgQVNTRVJUKGJhc2VNZW1vcnkg
IT0gc2NyYXRjaCk7CiAgICAgQVNTRVJUKHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyICE9IGJhc2VN
ZW1vcnkpOwpAQCAtNjUsMTEgKzY1LDEzIEBAIEV4cGVjdGVkPE1hY3JvQXNzZW1ibGVyQ29kZVJl
ZjxXYXNtRW50cnlQdHJUYWc+LCBCaW5kaW5nRmFpbHVyZT4gd2FzbVRvV2FzbSh1bnNpCiAKICAg
ICAvLyBGSVhNRSB0aGUgZm9sbG93aW5nIGNvZGUgYXNzdW1lcyB0aGF0IGFsbCBXYXNtOjpJbnN0
YW5jZSBoYXZlIHRoZSBzYW1lIHBpbm5lZCByZWdpc3RlcnMuIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjI5NTIKICAgICAvLyBTZXQgdXAgdGhlIGNhbGxlZSdzIGJh
c2VNZW1vcnkgcmVnaXN0ZXIgYXMgd2VsbCBhcyB0aGUgbWVtb3J5IHNpemUgcmVnaXN0ZXJzLgot
ICAgIGppdC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhiYXNlTWVtb3J5LCBXYXNtOjpJbnN0YW5jZTo6
b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7IC8v
IE1lbW9yeSBzaXplLgotICAgIGppdC5sb2FkUHRyKEpJVDo6QWRkcmVzcyhiYXNlTWVtb3J5LCBX
YXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VNZW1vcnkpOyAvLyBX
YXNtOjpNZW1vcnk6OlRhZ2dlZEFycmF5U3RvcmFnZVB0cjx2b2lkPiAodm9pZCopLgotI2lmIENQ
VShBUk02NEUpCi0gICAgaml0LnVudGFnQXJyYXlQdHIocGlubmVkUmVncy5zaXplUmVnaXN0ZXIs
IGJhc2VNZW1vcnkpOwotI2VuZGlmCisgICAgeworICAgICAgICBHUFJSZWcgc2NyYXRjaE9yU2l6
ZSA9IGlzQVJNNjRFKCkgPyBwaW5uZWRSZWdzLnNpemVSZWdpc3RlciA6IHdhc21DYWxsaW5nQ29u
dmVudGlvbkFpcigpLnByb2xvZ3VlU2NyYXRjaCgxKTsKKworICAgICAgICBqaXQubG9hZFB0cihK
SVQ6OkFkZHJlc3MoYmFzZU1lbW9yeSwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVt
b3J5U2l6ZSgpKSwgcGlubmVkUmVncy5zaXplUmVnaXN0ZXIpOyAvLyBNZW1vcnkgc2l6ZS4KKyAg
ICAgICAgaml0LmxvYWRQdHIoSklUOjpBZGRyZXNzKGJhc2VNZW1vcnksIFdhc206Okluc3RhbmNl
OjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7IC8vIFdhc206Ok1lbW9yeTo6
VGFnZ2VkQXJyYXlTdG9yYWdlUHRyPHZvaWQ+ICh2b2lkKikuCisgICAgICAgIGppdC5jYWdlQ29u
ZGl0aW9uYWxseShHaWdhY2FnZTo6UHJpbWl0aXZlLCBiYXNlTWVtb3J5LCBzY3JhdGNoT3JTaXpl
KTsKKyAgICB9CiAKICAgICAvLyBUYWlsIGNhbGwgaW50byB0aGUgY2FsbGVlIFdlYkFzc2VtYmx5
IGZ1bmN0aW9uLgogICAgIGppdC5sb2FkUHRyKHNjcmF0Y2gsIHNjcmF0Y2gpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaAppbmRleCAzODdiZGQxNWE1MmI1ZjA4NGU2
N2FjNTBmMDc5MjU1MTVkNGVlNDE0Li5jZDM0YTY0OGRkNTJmY2RiZTI0NzRlNjhiMmI3YzY4NzI3
N2Y0MGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFu
Y2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtSW5zdGFuY2UuaApAQCAt
NjQsNyArNjQsNyBAQCBwdWJsaWM6CiAgICAgTWVtb3J5KiBtZW1vcnkoKSB7IHJldHVybiBtX21l
bW9yeS5nZXQoKTsgfQogICAgIFRhYmxlKiB0YWJsZSgpIHsgcmV0dXJuIG1fdGFibGUuZ2V0KCk7
IH0KIAotICAgIHZvaWQqIGNhY2hlZE1lbW9yeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkTWVt
b3J5LmdldChjYWNoZWRNZW1vcnlTaXplKCkpOyB9CisgICAgdm9pZCogY2FjaGVkTWVtb3J5KCkg
Y29uc3QgeyByZXR1cm4gbV9jYWNoZWRNZW1vcnkuZ2V0TWF5QmVOdWxsKGNhY2hlZE1lbW9yeVNp
emUoKSk7IH0KICAgICBzaXplX3QgY2FjaGVkTWVtb3J5U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FjaGVkTWVtb3J5U2l6ZTsgfQogCiAgICAgdm9pZCBzZXRNZW1vcnkoUmVmPE1lbW9yeT4mJiBt
ZW1vcnkpCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUNhY2hlZE1l
bW9yeSgpCiAgICAgewogICAgICAgICBpZiAobV9tZW1vcnkgIT0gbnVsbHB0cikgewotICAgICAg
ICAgICAgbV9jYWNoZWRNZW1vcnkgPSBUYWdnZWRBcnJheVN0b3JhZ2VQdHI8dm9pZD4obWVtb3J5
KCktPm1lbW9yeSgpLCBtZW1vcnkoKS0+c2l6ZSgpKTsKKyAgICAgICAgICAgIG1fY2FjaGVkTWVt
b3J5ID0gQ2FnZWRQdHI8R2lnYWNhZ2U6OlByaW1pdGl2ZSwgdm9pZCwgdGFnQ2FnZWRQdHI+KG1l
bW9yeSgpLT5tZW1vcnkoKSwgbWVtb3J5KCktPnNpemUoKSk7CiAgICAgICAgICAgICBtX2NhY2hl
ZE1lbW9yeVNpemUgPSBtZW1vcnkoKS0+c2l6ZSgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMTQz
LDcgKzE0Myw3IEBAIHByaXZhdGU6CiAgICAgfQogICAgIHZvaWQqIG1fb3duZXIgeyBudWxscHRy
IH07IC8vIEluIGEgSlMgZW1iZWRkaW5nLCB0aGlzIGlzIGEgSlNXZWJBc3NlbWJseUluc3RhbmNl
Ki4KICAgICBDb250ZXh0KiBtX2NvbnRleHQgeyBudWxscHRyIH07Ci0gICAgVGFnZ2VkQXJyYXlT
dG9yYWdlUHRyPHZvaWQ+IG1fY2FjaGVkTWVtb3J5OworICAgIENhZ2VkUHRyPEdpZ2FjYWdlOjpQ
cmltaXRpdmUsIHZvaWQsIHRhZ0NhZ2VkUHRyPiBtX2NhY2hlZE1lbW9yeTsKICAgICBzaXplX3Qg
bV9jYWNoZWRNZW1vcnlTaXplIHsgMCB9OwogICAgIFJlZjxNb2R1bGU+IG1fbW9kdWxlOwogICAg
IFJlZlB0cjxDb2RlQmxvY2s+IG1fY29kZUJsb2NrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTWVtb3J5LmNwcAppbmRleCA0Y2E1NGFjZWNhNzBhNmVjNTQwNzU5NjRmZDljMWE0OTU1
NGFkYzZiLi41OTEwMzgyMzQ4ZTk2ZDEyM2FhMWY1MzllMzliMDlkYTAzMWYwNjRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmNwcApAQCAtNDIzLDcgKzQyMyw3IEBA
IEV4cGVjdGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpHcm93RmFpbFJlYXNvbj4gTWVtb3J5Ojpncm93
KFBhZ2VDb3VudCBkZWx0YSkKICAgICAgICAgbWVtY3B5KG5ld01lbW9yeSwgbWVtb3J5KCksIG1f
c2l6ZSk7CiAgICAgICAgIGlmIChtX21lbW9yeSkKICAgICAgICAgICAgIEdpZ2FjYWdlOjpmcmVl
VmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIG1lbW9yeSgpLCBtX3NpemUpOwotICAg
ICAgICBtX21lbW9yeSA9IFRhZ2dlZEFycmF5U3RvcmFnZVB0cjx2b2lkPihuZXdNZW1vcnksIGRl
c2lyZWRTaXplKTsKKyAgICAgICAgbV9tZW1vcnkgPSBDYWdlZE1lbW9yeShuZXdNZW1vcnksIGRl
c2lyZWRTaXplKTsKICAgICAgICAgbV9tYXBwZWRDYXBhY2l0eSA9IGRlc2lyZWRTaXplOwogICAg
ICAgICBtX3NpemUgPSBkZXNpcmVkU2l6ZTsKICAgICAgICAgQVNTRVJUKG1lbW9yeSgpID09IG5l
d01lbW9yeSk7CkBAIC00MzksNyArNDM5LDcgQEAgRXhwZWN0ZWQ8UGFnZUNvdW50LCBNZW1vcnk6
Okdyb3dGYWlsUmVhc29uPiBNZW1vcnk6Omdyb3coUGFnZUNvdW50IGRlbHRhKQogICAgICAgICAg
ICAgZGF0YUxvZygibXByb3RlY3QgZmFpbGVkOiAiLCBzdHJlcnJvcihlcnJubyksICJcbiIpOwog
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgfQotICAg
ICAgICBtX21lbW9yeS5yZXNpemUobV9zaXplLCBkZXNpcmVkU2l6ZSk7CisgICAgICAgIG1fbWVt
b3J5LnJlY2FnZShtX3NpemUsIGRlc2lyZWRTaXplKTsKICAgICAgICAgbV9zaXplID0gZGVzaXJl
ZFNpemU7CiAgICAgICAgIHJldHVybiBzdWNjZXNzKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1lbW9yeS5oCmluZGV4IDlhZGJiMTE5MzI5MmU0YzI1MDBjMmI4MzgxMmRl
Mjc5MWQzYjg0MTEuLjk2NzA4MzhmMTcxMWY4MmU3YmI0ZTE1YmY4YjVkZDNiODQ4MjZiNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKQEAgLTMwLDExICszMCwxMSBA
QAogI2luY2x1ZGUgIldhc21NZW1vcnlNb2RlLmgiCiAjaW5jbHVkZSAiV2FzbVBhZ2VDb3VudC5o
IgogCisjaW5jbHVkZSA8d3RmL0NhZ2VkUHRyLmg+CiAjaW5jbHVkZSA8d3RmL0V4cGVjdGVkLmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1RhZ2dlZEFycmF5U3RvcmFn
ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5o
PgogCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc2l6ZV90IGZhc3RNYXBw
ZWRCeXRlcygpOyAvLyBJbmNsdWRlcyByZWR6b25lLgogICAgIHN0YXRpYyBib29sIGFkZHJlc3NJ
c0luQWN0aXZlRmFzdE1lbW9yeSh2b2lkKik7CiAKLSAgICB2b2lkKiBtZW1vcnkoKSBjb25zdCB7
IEFTU0VSVChtX21lbW9yeS5nZXQoc2l6ZSgpKSA9PSBtX21lbW9yeS5nZXRVbnNhZmUoKSk7IHJl
dHVybiBtX21lbW9yeS5nZXQoc2l6ZSgpKTsgfQorICAgIHZvaWQqIG1lbW9yeSgpIGNvbnN0IHsg
QVNTRVJUKG1fbWVtb3J5LmdldE1heUJlTnVsbChzaXplKCkpID09IG1fbWVtb3J5LmdldFVuc2Fm
ZSgpKTsgcmV0dXJuIG1fbWVtb3J5LmdldE1heUJlTnVsbChzaXplKCkpOyB9CiAgICAgc2l6ZV90
IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICBQYWdlQ291bnQgc2l6ZUluUGFn
ZXMoKSBjb25zdCB7IHJldHVybiBQYWdlQ291bnQ6OmZyb21CeXRlcyhtX3NpemUpOyB9CiAKQEAg
LTk3LDcgKzk3LDggQEAgcHJpdmF0ZToKICAgICBNZW1vcnkodm9pZCogbWVtb3J5LCBQYWdlQ291
bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIHNpemVfdCBtYXBwZWRDYXBhY2l0eSwgTWVt
b3J5TW9kZSwgV1RGOjpGdW5jdGlvbjx2b2lkKE5vdGlmeVByZXNzdXJlKT4mJiBub3RpZnlNZW1v
cnlQcmVzc3VyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKFN5bmNUcnlUb1JlY2xhaW0pPiYmIHN5bmNU
cnlUb1JlY2xhaW1NZW1vcnksIFdURjo6RnVuY3Rpb248dm9pZChHcm93U3VjY2VzcywgUGFnZUNv
dW50LCBQYWdlQ291bnQpPiYmIGdyb3dTdWNjZXNzQ2FsbGJhY2spOwogICAgIE1lbW9yeShQYWdl
Q291bnQgaW5pdGlhbCwgUGFnZUNvdW50IG1heGltdW0sIFdURjo6RnVuY3Rpb248dm9pZChOb3Rp
ZnlQcmVzc3VyZSk+JiYgbm90aWZ5TWVtb3J5UHJlc3N1cmUsIFdURjo6RnVuY3Rpb248dm9pZChT
eW5jVHJ5VG9SZWNsYWltKT4mJiBzeW5jVHJ5VG9SZWNsYWltTWVtb3J5LCBXVEY6OkZ1bmN0aW9u
PHZvaWQoR3Jvd1N1Y2Nlc3MsIFBhZ2VDb3VudCwgUGFnZUNvdW50KT4mJiBncm93U3VjY2Vzc0Nh
bGxiYWNrKTsKIAotICAgIFRhZ2dlZEFycmF5U3RvcmFnZVB0cjx2b2lkPiBtX21lbW9yeTsKKyAg
ICB1c2luZyBDYWdlZE1lbW9yeSA9IENhZ2VkUHRyPEdpZ2FjYWdlOjpQcmltaXRpdmUsIHZvaWQs
IHRhZ0NhZ2VkUHRyPjsKKyAgICBDYWdlZE1lbW9yeSBtX21lbW9yeTsKICAgICBzaXplX3QgbV9z
aXplIHsgMCB9OwogICAgIFBhZ2VDb3VudCBtX2luaXRpYWw7CiAgICAgUGFnZUNvdW50IG1fbWF4
aW11bTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNt
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTVG9XYXNtLmNwcAppbmRleCBl
MDM2Y2VmNmRhNDFiMWI4Y2ZiZjE4ZTQ2YjFkZTNhZWNiN2E3MGUxLi43NzRiY2UwZDczODYzMjcw
ZDI5Y2Q3ODdkZTU1MzVlNjdlMGI1NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9KU1RvV2FzbS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNUb1dhc20uY3BwCkBAIC0yMTAsMjggKzIxMCwyMyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW50
ZXJuYWxGdW5jdGlvbj4gY3JlYXRlSlNUb1dhc21XcmFwcGVyKENvbXBpbGF0aW9uQ29udGV4dCYg
Y29tcAogCiAgICAgaWYgKCEhaW5mby5tZW1vcnkpIHsKICAgICAgICAgR1BSUmVnIGJhc2VNZW1v
cnkgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQb2ludGVyOworICAgICAgICBHUFJSZWcgc2NyYXRj
aE9yU2l6ZSA9IHdhc21DYWxsaW5nQ29udmVudGlvbkFpcigpLnByb2xvZ3VlU2NyYXRjaCgwKTsK
IAogICAgICAgICBpZiAoQ29udGV4dDo6dXNlRmFzdFRMUygpKQogICAgICAgICAgICAgaml0Lmxv
YWRXYXNtQ29udGV4dEluc3RhbmNlKGJhc2VNZW1vcnkpOwogCiAgICAgICAgIEdQUlJlZyBjdXJy
ZW50SW5zdGFuY2VHUFIgPSBDb250ZXh0Ojp1c2VGYXN0VExTKCkgPyBiYXNlTWVtb3J5IDogd2Fz
bUNvbnRleHRJbnN0YW5jZUdQUjsKLSAgICAgICAgaWYgKG1vZGUgIT0gTWVtb3J5TW9kZTo6U2ln
bmFsaW5nKSB7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
Y3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlT
aXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rlcik7Ci0gICAgICAgICAgICBqaXQubG9hZFB0
cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0YW5j
ZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VNZW1vcnkpOwotI2lmIENQVShBUk02NEUp
Ci0gICAgICAgICAgICBqaXQudW50YWdBcnJheVB0cihwaW5uZWRSZWdzLnNpemVSZWdpc3Rlciwg
YmFzZU1lbW9yeSk7Ci0jZW5kaWYKKyAgICAgICAgaWYgKGlzQVJNNjRFKCkpIHsKKyAgICAgICAg
ICAgIGlmIChtb2RlICE9IFdhc206Ok1lbW9yeU1vZGU6OlNpZ25hbGluZykKKyAgICAgICAgICAg
ICAgICBzY3JhdGNoT3JTaXplID0gcGlubmVkUmVncy5zaXplUmVnaXN0ZXI7CisgICAgICAgICAg
ICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBX
YXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBzY3JhdGNoT3JTaXpl
KTsKICAgICAgICAgfSBlbHNlIHsKLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAgR1BSUmVn
IHNjcmF0Y2ggPSB3YXNtQ2FsbGluZ0NvbnZlbnRpb25BaXIoKS5wcm9sb2d1ZVNjcmF0Y2goMCk7
Ci0KLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhjdXJyZW50
SW5zdGFuY2VHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSks
IHNjcmF0Y2gpOwotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGN1cnJlbnRJbnN0YW5jZUdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2FjaGVkTWVtb3J5
KCkpLCBiYXNlTWVtb3J5KTsKLSAgICAgICAgICAgIGppdC51bnRhZ0FycmF5UHRyKHNjcmF0Y2gs
IGJhc2VNZW1vcnkpOwotI2Vsc2UKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhjdXJyZW50SW5zdGFuY2VHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRPZkNh
Y2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7Ci0jZW5kaWYKKyAgICAgICAgICAgIGlmIChtb2Rl
ICE9IFdhc206Ok1lbW9yeU1vZGU6OlNpZ25hbGluZykKKyAgICAgICAgICAgICAgICBqaXQubG9h
ZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0
YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBwaW5uZWRSZWdzLnNpemVSZWdpc3Rl
cik7CiAgICAgICAgIH0KKworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJl
c3MoY3VycmVudEluc3RhbmNlR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1v
cnkoKSksIGJhc2VNZW1vcnkpOworICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNh
Z2U6OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgc2NyYXRjaE9yU2l6ZSk7CiAgICAgfQogCiAgICAg
Q0NhbGxIZWxwZXJzOjpDYWxsIGNhbGwgPSBqaXQudGhyZWFkU2FmZVBhdGNoYWJsZU5lYXJDYWxs
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJs
eUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
RnVuY3Rpb24uY3BwCmluZGV4IGNmN2M3NzliZDRhZWNhNDk2NGI5YmQ2ODE3Zjg0MTlmNWUxZTc4
MzkuLjZkY2VjODBkZDg0ZTE0YzAyYWNiNTg3ZjdjMDk5ZDAyMjhlMTYzNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
CkBAIC0zOTUsMjIgKzM5NSwyMCBAQCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRh
Zz4gV2ViQXNzZW1ibHlGdW5jdGlvbjo6anNDYWxsRW50cnlwb2ludFNsb3coKQogCiAgICAgaWYg
KCEhbW9kdWxlSW5mb3JtYXRpb24ubWVtb3J5KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5
ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hP
clNpemUgPSBzY3JhdGNoMkdQUjsKKyAgICAgICAgYXV0byBtb2RlID0gaW5zdGFuY2UoKS0+bWVt
b3J5TW9kZSgpOwogCi0gICAgICAgIGlmIChpbnN0YW5jZSgpLT5tZW1vcnlNb2RlKCkgIT0gV2Fz
bTo6TWVtb3J5TW9kZTo6U2lnbmFsaW5nKSB7Ci0gICAgICAgICAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaEdQUiwgV2FzbTo6SW5zdGFuY2U6Om9mZnNldE9mQ2Fj
aGVkTWVtb3J5U2l6ZSgpKSwgcGlubmVkUmVncy5zaXplUmVnaXN0ZXIpOwotICAgICAgICAgICAg
aml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3Rh
bmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7Ci0jaWYgQ1BVKEFSTTY0
RSkKLSAgICAgICAgICAgIGppdC51bnRhZ0FycmF5UHRyKHBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVy
LCBiYXNlTWVtb3J5KTsKLSNlbmRpZgorICAgICAgICBpZiAoaXNBUk02NEUoKSkgeworICAgICAg
ICAgICAgaWYgKG1vZGUgIT0gV2FzbTo6TWVtb3J5TW9kZTo6U2lnbmFsaW5nKQorICAgICAgICAg
ICAgICAgIHNjcmF0Y2hPclNpemUgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcjsKKyAgICAgICAg
ICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBXYXNtOjpJ
bnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnlTaXplKCkpLCBzY3JhdGNoT3JTaXplKTsKICAg
ICAgICAgfSBlbHNlIHsKLSNpZiBDUFUoQVJNNjRFKQotICAgICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFdhc206Okluc3RhbmNlOjpvZmZzZXRP
ZkNhY2hlZE1lbW9yeVNpemUoKSksIHNjcmF0Y2gyR1BSKTsKLSAgICAgICAgICAgIGppdC5sb2Fk
UHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zm
c2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VNZW1vcnkpOwotICAgICAgICAgICAgaml0LnVudGFn
QXJyYXlQdHIoc2NyYXRjaDJHUFIsIGJhc2VNZW1vcnkpOwotI2Vsc2UKLSAgICAgICAgICAgIGpp
dC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoR1BSLCBXYXNtOjpJbnN0YW5j
ZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnkoKSksIGJhc2VNZW1vcnkpOwotI2VuZGlmCisgICAgICAg
ICAgICBpZiAobW9kZSAhPSBXYXNtOjpNZW1vcnlNb2RlOjpTaWduYWxpbmcpCisgICAgICAgICAg
ICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2hHUFIsIFdhc206
Okluc3RhbmNlOjpvZmZzZXRPZkNhY2hlZE1lbW9yeVNpemUoKSksIHBpbm5lZFJlZ3Muc2l6ZVJl
Z2lzdGVyKTsKICAgICAgICAgfQorCisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBXYXNtOjpJbnN0YW5jZTo6b2Zmc2V0T2ZDYWNoZWRNZW1vcnko
KSksIGJhc2VNZW1vcnkpOworICAgICAgICBqaXQuY2FnZUNvbmRpdGlvbmFsbHkoR2lnYWNhZ2U6
OlByaW1pdGl2ZSwgYmFzZU1lbW9yeSwgc2NyYXRjaE9yU2l6ZSk7CiAgICAgfQogCiAgICAgLy8g
V2UgdXNlIHRoaXMgY2FsbGVlIHRvIGluZGljYXRlIGhvdyB0byB1bndpbmQgcGFzdCB0aGVzZSB0
eXBlcyBvZiBmcmFtZXM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DYWdlZFB0ci5oIGIv
U291cmNlL1dURi93dGYvQ2FnZWRQdHIuaAppbmRleCA3YzgwZWZiNzc2NmU5MDVkYzE5ZmMxNzhl
OTBmNGY0YmE2ZGRkY2FjLi43MWVjNTFlMjk0N2I1YjJjYTA2ZWEyYzQwNTZkYWRjZWI5MzhkZjZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DYWdlZFB0ci5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0NhZ2VkUHRyLmgKQEAgLTc4LDcgKzc4LDcgQEAgcHVibGljOgogICAgIHR5cGVuYW1lIHN0
ZDo6ZW5hYmxlX2lmPCFzdGQ6OmlzX3NhbWU8dm9pZCwgVT46OnZhbHVlLCBUPjo6dHlwZSYKICAg
ICAvKiBUJiAqLyBhdCh1bnNpZ25lZCBpbmRleCwgdW5zaWduZWQgc2l6ZSkgY29uc3QgeyByZXR1
cm4gZ2V0KHNpemUpW2luZGV4XTsgfQogCi0gICAgdm9pZCByZWF1dGhlbnRpY2F0ZSh1bnNpZ25l
ZCBvbGRTaXplLCB1bnNpZ25lZCBuZXdTaXplKQorICAgIHZvaWQgcmVjYWdlKHVuc2lnbmVkIG9s
ZFNpemUsIHVuc2lnbmVkIG5ld1NpemUpCiAgICAgewogICAgICAgICBhdXRvIHB0ciA9IGdldChv
bGRTaXplKTsKICAgICAgICAgQVNTRVJUKHB0ciA9PSBnZXRVbnNhZmUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0dpZ2FjYWdlLmgKaW5kZXggYmNkZTM3YzM0YmRlMjY2NDU0NDAwNDM3NjIyOGZlYWJjYzYy
ZTQ1MC4uNzZkNzJkZjc0YTEzNmYwMjE5MTU1Y2YyMDhmN2M3Nzk1OGM0ZTk5NiAxMDA2NDQKLS0t
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5oCisrKyBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvR2lnYWNhZ2UuaApAQCAtMjI2LDcgKzIyNiw3IEBAIEJJTkxJTkUgc2l6ZV90IHNp
emUoS2luZCkgeyBCQ1JBU0goKTsgcmV0dXJuIDA7IH0KIEJJTkxJTkUgdm9pZCBlbnN1cmVHaWdh
Y2FnZSgpIHsgfQogQklOTElORSBib29sIHdhc0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQog
QklOTElORSBib29sIGlzQ2FnZWQoS2luZCwgY29uc3Qgdm9pZCopIHsgcmV0dXJuIHRydWU7IH0K
LUJJTkxJTkUgYm9vbCBpc0VuYWJsZWQoKSB7IHJldHVybiBmYWxzZTsgfQorQklOTElORSBib29s
IGlzRW5hYmxlZChLaW5kKSB7IHJldHVybiBmYWxzZTsgfQogdGVtcGxhdGU8dHlwZW5hbWUgVD4g
QklOTElORSBUKiBjYWdlZChLaW5kLCBUKiBwdHIpIHsgcmV0dXJuIHB0cjsgfQogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gQklOTElORSBUKiBjYWdlZE1heUJlTnVsbChLaW5kLCBUKiBwdHIpIHsgcmV0
dXJuIHB0cjsgfQogQklOTElORSB2b2lkIGRpc2FibGVEaXNhYmxpbmdQcmltaXRpdmVHaWdhY2Fn
ZUlmU2hvdWxkQmVFbmFibGVkKCkgeyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>