<?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>170227</bug_id>
          
          <creation_ts>2017-03-28 21:48:19 -0700</creation_ts>
          <short_desc>WebAssembly: add shell-only Memory mode helper</short_desc>
          <delta_ts>2017-03-29 10:45:06 -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>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>159775</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1292298</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 21:48:19 -0700</bug_when>
    <thetext>While hacking in JSC or testing the implementation, it&apos;s useful to be able to figure out which mode a Memory or an Instance&apos;s Memory is in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292299</commentid>
    <comment_count>1</comment_count>
      <attachid>305704</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 21:50:30 -0700</bug_when>
    <thetext>Created attachment 305704
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292304</commentid>
    <comment_count>2</comment_count>
      <attachid>305708</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 22:22:51 -0700</bug_when>
    <thetext>Created attachment 305708
patch

Missing private export.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292307</commentid>
    <comment_count>3</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-03-28 22:36:12 -0700</bug_when>
    <thetext>How do you plan to use this? I&apos;m skeptical of writing tests that assert the memory mode they are in. It&apos;s not clear that the OS guarantees that we can get any number of Signaling memories, especially if the system is under memory pressure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292314</commentid>
    <comment_count>4</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-28 23:22:59 -0700</bug_when>
    <thetext>(In reply to Keith Miller from comment #3)
&gt; How do you plan to use this? I&apos;m skeptical of writing tests that assert the
&gt; memory mode they are in. It&apos;s not clear that the OS guarantees that we can
&gt; get any number of Signaling memories, especially if the system is under
&gt; memory pressure.

I want to run some benchmarks and see which get fast memory, which don&apos;t. When I print out runtime numbers I can bin these differently.

Of course if I get zero Signaling or zero BoundsChecked, and I expected to get some, then I&apos;ll have to do something else. This tool won&apos;t solve that issue, it&apos;ll just make it apparent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292424</commentid>
    <comment_count>5</comment_count>
      <attachid>305745</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-29 09:19:04 -0700</bug_when>
    <thetext>Created attachment 305745
patch

Also export Instance / Module s_info, which is used by jsc.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292440</commentid>
    <comment_count>6</comment_count>
      <attachid>305745</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-29 09:55:46 -0700</bug_when>
    <thetext>Comment on attachment 305745
patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292441</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-29 09:56:08 -0700</bug_when>
    <thetext>Please fix build failures before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292442</commentid>
    <comment_count>8</comment_count>
      <attachid>305745</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-29 09:56:55 -0700</bug_when>
    <thetext>Comment on attachment 305745
patch

Attachment 305745 did not pass jsc-ews (mac):
Output: http://webkit-queues.webkit.org/results/3434349

New failing tests:
wasm.yaml/wasm/js-api/element.js.default-wasm
wasm.yaml/wasm/js-api/test_memory.js.default-wasm
wasm.yaml/wasm/function-tests/memory-section-and-import.js.default-wasm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292471</commentid>
    <comment_count>9</comment_count>
      <attachid>305756</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-29 10:30:30 -0700</bug_when>
    <thetext>Created attachment 305756
patch

The fix in assert.js un-hid actual failures in other tests, which I now fixed. They were just trying to match error strings which changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292473</commentid>
    <comment_count>10</comment_count>
      <attachid>305756</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-29 10:45:03 -0700</bug_when>
    <thetext>Comment on attachment 305756
patch

Clearing flags on attachment: 305756

Committed r214547: &lt;http://trac.webkit.org/changeset/214547&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292474</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-29 10:45:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305704</attachid>
            <date>2017-03-28 21:50:30 -0700</date>
            <delta_ts>2017-03-28 22:22:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssemblyMemoryMode.patch</filename>
            <type>text/plain</type>
            <size>9101</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA3MDMxNTBlNTI1M2Y4NTkzOTBiNWE1YmQ1ZDcyMzhjN2VhNmNhYWU5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDI4IE1hciAyMDE3IDIxOjUwOjA4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQXNz
ZW1ibHlNZW1vcnlNb2RlCgotLS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgMTYgKysrKysKIEpTVGVzdHMvd2FzbS9hc3NlcnQuanMgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDUgKy0KIEpTVGVzdHMvd2FzbS9qcy1hcGkvZXh0ZW5zaW9uLU1lbW9yeU1v
ZGUuanMgfCAxMDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICB8ICAxMSArKysKIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwICAgICAgICAgICAgICAgfCAgMjIgKysrKysrCiA1IGZpbGVzIGNoYW5nZWQs
IDE1NCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IEpT
VGVzdHMvd2FzbS9qcy1hcGkvZXh0ZW5zaW9uLU1lbW9yeU1vZGUuanMKCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY3MWRiYWYuLjVjMzk0
YzEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDMtMjggIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5OiBhZGQgc2hlbGwtb25seSBNZW1vcnkgbW9k
ZSBoZWxwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MDIyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogd2FzbS9hc3NlcnQuanM6IGZpeCBhIHByaW9yIGRlYnVnIHRoaW5nIEkgZm9yZ290IHRvIHJl
bW92ZQorICAgICAgICAqIHdhc20vanMtYXBpL2V4dGVuc2lvbi1NZW1vcnlNb2RlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGNvbnN0LnZhbGlkYXRlTW9kZS53aGF0LnN3aXRjaCk6CisgICAgICAgICh0
ZXN0TWVtb3J5Tm9NYXgpOgorICAgICAgICAodGVzdE1lbW9yeSk6CisgICAgICAgICh0ZXN0SW5z
dGFuY2VOb01lbW9yeSk6CisgICAgICAgICh0ZXN0SW5zdGFuY2VOb01heCk6CisgICAgICAgICh0
ZXN0SW5zdGFuY2UpOgorCiAyMDE3LTAzLTI4ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiBNYWtlIFdlYkFzc2VtYmx5Lmluc3Rh
bnRpYXRlL2NvbXBpbGUgdHJ1bHkgYXN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dh
c20vYXNzZXJ0LmpzIGIvSlNUZXN0cy93YXNtL2Fzc2VydC5qcwppbmRleCBlNzk0Mjg3Li5iNTQ0
ZDE5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzCisrKyBiL0pTVGVzdHMvd2Fz
bS9hc3NlcnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNDUsNiArNDUsOCBAQCBleHBvcnQgY29uc3Qgbm90U3RyaW5nID0gKHYsIG1z
ZykgPT4gaXNOb3RBKHYsICJzdHJpbmciLCBtc2cpOwogZXhwb3J0IGNvbnN0IGlzU3RyaW5nID0g
KHYsIG1zZykgPT4gaXNBKHYsICJzdHJpbmciLCBtc2cpOwogZXhwb3J0IGNvbnN0IG5vdE51bWJl
ciA9ICh2LCBtc2cpID0+IGlzTm90QSh2LCAibnVtYmVyIiwgbXNnKTsKIGV4cG9ydCBjb25zdCBp
c051bWJlciA9ICh2LCBtc2cpID0+IGlzQSh2LCAibnVtYmVyIiwgbXNnKTsKK2V4cG9ydCBjb25z
dCBub3RGdW5jdGlvbiA9ICh2LCBtc2cpID0+IGlzTm90QSh2LCAiZnVuY3Rpb24iLCBtc2cpOwor
ZXhwb3J0IGNvbnN0IGlzRnVuY3Rpb24gPSAodiwgbXNnKSA9PiBpc0EodiwgImZ1bmN0aW9uIiwg
bXNnKTsKIAogZXhwb3J0IGNvbnN0IGhhc09iamVjdFByb3BlcnR5ID0gKG8sIHAsIG1zZykgPT4g
ewogICAgIGlzT2JqZWN0KG8sIG1zZyk7CkBAIC0xMjcsNyArMTI5LDYgQEAgY29uc3QgX3Rocm93
cyA9IChmdW5jLCB0eXBlLCBtZXNzYWdlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgICAgICAg
aWYgKGNsZWFuTWVzc2FnZSA9PT0gbWVzc2FnZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZTsKICAgICAgICAgfQogICAg
ICAgICBfZmFpbChgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke3R5cGUubmFtZX0gd2l0aCBtZXNzYWdl
ICIke21lc3NhZ2V9IiwgZ290ICR7ZS5uYW1lfSB3aXRoIG1lc3NhZ2UgIiR7ZS5tZXNzYWdlfSJg
KTsKICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL2V4dGVuc2lvbi1NZW1v
cnlNb2RlLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9leHRlbnNpb24tTWVtb3J5TW9kZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTkxY2VjNAotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZXh0ZW5zaW9uLU1lbW9yeU1vZGUuanMKQEAgLTAs
MCArMSwxMDIgQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworaW1wb3J0
ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CisKK2NvbnN0IGl0ZXJhdGlvbnMgPSAz
MjsKKworLy8gVGhpcyBBUEkgaXNuJ3QgcGFydCBvZiBXZWJBc3NlbWJseSdzIG9mZmljaWFsIHNw
ZWMuIEl0IGlzIHVzZSBmb3IgdGVzdGluZyB3aXRoaW4gdGhlIHNoZWxsLgorCitjb25zdCB2ZXJz
aW9uID0gMHgwMTsKK2NvbnN0IGVtcHR5TW9kdWxlQXJyYXkgPSBVaW50OEFycmF5Lm9mKDB4MCwg
MHg2MSwgMHg3MywgMHg2ZCwgdmVyc2lvbiwgMHgwMCwgMHgwMCwgMHgwMCk7CisKK2Fzc2VydC5p
c0Z1bmN0aW9uKFdlYkFzc2VtYmx5TWVtb3J5TW9kZSk7CisKK2NvbnN0IG1lc3NhZ2UgPSBgV2Vi
QXNzZW1ibHlNZW1vcnlNb2RlIGV4cGVjdHMgZWl0aGVyIGEgV2ViQXNzZW1ibHkuTWVtb3J5IG9y
IFdlYkFzc2VtYmx5Lkluc3RhbmNlYDsKK2Fzc2VydC50aHJvd3MoKCkgPT4gV2ViQXNzZW1ibHlN
ZW1vcnlNb2RlKG51bGwpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworYXNzZXJ0LnRocm93cygoKSA9
PiBXZWJBc3NlbWJseU1lbW9yeU1vZGUodW5kZWZpbmVkKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsK
K2Fzc2VydC50aHJvd3MoKCkgPT4gV2ViQXNzZW1ibHlNZW1vcnlNb2RlKDEpLCBUeXBlRXJyb3Is
IG1lc3NhZ2UpOworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseU1lbW9yeU1vZGUoIiIp
LCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseU1l
bW9yeU1vZGUoe30pLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworYXNzZXJ0LnRocm93cygoKSA9PiBX
ZWJBc3NlbWJseU1lbW9yeU1vZGUobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShlbXB0eU1vZHVsZUFy
cmF5KSksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cithc3NlcnQudGhyb3dzKCgpID0+IFdlYkFzc2Vt
Ymx5TWVtb3J5TW9kZShuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6IDEsIGVsZW1lbnQ6
ICJhbnlmdW5jIn0pKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKworY29uc3QgdmFsaWRhdGVNb2Rl
ID0gd2hhdCA9PiB7CisgICAgY29uc3QgbW9kZSA9IFdlYkFzc2VtYmx5TWVtb3J5TW9kZSh3aGF0
KTsKKyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlICJTaWduYWxpbmciOgorICAgICAgICBi
cmVhazsKKyAgICBjYXNlICJCb3VuZHNDaGVja2luZyI6CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBXZWJBc3NlbWJseS5N
ZW1vcnkgbW9kZSAnJHttb2RlfSdgKTsKKyAgICB9CisgICAgcmV0dXJuIHdoYXQ7Cit9CisKK2Nv
bnN0IGluc3RhbnRpYXRlID0gYnVpbGRlciA9PiB7CisgICAgY29uc3QgYmluID0gYnVpbGRlci5X
ZWJBc3NlbWJseSgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
YmluLmdldCgpKTsKKyAgICByZXR1cm4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSk7
Cit9OworCisoZnVuY3Rpb24gdGVzdE1lbW9yeU5vTWF4KCkgeworICAgIGxldCBtZW1vcmllcyA9
IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpICE9IGl0ZXJhdGlvbnM7ICsraSkKKyAgICAgICAg
bWVtb3JpZXMucHVzaCh2YWxpZGF0ZU1vZGUobmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRp
YWw6IGkgfSkpKTsKKyAgICByZXR1cm4gbWVtb3JpZXM7Cit9KSgpOworCitmdWxsR0MoKTsKKwor
KGZ1bmN0aW9uIHRlc3RNZW1vcnkoKSB7CisgICAgbGV0IG1lbW9yaWVzID0gW107CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgIT0gaXRlcmF0aW9uczsgKytpKQorICAgICAgICBtZW1vcmllcy5wdXNo
KHZhbGlkYXRlTW9kZShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogaSwgbWF4aW11
bTogaSB9KSkpOworICAgIHJldHVybiBtZW1vcmllczsKK30pKCk7CisKK2Z1bGxHQygpOworCiso
ZnVuY3Rpb24gdGVzdEluc3RhbmNlTm9NZW1vcnkoKSB7CisgICAgbGV0IGluc3RhbmNlcyA9IFtd
OworICAgIGZvciAobGV0IGkgPSAwOyBpICE9IGl0ZXJhdGlvbnM7ICsraSkgeworICAgICAgICBj
b25zdCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgICAgIC5UeXBlKCkuRW5k
KCkKKyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAgICAgLkNvZGUo
KS5FbmQoKTsKKyAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW50aWF0ZShidWlsZGVyKTsK
KyAgICAgICAgLy8gTm8tbWVtb3J5IGluc3RhbmNlcyBzaG91bGQgbmV2ZXIgYmUgU2lnbmFsaW5n
OiBpdCB3b3VsZCBiZSB3YXN0ZWZ1bC4KKyAgICAgICAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5TWVt
b3J5TW9kZShpbnN0YW5jZSksICJCb3VuZHNDaGVja2luZyIpOworICAgICAgICBpbnN0YW5jZXMu
cHVzaChpbnN0YW5jZSk7CisgICAgfQorICAgIHJldHVybiBpbnN0YW5jZXM7Cit9KSgpOworCitm
dWxsR0MoKTsKKworKGZ1bmN0aW9uIHRlc3RJbnN0YW5jZU5vTWF4KCkgeworICAgIGxldCBpbnN0
YW5jZXMgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSAhPSBpdGVyYXRpb25zOyArK2kpIHsK
KyAgICAgICAgLy8gTm90ZTogbm90IGV4cG9ydGVkISBUaGUgaW50ZXJuYWwgQVBJIGNhbiBzdGls
bCBhY2Nlc3MuCisgICAgICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAg
ICAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQor
ICAgICAgICAgICAgICAuTWVtb3J5KCkuSW5pdGlhbE1heFBhZ2VzKGkpLkVuZCgpCisgICAgICAg
ICAgICAgIC5Db2RlKCkuRW5kKCk7CisgICAgICAgIGluc3RhbmNlcy5wdXNoKHZhbGlkYXRlTW9k
ZShpbnN0YW50aWF0ZShidWlsZGVyKSkpOworICAgIH0KK30pKCk7CisKK2Z1bGxHQygpOworCiso
ZnVuY3Rpb24gdGVzdEluc3RhbmNlKCkgeworICAgIGxldCBpbnN0YW5jZXMgPSBbXTsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSAhPSBpdGVyYXRpb25zOyArK2kpIHsKKyAgICAgICAgLy8gTm90ZTog
bm90IGV4cG9ydGVkISBUaGUgaW50ZXJuYWwgQVBJIGNhbiBzdGlsbCBhY2Nlc3MuCisgICAgICAg
IGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAgICAgLlR5cGUoKS5F
bmQoKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgICAgICAuTWVt
b3J5KCkuSW5pdGlhbE1heFBhZ2VzKGksIGkpLkVuZCgpCisgICAgICAgICAgICAgIC5Db2RlKCku
RW5kKCk7CisgICAgICAgIGluc3RhbmNlcy5wdXNoKHZhbGlkYXRlTW9kZShpbnN0YW50aWF0ZShi
dWlsZGVyKSkpOworICAgIH0KK30pKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4NzEz
ODNiLi44ODc4NWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNy0wMy0yOCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViQXNzZW1ibHk6IGFkZCBzaGVsbC1vbmx5IE1lbW9yeSBtb2RlIGhlbHBlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMjI3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAg
ICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbldlYkFz
c2VtYmx5TWVtb3J5TW9kZSk6CisKIDIwMTctMDMtMjggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFRoZSBNdXRhdG9yIHNob3VsZCBub3QgYmUgYWJsZSB0byBzdGVh
bCB0aGUgY29ubiBpZiB0aGUgQ29sbGVjdG9yIGhhc24ndCByZWFjaGVkIHRoZSBOb3RSdW5uaW5n
IHBoYXNlIHlldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZGQ2Y2FmZC4uMjJkZDA5MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKQEAgLTU3LDYgKzU3LDggQEAKICNpbmNsdWRlICJKU1N0cmluZy5o
IgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q2Fs
bGVlLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAiSlNX
ZWJBc3NlbWJseU1lbW9yeS5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIkxM
SW50VGh1bmtzLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKQEAgLTEwODQsNiAr
MTA4Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXN5
bmNUZXN0UGFzc2VkKEV4ZWNTdGF0ZSopOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25UZXN0V2FzbU1vZHVsZUZ1
bmN0aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlKEV4ZWNTdGF0ZSopOwogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoU0FNUExJTkdfRkxBR1MpCkBAIC0xMzU4LDYgKzEzNjEsNyBAQCBwcm90ZWN0ZWQ6
CiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAidGVz
dFdhc21Nb2R1bGVGdW5jdGlvbnMiLCBmdW5jdGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zLCAw
KTsKKyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJXZWJBc3NlbWJseU1lbW9yeU1vZGUiLCBmdW5j
dGlvbldlYkFzc2VtYmx5TWVtb3J5TW9kZSwgMSk7CiAjZW5kaWYKIAogICAgICAgICBpZiAoIWFy
Z3VtZW50cy5pc0VtcHR5KCkpIHsKQEAgLTMyNDYsNiArMzI1MCwyNCBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKEV4
ZWNTdGF0ZSogZQogICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKIH0KIAorc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XZWJBc3NlbWJseU1lbW9yeU1v
ZGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIAorICAgIGlmICghT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHkoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
Yywgc2NvcGUsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHlNZW1vcnlNb2RlIHNob3VsZCBvbmx5
IGJlIGNhbGxlZCBpZiB0aGUgdXNlV2ViQXNzZW1ibHkgb3B0aW9uIGlzIHNldCIpKTsKKworICAg
IGlmIChKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkuZ2V0T2JqZWN0KCkpIHsK
KyAgICAgICAgaWYgKGF1dG8qIG1lbW9yeSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1l
bW9yeSo+KHZtLCBvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1N0cmluZygmdm0sIG1ha2VTdHJpbmcobWVtb3J5LT5tZW1vcnkoKS5tb2RlKCkpKSk7CisgICAg
ICAgIGlmIChhdXRvKiBpbnN0YW5jZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseUluc3Rh
bmNlKj4odm0sIG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
U3RyaW5nKCZ2bSwgbWFrZVN0cmluZyhpbnN0YW5jZS0+bWVtb3J5TW9kZSgpKSkpOworICAgIH0K
KworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IldlYkFzc2VtYmx5TWVtb3J5TW9kZSBleHBlY3RzIGVpdGhlciBhIFdlYkFzc2VtYmx5Lk1lbW9y
eSBvciBXZWJBc3NlbWJseS5JbnN0YW5jZSIpKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShXRUJB
U1NFQkxZKQogCiAvLyBVc2UgU0VIIGZvciBSZWxlYXNlIGJ1aWxkcyBvbmx5IHRvIGdldCByaWQg
b2YgdGhlIGNyYXNoIHJlcG9ydCBkaWFsb2cKLS0gCjIuOS4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305708</attachid>
            <date>2017-03-28 22:22:51 -0700</date>
            <delta_ts>2017-03-29 09:19:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssemblyMemoryMode.patch</filename>
            <type>text/plain</type>
            <size>9727</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBiYzA3MzI0ZmFlODYyODZhOWU0ZTE0ZjdmZjM2MmUxZDNkZjljNDkxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUdWUsIDI4IE1hciAyMDE3IDIxOjUwOjA4IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQXNz
ZW1ibHlNZW1vcnlNb2RlCgotLS0KIEpTVGVzdHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgMTYgKysrKysKIEpTVGVzdHMvd2FzbS9hc3NlcnQuanMgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDUgKy0KIEpTVGVzdHMvd2FzbS9qcy1hcGkvZXh0ZW5zaW9uLU1lbW9yeU1v
ZGUuanMgfCAxMDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICB8ICAxMSArKysKIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwICAgICAgICAgICAgICAgfCAgMjIgKysrKysrCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTWVtb3J5LmggICAgIHwgICAyICstCiA2IGZpbGVzIGNoYW5nZWQsIDE1
NSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVz
dHMvd2FzbS9qcy1hcGkvZXh0ZW5zaW9uLU1lbW9yeU1vZGUuanMKCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY3MWRiYWYuLjVjMzk0YzEg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTctMDMtMjggIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5OiBhZGQgc2hlbGwtb25seSBNZW1vcnkgbW9kZSBo
ZWxwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
MDIyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
d2FzbS9hc3NlcnQuanM6IGZpeCBhIHByaW9yIGRlYnVnIHRoaW5nIEkgZm9yZ290IHRvIHJlbW92
ZQorICAgICAgICAqIHdhc20vanMtYXBpL2V4dGVuc2lvbi1NZW1vcnlNb2RlLmpzOiBBZGRlZC4K
KyAgICAgICAgKGNvbnN0LnZhbGlkYXRlTW9kZS53aGF0LnN3aXRjaCk6CisgICAgICAgICh0ZXN0
TWVtb3J5Tm9NYXgpOgorICAgICAgICAodGVzdE1lbW9yeSk6CisgICAgICAgICh0ZXN0SW5zdGFu
Y2VOb01lbW9yeSk6CisgICAgICAgICh0ZXN0SW5zdGFuY2VOb01heCk6CisgICAgICAgICh0ZXN0
SW5zdGFuY2UpOgorCiAyMDE3LTAzLTI4ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiBNYWtlIFdlYkFzc2VtYmx5Lmluc3RhbnRp
YXRlL2NvbXBpbGUgdHJ1bHkgYXN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20v
YXNzZXJ0LmpzIGIvSlNUZXN0cy93YXNtL2Fzc2VydC5qcwppbmRleCBlNzk0Mjg3Li5iNTQ0ZDE5
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9h
c3NlcnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDUsNiArNDUsOCBAQCBleHBvcnQgY29uc3Qgbm90U3RyaW5nID0gKHYsIG1zZykg
PT4gaXNOb3RBKHYsICJzdHJpbmciLCBtc2cpOwogZXhwb3J0IGNvbnN0IGlzU3RyaW5nID0gKHYs
IG1zZykgPT4gaXNBKHYsICJzdHJpbmciLCBtc2cpOwogZXhwb3J0IGNvbnN0IG5vdE51bWJlciA9
ICh2LCBtc2cpID0+IGlzTm90QSh2LCAibnVtYmVyIiwgbXNnKTsKIGV4cG9ydCBjb25zdCBpc051
bWJlciA9ICh2LCBtc2cpID0+IGlzQSh2LCAibnVtYmVyIiwgbXNnKTsKK2V4cG9ydCBjb25zdCBu
b3RGdW5jdGlvbiA9ICh2LCBtc2cpID0+IGlzTm90QSh2LCAiZnVuY3Rpb24iLCBtc2cpOworZXhw
b3J0IGNvbnN0IGlzRnVuY3Rpb24gPSAodiwgbXNnKSA9PiBpc0EodiwgImZ1bmN0aW9uIiwgbXNn
KTsKIAogZXhwb3J0IGNvbnN0IGhhc09iamVjdFByb3BlcnR5ID0gKG8sIHAsIG1zZykgPT4gewog
ICAgIGlzT2JqZWN0KG8sIG1zZyk7CkBAIC0xMjcsNyArMTI5LDYgQEAgY29uc3QgX3Rocm93cyA9
IChmdW5jLCB0eXBlLCBtZXNzYWdlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgICAgICAgaWYg
KGNsZWFuTWVzc2FnZSA9PT0gbWVzc2FnZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZTsKICAgICAgICAgfQogICAgICAg
ICBfZmFpbChgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke3R5cGUubmFtZX0gd2l0aCBtZXNzYWdlICIk
e21lc3NhZ2V9IiwgZ290ICR7ZS5uYW1lfSB3aXRoIG1lc3NhZ2UgIiR7ZS5tZXNzYWdlfSJgKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL2V4dGVuc2lvbi1NZW1vcnlN
b2RlLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9leHRlbnNpb24tTWVtb3J5TW9kZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTkxY2VjNAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZXh0ZW5zaW9uLU1lbW9yeU1vZGUuanMKQEAgLTAsMCAr
MSwxMDIgQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworaW1wb3J0ICog
YXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CisKK2NvbnN0IGl0ZXJhdGlvbnMgPSAzMjsK
KworLy8gVGhpcyBBUEkgaXNuJ3QgcGFydCBvZiBXZWJBc3NlbWJseSdzIG9mZmljaWFsIHNwZWMu
IEl0IGlzIHVzZSBmb3IgdGVzdGluZyB3aXRoaW4gdGhlIHNoZWxsLgorCitjb25zdCB2ZXJzaW9u
ID0gMHgwMTsKK2NvbnN0IGVtcHR5TW9kdWxlQXJyYXkgPSBVaW50OEFycmF5Lm9mKDB4MCwgMHg2
MSwgMHg3MywgMHg2ZCwgdmVyc2lvbiwgMHgwMCwgMHgwMCwgMHgwMCk7CisKK2Fzc2VydC5pc0Z1
bmN0aW9uKFdlYkFzc2VtYmx5TWVtb3J5TW9kZSk7CisKK2NvbnN0IG1lc3NhZ2UgPSBgV2ViQXNz
ZW1ibHlNZW1vcnlNb2RlIGV4cGVjdHMgZWl0aGVyIGEgV2ViQXNzZW1ibHkuTWVtb3J5IG9yIFdl
YkFzc2VtYmx5Lkluc3RhbmNlYDsKK2Fzc2VydC50aHJvd3MoKCkgPT4gV2ViQXNzZW1ibHlNZW1v
cnlNb2RlKG51bGwpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworYXNzZXJ0LnRocm93cygoKSA9PiBX
ZWJBc3NlbWJseU1lbW9yeU1vZGUodW5kZWZpbmVkKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK2Fz
c2VydC50aHJvd3MoKCkgPT4gV2ViQXNzZW1ibHlNZW1vcnlNb2RlKDEpLCBUeXBlRXJyb3IsIG1l
c3NhZ2UpOworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseU1lbW9yeU1vZGUoIiIpLCBU
eXBlRXJyb3IsIG1lc3NhZ2UpOworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseU1lbW9y
eU1vZGUoe30pLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJB
c3NlbWJseU1lbW9yeU1vZGUobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShlbXB0eU1vZHVsZUFycmF5
KSksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cithc3NlcnQudGhyb3dzKCgpID0+IFdlYkFzc2VtYmx5
TWVtb3J5TW9kZShuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJh
bnlmdW5jIn0pKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKworY29uc3QgdmFsaWRhdGVNb2RlID0g
d2hhdCA9PiB7CisgICAgY29uc3QgbW9kZSA9IFdlYkFzc2VtYmx5TWVtb3J5TW9kZSh3aGF0KTsK
KyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlICJTaWduYWxpbmciOgorICAgICAgICBicmVh
azsKKyAgICBjYXNlICJCb3VuZHNDaGVja2luZyI6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBXZWJBc3NlbWJseS5NZW1v
cnkgbW9kZSAnJHttb2RlfSdgKTsKKyAgICB9CisgICAgcmV0dXJuIHdoYXQ7Cit9CisKK2NvbnN0
IGluc3RhbnRpYXRlID0gYnVpbGRlciA9PiB7CisgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJB
c3NlbWJseSgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmlu
LmdldCgpKTsKKyAgICByZXR1cm4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSk7Cit9
OworCisoZnVuY3Rpb24gdGVzdE1lbW9yeU5vTWF4KCkgeworICAgIGxldCBtZW1vcmllcyA9IFtd
OworICAgIGZvciAobGV0IGkgPSAwOyBpICE9IGl0ZXJhdGlvbnM7ICsraSkKKyAgICAgICAgbWVt
b3JpZXMucHVzaCh2YWxpZGF0ZU1vZGUobmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6
IGkgfSkpKTsKKyAgICByZXR1cm4gbWVtb3JpZXM7Cit9KSgpOworCitmdWxsR0MoKTsKKworKGZ1
bmN0aW9uIHRlc3RNZW1vcnkoKSB7CisgICAgbGV0IG1lbW9yaWVzID0gW107CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgIT0gaXRlcmF0aW9uczsgKytpKQorICAgICAgICBtZW1vcmllcy5wdXNoKHZh
bGlkYXRlTW9kZShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogaSwgbWF4aW11bTog
aSB9KSkpOworICAgIHJldHVybiBtZW1vcmllczsKK30pKCk7CisKK2Z1bGxHQygpOworCisoZnVu
Y3Rpb24gdGVzdEluc3RhbmNlTm9NZW1vcnkoKSB7CisgICAgbGV0IGluc3RhbmNlcyA9IFtdOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpICE9IGl0ZXJhdGlvbnM7ICsraSkgeworICAgICAgICBjb25z
dCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgICAgIC5UeXBlKCkuRW5kKCkK
KyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAgICAgLkNvZGUoKS5F
bmQoKTsKKyAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW50aWF0ZShidWlsZGVyKTsKKyAg
ICAgICAgLy8gTm8tbWVtb3J5IGluc3RhbmNlcyBzaG91bGQgbmV2ZXIgYmUgU2lnbmFsaW5nOiBp
dCB3b3VsZCBiZSB3YXN0ZWZ1bC4KKyAgICAgICAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5TWVtb3J5
TW9kZShpbnN0YW5jZSksICJCb3VuZHNDaGVja2luZyIpOworICAgICAgICBpbnN0YW5jZXMucHVz
aChpbnN0YW5jZSk7CisgICAgfQorICAgIHJldHVybiBpbnN0YW5jZXM7Cit9KSgpOworCitmdWxs
R0MoKTsKKworKGZ1bmN0aW9uIHRlc3RJbnN0YW5jZU5vTWF4KCkgeworICAgIGxldCBpbnN0YW5j
ZXMgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSAhPSBpdGVyYXRpb25zOyArK2kpIHsKKyAg
ICAgICAgLy8gTm90ZTogbm90IGV4cG9ydGVkISBUaGUgaW50ZXJuYWwgQVBJIGNhbiBzdGlsbCBh
Y2Nlc3MuCisgICAgICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAg
ICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAg
ICAgICAgICAgICAuTWVtb3J5KCkuSW5pdGlhbE1heFBhZ2VzKGkpLkVuZCgpCisgICAgICAgICAg
ICAgIC5Db2RlKCkuRW5kKCk7CisgICAgICAgIGluc3RhbmNlcy5wdXNoKHZhbGlkYXRlTW9kZShp
bnN0YW50aWF0ZShidWlsZGVyKSkpOworICAgIH0KK30pKCk7CisKK2Z1bGxHQygpOworCisoZnVu
Y3Rpb24gdGVzdEluc3RhbmNlKCkgeworICAgIGxldCBpbnN0YW5jZXMgPSBbXTsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSAhPSBpdGVyYXRpb25zOyArK2kpIHsKKyAgICAgICAgLy8gTm90ZTogbm90
IGV4cG9ydGVkISBUaGUgaW50ZXJuYWwgQVBJIGNhbiBzdGlsbCBhY2Nlc3MuCisgICAgICAgIGNv
bnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAgICAgLlR5cGUoKS5FbmQo
KQorICAgICAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgICAgICAuTWVtb3J5
KCkuSW5pdGlhbE1heFBhZ2VzKGksIGkpLkVuZCgpCisgICAgICAgICAgICAgIC5Db2RlKCkuRW5k
KCk7CisgICAgICAgIGluc3RhbmNlcy5wdXNoKHZhbGlkYXRlTW9kZShpbnN0YW50aWF0ZShidWls
ZGVyKSkpOworICAgIH0KK30pKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4NzEzODNi
Li44ODc4NWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
Ny0wMy0yOCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
QXNzZW1ibHk6IGFkZCBzaGVsbC1vbmx5IE1lbW9yeSBtb2RlIGhlbHBlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMjI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAo
R2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbldlYkFzc2Vt
Ymx5TWVtb3J5TW9kZSk6CisKIDIwMTctMDMtMjggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUu
Y29tPgogCiAgICAgICAgIFRoZSBNdXRhdG9yIHNob3VsZCBub3QgYmUgYWJsZSB0byBzdGVhbCB0
aGUgY29ubiBpZiB0aGUgQ29sbGVjdG9yIGhhc24ndCByZWFjaGVkIHRoZSBOb3RSdW5uaW5nIHBo
YXNlIHlldC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZGQ2Y2FmZC4uMjJkZDA5MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKQEAgLTU3LDYgKzU3LDggQEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgog
I2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q2FsbGVl
LmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAiSlNXZWJB
c3NlbWJseU1lbW9yeS5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIkxMSW50
VGh1bmtzLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKQEAgLTEwODQsNiArMTA4
Niw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXN5bmNU
ZXN0UGFzc2VkKEV4ZWNTdGF0ZSopOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25UZXN0V2FzbU1vZHVsZUZ1bmN0
aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlKEV4ZWNTdGF0ZSopOwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoU0FNUExJTkdfRkxBR1MpCkBAIC0xMzU4LDYgKzEzNjEsNyBAQCBwcm90ZWN0ZWQ6CiAK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAidGVzdFdh
c21Nb2R1bGVGdW5jdGlvbnMiLCBmdW5jdGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zLCAwKTsK
KyAgICAgICAgYWRkRnVuY3Rpb24odm0sICJXZWJBc3NlbWJseU1lbW9yeU1vZGUiLCBmdW5jdGlv
bldlYkFzc2VtYmx5TWVtb3J5TW9kZSwgMSk7CiAjZW5kaWYKIAogICAgICAgICBpZiAoIWFyZ3Vt
ZW50cy5pc0VtcHR5KCkpIHsKQEAgLTMyNDYsNiArMzI1MCwyNCBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKEV4ZWNT
dGF0ZSogZQogICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKIH0KIAorc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XZWJBc3NlbWJseU1lbW9yeU1vZGUo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIAorICAgIGlmICghT3B0aW9uczo6
dXNlV2ViQXNzZW1ibHkoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
c2NvcGUsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHlNZW1vcnlNb2RlIHNob3VsZCBvbmx5IGJl
IGNhbGxlZCBpZiB0aGUgdXNlV2ViQXNzZW1ibHkgb3B0aW9uIGlzIHNldCIpKTsKKworICAgIGlm
IChKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkuZ2V0T2JqZWN0KCkpIHsKKyAg
ICAgICAgaWYgKGF1dG8qIG1lbW9yeSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1lbW9y
eSo+KHZtLCBvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZygmdm0sIG1ha2VTdHJpbmcobWVtb3J5LT5tZW1vcnkoKS5tb2RlKCkpKSk7CisgICAgICAg
IGlmIChhdXRvKiBpbnN0YW5jZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNl
Kj4odm0sIG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKCZ2bSwgbWFrZVN0cmluZyhpbnN0YW5jZS0+bWVtb3J5TW9kZSgpKSkpOworICAgIH0KKwor
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIldl
YkFzc2VtYmx5TWVtb3J5TW9kZSBleHBlY3RzIGVpdGhlciBhIFdlYkFzc2VtYmx5Lk1lbW9yeSBv
ciBXZWJBc3NlbWJseS5JbnN0YW5jZSIpKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NF
QkxZKQogCiAvLyBVc2UgU0VIIGZvciBSZWxlYXNlIGJ1aWxkcyBvbmx5IHRvIGdldCByaWQgb2Yg
dGhlIGNyYXNoIHJlcG9ydCBkaWFsb2cKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21NZW1vcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1v
cnkuaAppbmRleCA0NGRhMGRmLi42ZjA5MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTWVtb3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbU1lbW9yeS5oCkBAIC01MSw3ICs1MSw3IEBAIGVudW0gY2xhc3MgTWVtb3J5TW9kZSA6IHVp
bnQ4X3QgewogICAgIE51bWJlck9mTWVtb3J5TW9kZXMKIH07CiBzdGF0aWMgY29uc3RleHByIHNp
emVfdCBOdW1iZXJPZk1lbW9yeU1vZGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihNZW1vcnlNb2Rl
OjpOdW1iZXJPZk1lbW9yeU1vZGVzKTsKLWNvbnN0IGNoYXIqIG1ha2VTdHJpbmcoTWVtb3J5TW9k
ZSk7CitKU19FWFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBtYWtlU3RyaW5nKE1lbW9yeU1vZGUp
OwogCiBjbGFzcyBNZW1vcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxNZW1vcnk+IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShNZW1vcnkpOwotLSAKMi45LjMKCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305745</attachid>
            <date>2017-03-29 09:19:04 -0700</date>
            <delta_ts>2017-03-29 10:30:30 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-MemoryMode.patch</filename>
            <type>text/plain</type>
            <size>11530</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA2OGYwZTc5ODQwNDEzZjAwNGM0Y2JhODk0MzM3MmVjOTU5ZmY0MTBkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDI5IE1hciAyMDE3IDA5OjE4OjE1IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gTWVtb3J5
TW9kZQoKLS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAxNyArKysrCiBKU1Rlc3RzL3dhc20vYXNzZXJ0LmpzICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgNSArLQogSlNUZXN0cy93YXNtL2pzLWFwaS9leHRlbnNpb24tTWVtb3J5
TW9kZS5qcyAgICAgICAgfCAxMDIgKysrKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8ICAxNCArKysKIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwICAgICAgICAgICAgICAgICAgICAgIHwgIDIyICsrKysrCiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmggICAgICAgICAgICB8ICAgMiAr
LQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmggfCAg
IDQgKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaCAg
IHwgICAyICstCiA4IGZpbGVzIGNoYW5nZWQsIDE2MiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9u
cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IEpTVGVzdHMvd2FzbS9qcy1hcGkvZXh0ZW5zaW9uLU1l
bW9yeU1vZGUuanMKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGY3MWRiYWYuLmQwYzRhZTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTctMDMtMjkg
IEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5
OiBhZGQgc2hlbGwtb25seSBNZW1vcnkgbW9kZSBoZWxwZXIKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDIyNworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2FzbS9hc3NlcnQuanM6IGZpeCBhIHByaW9y
IGRlYnVnIHRoaW5nIEkgZm9yZ290IHRvIHJlbW92ZQorICAgICAgICAqIHdhc20vYXNzZXJ0Lmpz
OgorICAgICAgICAqIHdhc20vanMtYXBpL2V4dGVuc2lvbi1NZW1vcnlNb2RlLmpzOiBBZGRlZC4K
KyAgICAgICAgKGNvbnN0LnZhbGlkYXRlTW9kZS53aGF0LnN3aXRjaCk6CisgICAgICAgICh0ZXN0
TWVtb3J5Tm9NYXgpOgorICAgICAgICAodGVzdE1lbW9yeSk6CisgICAgICAgICh0ZXN0SW5zdGFu
Y2VOb01lbW9yeSk6CisgICAgICAgICh0ZXN0SW5zdGFuY2VOb01heCk6CisgICAgICAgICh0ZXN0
SW5zdGFuY2UpOgorCiAyMDE3LTAzLTI4ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYkFzc2VtYmx5OiBNYWtlIFdlYkFzc2VtYmx5Lmluc3RhbnRp
YXRlL2NvbXBpbGUgdHJ1bHkgYXN5bmNocm9ub3VzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20v
YXNzZXJ0LmpzIGIvSlNUZXN0cy93YXNtL2Fzc2VydC5qcwppbmRleCBlNzk0Mjg3Li5iNTQ0ZDE5
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vYXNzZXJ0LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9h
c3NlcnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDUsNiArNDUsOCBAQCBleHBvcnQgY29uc3Qgbm90U3RyaW5nID0gKHYsIG1zZykg
PT4gaXNOb3RBKHYsICJzdHJpbmciLCBtc2cpOwogZXhwb3J0IGNvbnN0IGlzU3RyaW5nID0gKHYs
IG1zZykgPT4gaXNBKHYsICJzdHJpbmciLCBtc2cpOwogZXhwb3J0IGNvbnN0IG5vdE51bWJlciA9
ICh2LCBtc2cpID0+IGlzTm90QSh2LCAibnVtYmVyIiwgbXNnKTsKIGV4cG9ydCBjb25zdCBpc051
bWJlciA9ICh2LCBtc2cpID0+IGlzQSh2LCAibnVtYmVyIiwgbXNnKTsKK2V4cG9ydCBjb25zdCBu
b3RGdW5jdGlvbiA9ICh2LCBtc2cpID0+IGlzTm90QSh2LCAiZnVuY3Rpb24iLCBtc2cpOworZXhw
b3J0IGNvbnN0IGlzRnVuY3Rpb24gPSAodiwgbXNnKSA9PiBpc0EodiwgImZ1bmN0aW9uIiwgbXNn
KTsKIAogZXhwb3J0IGNvbnN0IGhhc09iamVjdFByb3BlcnR5ID0gKG8sIHAsIG1zZykgPT4gewog
ICAgIGlzT2JqZWN0KG8sIG1zZyk7CkBAIC0xMjcsNyArMTI5LDYgQEAgY29uc3QgX3Rocm93cyA9
IChmdW5jLCB0eXBlLCBtZXNzYWdlLCAuLi5hcmdzKSA9PiB7CiAgICAgICAgICAgICAgICAgaWYg
KGNsZWFuTWVzc2FnZSA9PT0gbWVzc2FnZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGU7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZTsKICAgICAgICAgfQogICAgICAg
ICBfZmFpbChgRXhwZWN0ZWQgdG8gdGhyb3cgYSAke3R5cGUubmFtZX0gd2l0aCBtZXNzYWdlICIk
e21lc3NhZ2V9IiwgZ290ICR7ZS5uYW1lfSB3aXRoIG1lc3NhZ2UgIiR7ZS5tZXNzYWdlfSJgKTsK
ICAgICB9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL2V4dGVuc2lvbi1NZW1vcnlN
b2RlLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9leHRlbnNpb24tTWVtb3J5TW9kZS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTkxY2VjNAotLS0gL2Rldi9udWxsCisr
KyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvZXh0ZW5zaW9uLU1lbW9yeU1vZGUuanMKQEAgLTAsMCAr
MSwxMDIgQEAKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworaW1wb3J0ICog
YXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CisKK2NvbnN0IGl0ZXJhdGlvbnMgPSAzMjsK
KworLy8gVGhpcyBBUEkgaXNuJ3QgcGFydCBvZiBXZWJBc3NlbWJseSdzIG9mZmljaWFsIHNwZWMu
IEl0IGlzIHVzZSBmb3IgdGVzdGluZyB3aXRoaW4gdGhlIHNoZWxsLgorCitjb25zdCB2ZXJzaW9u
ID0gMHgwMTsKK2NvbnN0IGVtcHR5TW9kdWxlQXJyYXkgPSBVaW50OEFycmF5Lm9mKDB4MCwgMHg2
MSwgMHg3MywgMHg2ZCwgdmVyc2lvbiwgMHgwMCwgMHgwMCwgMHgwMCk7CisKK2Fzc2VydC5pc0Z1
bmN0aW9uKFdlYkFzc2VtYmx5TWVtb3J5TW9kZSk7CisKK2NvbnN0IG1lc3NhZ2UgPSBgV2ViQXNz
ZW1ibHlNZW1vcnlNb2RlIGV4cGVjdHMgZWl0aGVyIGEgV2ViQXNzZW1ibHkuTWVtb3J5IG9yIFdl
YkFzc2VtYmx5Lkluc3RhbmNlYDsKK2Fzc2VydC50aHJvd3MoKCkgPT4gV2ViQXNzZW1ibHlNZW1v
cnlNb2RlKG51bGwpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworYXNzZXJ0LnRocm93cygoKSA9PiBX
ZWJBc3NlbWJseU1lbW9yeU1vZGUodW5kZWZpbmVkKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK2Fz
c2VydC50aHJvd3MoKCkgPT4gV2ViQXNzZW1ibHlNZW1vcnlNb2RlKDEpLCBUeXBlRXJyb3IsIG1l
c3NhZ2UpOworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseU1lbW9yeU1vZGUoIiIpLCBU
eXBlRXJyb3IsIG1lc3NhZ2UpOworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseU1lbW9y
eU1vZGUoe30pLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJB
c3NlbWJseU1lbW9yeU1vZGUobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShlbXB0eU1vZHVsZUFycmF5
KSksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cithc3NlcnQudGhyb3dzKCgpID0+IFdlYkFzc2VtYmx5
TWVtb3J5TW9kZShuZXcgV2ViQXNzZW1ibHkuVGFibGUoe2luaXRpYWw6IDEsIGVsZW1lbnQ6ICJh
bnlmdW5jIn0pKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKKworY29uc3QgdmFsaWRhdGVNb2RlID0g
d2hhdCA9PiB7CisgICAgY29uc3QgbW9kZSA9IFdlYkFzc2VtYmx5TWVtb3J5TW9kZSh3aGF0KTsK
KyAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICBjYXNlICJTaWduYWxpbmciOgorICAgICAgICBicmVh
azsKKyAgICBjYXNlICJCb3VuZHNDaGVja2luZyI6CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1
bHQ6CisgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBXZWJBc3NlbWJseS5NZW1v
cnkgbW9kZSAnJHttb2RlfSdgKTsKKyAgICB9CisgICAgcmV0dXJuIHdoYXQ7Cit9CisKK2NvbnN0
IGluc3RhbnRpYXRlID0gYnVpbGRlciA9PiB7CisgICAgY29uc3QgYmluID0gYnVpbGRlci5XZWJB
c3NlbWJseSgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmlu
LmdldCgpKTsKKyAgICByZXR1cm4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSk7Cit9
OworCisoZnVuY3Rpb24gdGVzdE1lbW9yeU5vTWF4KCkgeworICAgIGxldCBtZW1vcmllcyA9IFtd
OworICAgIGZvciAobGV0IGkgPSAwOyBpICE9IGl0ZXJhdGlvbnM7ICsraSkKKyAgICAgICAgbWVt
b3JpZXMucHVzaCh2YWxpZGF0ZU1vZGUobmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7IGluaXRpYWw6
IGkgfSkpKTsKKyAgICByZXR1cm4gbWVtb3JpZXM7Cit9KSgpOworCitmdWxsR0MoKTsKKworKGZ1
bmN0aW9uIHRlc3RNZW1vcnkoKSB7CisgICAgbGV0IG1lbW9yaWVzID0gW107CisgICAgZm9yIChs
ZXQgaSA9IDA7IGkgIT0gaXRlcmF0aW9uczsgKytpKQorICAgICAgICBtZW1vcmllcy5wdXNoKHZh
bGlkYXRlTW9kZShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5pdGlhbDogaSwgbWF4aW11bTog
aSB9KSkpOworICAgIHJldHVybiBtZW1vcmllczsKK30pKCk7CisKK2Z1bGxHQygpOworCisoZnVu
Y3Rpb24gdGVzdEluc3RhbmNlTm9NZW1vcnkoKSB7CisgICAgbGV0IGluc3RhbmNlcyA9IFtdOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpICE9IGl0ZXJhdGlvbnM7ICsraSkgeworICAgICAgICBjb25z
dCBidWlsZGVyID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgICAgICAgIC5UeXBlKCkuRW5kKCkK
KyAgICAgICAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgICAgICAgLkNvZGUoKS5F
bmQoKTsKKyAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBpbnN0YW50aWF0ZShidWlsZGVyKTsKKyAg
ICAgICAgLy8gTm8tbWVtb3J5IGluc3RhbmNlcyBzaG91bGQgbmV2ZXIgYmUgU2lnbmFsaW5nOiBp
dCB3b3VsZCBiZSB3YXN0ZWZ1bC4KKyAgICAgICAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5TWVtb3J5
TW9kZShpbnN0YW5jZSksICJCb3VuZHNDaGVja2luZyIpOworICAgICAgICBpbnN0YW5jZXMucHVz
aChpbnN0YW5jZSk7CisgICAgfQorICAgIHJldHVybiBpbnN0YW5jZXM7Cit9KSgpOworCitmdWxs
R0MoKTsKKworKGZ1bmN0aW9uIHRlc3RJbnN0YW5jZU5vTWF4KCkgeworICAgIGxldCBpbnN0YW5j
ZXMgPSBbXTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSAhPSBpdGVyYXRpb25zOyArK2kpIHsKKyAg
ICAgICAgLy8gTm90ZTogbm90IGV4cG9ydGVkISBUaGUgaW50ZXJuYWwgQVBJIGNhbiBzdGlsbCBh
Y2Nlc3MuCisgICAgICAgIGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAg
ICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAg
ICAgICAgICAgICAuTWVtb3J5KCkuSW5pdGlhbE1heFBhZ2VzKGkpLkVuZCgpCisgICAgICAgICAg
ICAgIC5Db2RlKCkuRW5kKCk7CisgICAgICAgIGluc3RhbmNlcy5wdXNoKHZhbGlkYXRlTW9kZShp
bnN0YW50aWF0ZShidWlsZGVyKSkpOworICAgIH0KK30pKCk7CisKK2Z1bGxHQygpOworCisoZnVu
Y3Rpb24gdGVzdEluc3RhbmNlKCkgeworICAgIGxldCBpbnN0YW5jZXMgPSBbXTsKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSAhPSBpdGVyYXRpb25zOyArK2kpIHsKKyAgICAgICAgLy8gTm90ZTogbm90
IGV4cG9ydGVkISBUaGUgaW50ZXJuYWwgQVBJIGNhbiBzdGlsbCBhY2Nlc3MuCisgICAgICAgIGNv
bnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAgICAgLlR5cGUoKS5FbmQo
KQorICAgICAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgICAgICAuTWVtb3J5
KCkuSW5pdGlhbE1heFBhZ2VzKGksIGkpLkVuZCgpCisgICAgICAgICAgICAgIC5Db2RlKCkuRW5k
KCk7CisgICAgICAgIGluc3RhbmNlcy5wdXNoKHZhbGlkYXRlTW9kZShpbnN0YW50aWF0ZShidWls
ZGVyKSkpOworICAgIH0KK30pKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAxMzBjZGFl
Li5lNWU0ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Ny0wMy0yOSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
QXNzZW1ibHk6IGFkZCBzaGVsbC1vbmx5IE1lbW9yeSBtb2RlIGhlbHBlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMjI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAo
R2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbldlYkFzc2Vt
Ymx5TWVtb3J5TW9kZSk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5Lmg6CisgICAgICAgICog
d2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaDoKKyAgICAgICAgKiB3YXNtL2pzL0pTV2Vi
QXNzZW1ibHlNZW1vcnkuaDoKKwogMjAxNy0wMy0yOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KIAogICAgICAgICBBc3NlbWJseUhlbHBlcnMgc2hvdWxkIG5vdCBoYXZlIGEgVk0g
ZmllbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZGQ2Y2FmZC4uMjJkZDA5MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKQEAgLTU3LDYgKzU3LDggQEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2lu
Y2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q2FsbGVlLmgi
CisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAiSlNXZWJBc3Nl
bWJseU1lbW9yeS5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIkxMSW50VGh1
bmtzLmgiCiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKQEAgLTEwODQsNiArMTA4Niw3
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXN5bmNUZXN0
UGFzc2VkKEV4ZWNTdGF0ZSopOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25UZXN0V2FzbU1vZHVsZUZ1bmN0aW9u
cyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uV2ViQXNzZW1ibHlNZW1vcnlNb2RlKEV4ZWNTdGF0ZSopOwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoU0FNUExJTkdfRkxBR1MpCkBAIC0xMzU4LDYgKzEzNjEsNyBAQCBwcm90ZWN0ZWQ6CiAKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAidGVzdFdhc21N
b2R1bGVGdW5jdGlvbnMiLCBmdW5jdGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zLCAwKTsKKyAg
ICAgICAgYWRkRnVuY3Rpb24odm0sICJXZWJBc3NlbWJseU1lbW9yeU1vZGUiLCBmdW5jdGlvbldl
YkFzc2VtYmx5TWVtb3J5TW9kZSwgMSk7CiAjZW5kaWYKIAogICAgICAgICBpZiAoIWFyZ3VtZW50
cy5pc0VtcHR5KCkpIHsKQEAgLTMyNDYsNiArMzI1MCwyNCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKEV4ZWNTdGF0
ZSogZQogICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKIH0KIAorc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XZWJBc3NlbWJseU1lbW9yeU1vZGUoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIAorICAgIGlmICghT3B0aW9uczo6dXNl
V2ViQXNzZW1ibHkoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHlNZW1vcnlNb2RlIHNob3VsZCBvbmx5IGJlIGNh
bGxlZCBpZiB0aGUgdXNlV2ViQXNzZW1ibHkgb3B0aW9uIGlzIHNldCIpKTsKKworICAgIGlmIChK
U09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkuZ2V0T2JqZWN0KCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIG1lbW9yeSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1lbW9yeSo+
KHZtLCBvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
Zygmdm0sIG1ha2VTdHJpbmcobWVtb3J5LT5tZW1vcnkoKS5tb2RlKCkpKSk7CisgICAgICAgIGlm
IChhdXRvKiBpbnN0YW5jZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4o
dm0sIG9iamVjdCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5n
KCZ2bSwgbWFrZVN0cmluZyhpbnN0YW5jZS0+bWVtb3J5TW9kZSgpKSkpOworICAgIH0KKworICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIldlYkFz
c2VtYmx5TWVtb3J5TW9kZSBleHBlY3RzIGVpdGhlciBhIFdlYkFzc2VtYmx5Lk1lbW9yeSBvciBX
ZWJBc3NlbWJseS5JbnN0YW5jZSIpKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFQkxZ
KQogCiAvLyBVc2UgU0VIIGZvciBSZWxlYXNlIGJ1aWxkcyBvbmx5IHRvIGdldCByaWQgb2YgdGhl
IGNyYXNoIHJlcG9ydCBkaWFsb2cKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21NZW1vcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnku
aAppbmRleCA0NGRhMGRmLi42ZjA5MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTWVtb3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bU1lbW9yeS5oCkBAIC01MSw3ICs1MSw3IEBAIGVudW0gY2xhc3MgTWVtb3J5TW9kZSA6IHVpbnQ4
X3QgewogICAgIE51bWJlck9mTWVtb3J5TW9kZXMKIH07CiBzdGF0aWMgY29uc3RleHByIHNpemVf
dCBOdW1iZXJPZk1lbW9yeU1vZGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihNZW1vcnlNb2RlOjpO
dW1iZXJPZk1lbW9yeU1vZGVzKTsKLWNvbnN0IGNoYXIqIG1ha2VTdHJpbmcoTWVtb3J5TW9kZSk7
CitKU19FWFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBtYWtlU3RyaW5nKE1lbW9yeU1vZGUpOwog
CiBjbGFzcyBNZW1vcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxNZW1vcnk+IHsKICAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShNZW1vcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAppbmRleCBjZWRjOTRmLi5lOWY3NjZkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5z
dGFuY2UuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5
SW5zdGFuY2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNXZWJBc3NlbWJs
eUluc3RhbmNlKiBjcmVhdGUoVk0mLCBFeGVjU3RhdGUqLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiwg
SlNPYmplY3QqIGltcG9ydE9iamVjdCwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAotICAg
IERFQ0xBUkVfSU5GTzsKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiAgICAgSlNXZWJBc3Nl
bWJseUNvZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2suZ2V0
KCk7IH0KICAgICBib29sIGluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gY29kZUJsb2NrKCkg
JiYgY29kZUJsb2NrKCktPmluaXRpYWxpemVkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaAppbmRleCAwZWIxODhkLi5jNWYz
ZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2Vt
Ymx5TWVtb3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3Nl
bWJseU1lbW9yeS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNXZWJB
c3NlbWJseU1lbW9yeSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUmVmPFdhc206Ok1lbW9yeT4m
Jik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlKTsKIAotICAgIERFQ0xBUkVfSU5GTzsKKyAgICBERUNMQVJFX0VYUE9S
VF9JTkZPOwogCiAgICAgV2FzbTo6TWVtb3J5JiBtZW1vcnkoKSB7IHJldHVybiBtX21lbW9yeS5n
ZXQoKTsgfQogICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
Kik7Ci0tIAoyLjEwLjEKCg==
</data>
<flag name="review"
          id="327163"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
    <flag name="commit-queue"
          id="327164"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305756</attachid>
            <date>2017-03-29 10:30:30 -0700</date>
            <delta_ts>2017-03-29 10:45:03 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-MemoryMode.patch</filename>
            <type>text/plain</type>
            <size>18592</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBmOTZmNWMwYjliZTkwNmU3OGNmNWY3Y2M2MWE0MTk5ZDdjZjQ4NWQzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBXZWQsIDI5IE1hciAyMDE3IDA5OjE4OjE1IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gTWVtb3J5
TW9kZQoKLS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAyNSArKysrKwogSlNUZXN0cy93YXNtL2Fzc2VydC5qcyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfCAgIDUgKy0KIC4uLi9mdW5jdGlvbi10ZXN0cy9tZW1vcnktc2VjdGlvbi1h
bmQtaW1wb3J0LmpzICAgIHwgICAyICstCiBKU1Rlc3RzL3dhc20vanMtYXBpL2VsZW1lbnQuanMg
ICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogSlNUZXN0cy93YXNtL2pzLWFwaS9leHRlbnNp
b24tTWVtb3J5TW9kZS5qcyAgICAgICAgfCAxMDIgKysrKysrKysrKysrKysrKysrKysrCiBKU1Rl
c3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzICAgICAgICAgICAgICAgICB8ICAyMCArKy0t
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8ICAx
NCArKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwICAgICAgICAgICAgICAgICAgICAg
IHwgIDIyICsrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5LmggICAg
ICAgICAgICB8ICAgMiArLQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJs
eUluc3RhbmNlLmggfCAgIDQgKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL0pTV2ViQXNz
ZW1ibHlNZW1vcnkuaCAgIHwgICAyICstCiAxMSBmaWxlcyBjaGFuZ2VkLCAxODIgaW5zZXJ0aW9u
cygrKSwgMTggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgSlNUZXN0cy93YXNtL2pz
LWFwaS9leHRlbnNpb24tTWVtb3J5TW9kZS5qcwoKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdl
TG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjcxZGJhZi4uODA4MTU0MSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
OCBAQAorMjAxNy0wMy0yOSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgV2ViQXNzZW1ibHk6IGFkZCBzaGVsbC1vbmx5IE1lbW9yeSBtb2RlIGhlbHBlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMjI3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisKKyAgICAgICAgKiB3YXNtL2Fzc2VydC5qczog
Zml4IGEgcHJpb3IgZGVidWcgdGhpbmcgSSBmb3Jnb3QgdG8gcmVtb3ZlCisgICAgICAgICogd2Fz
bS9mdW5jdGlvbi10ZXN0cy9tZW1vcnktc2VjdGlvbi1hbmQtaW1wb3J0LmpzOiB0aGUgYXNzZXJ0
CisgICAgICAgIGlzc3VlIHdhcyBoaWRpbmcgYSBmYWlsdXJlIGluIGVycm9yIG1lc3NhZ2UgaGVy
ZQorICAgICAgICAqIHdhc20vanMtYXBpL2VsZW1lbnQuanM6IHRoZSBhc3NlcnQgaXNzdWUgd2Fz
IGhpZGluZyBhIGZhaWx1cmUgaW4KKyAgICAgICAgZXJyb3IgbWVzc2FnZSBoZXJlCisgICAgICAg
IChiYWRJbnN0YW50aWF0aW9uLnRlc3QpOgorICAgICAgICAoYmFkSW5zdGFudGlhdGlvbik6Cisg
ICAgICAgICogd2FzbS9qcy1hcGkvZXh0ZW5zaW9uLU1lbW9yeU1vZGUuanM6IEFkZGVkLgorICAg
ICAgICAoY29uc3QudmFsaWRhdGVNb2RlLndoYXQuc3dpdGNoKToKKyAgICAgICAgKHRlc3RNZW1v
cnlOb01heCk6CisgICAgICAgICh0ZXN0TWVtb3J5KToKKyAgICAgICAgKHRlc3RJbnN0YW5jZU5v
TWVtb3J5KToKKyAgICAgICAgKHRlc3RJbnN0YW5jZU5vTWF4KToKKyAgICAgICAgKHRlc3RJbnN0
YW5jZSk6CisgICAgICAgICogd2FzbS9qcy1hcGkvdGVzdF9tZW1vcnkuanM6IHRoZSBhc3NlcnQg
aXNzdWUgd2FzIGhpZGluZyBhCisgICAgICAgIGZhaWx1cmUgaW4gZXJyb3IgbWVzc2FnZSBoZXJl
CisgICAgICAgICh0ZXN0KToKKwogMjAxNy0wMy0yOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWls
bGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJBc3NlbWJseTogTWFrZSBXZWJBc3NlbWJseS5p
bnN0YW50aWF0ZS9jb21waWxlIHRydWx5IGFzeW5jaHJvbm91cwpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy93YXNtL2Fzc2VydC5qcyBiL0pTVGVzdHMvd2FzbS9hc3NlcnQuanMKaW5kZXggZTc5NDI4Ny4u
YjU0NGQxOSAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL2Fzc2VydC5qcworKysgYi9KU1Rlc3Rz
L3dhc20vYXNzZXJ0LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ1LDYgKzQ1LDggQEAgZXhwb3J0IGNvbnN0IG5vdFN0cmluZyA9ICh2
LCBtc2cpID0+IGlzTm90QSh2LCAic3RyaW5nIiwgbXNnKTsKIGV4cG9ydCBjb25zdCBpc1N0cmlu
ZyA9ICh2LCBtc2cpID0+IGlzQSh2LCAic3RyaW5nIiwgbXNnKTsKIGV4cG9ydCBjb25zdCBub3RO
dW1iZXIgPSAodiwgbXNnKSA9PiBpc05vdEEodiwgIm51bWJlciIsIG1zZyk7CiBleHBvcnQgY29u
c3QgaXNOdW1iZXIgPSAodiwgbXNnKSA9PiBpc0EodiwgIm51bWJlciIsIG1zZyk7CitleHBvcnQg
Y29uc3Qgbm90RnVuY3Rpb24gPSAodiwgbXNnKSA9PiBpc05vdEEodiwgImZ1bmN0aW9uIiwgbXNn
KTsKK2V4cG9ydCBjb25zdCBpc0Z1bmN0aW9uID0gKHYsIG1zZykgPT4gaXNBKHYsICJmdW5jdGlv
biIsIG1zZyk7CiAKIGV4cG9ydCBjb25zdCBoYXNPYmplY3RQcm9wZXJ0eSA9IChvLCBwLCBtc2cp
ID0+IHsKICAgICBpc09iamVjdChvLCBtc2cpOwpAQCAtMTI3LDcgKzEyOSw2IEBAIGNvbnN0IF90
aHJvd3MgPSAoZnVuYywgdHlwZSwgbWVzc2FnZSwgLi4uYXJncykgPT4gewogICAgICAgICAgICAg
ICAgIGlmIChjbGVhbk1lc3NhZ2UgPT09IG1lc3NhZ2UpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGU7CiAgICAgICAgIH0K
ICAgICAgICAgX2ZhaWwoYEV4cGVjdGVkIHRvIHRocm93IGEgJHt0eXBlLm5hbWV9IHdpdGggbWVz
c2FnZSAiJHttZXNzYWdlfSIsIGdvdCAke2UubmFtZX0gd2l0aCBtZXNzYWdlICIke2UubWVzc2Fn
ZX0iYCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL2Z1bmN0aW9uLXRlc3RzL21l
bW9yeS1zZWN0aW9uLWFuZC1pbXBvcnQuanMgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMv
bWVtb3J5LXNlY3Rpb24tYW5kLWltcG9ydC5qcwppbmRleCBkMDlhODc4Li40YTc0Y2RmIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvbWVtb3J5LXNlY3Rpb24tYW5kLWlt
cG9ydC5qcworKysgYi9KU1Rlc3RzL3dhc20vZnVuY3Rpb24tdGVzdHMvbWVtb3J5LXNlY3Rpb24t
YW5kLWltcG9ydC5qcwpAQCAtMjgsNCArMjgsNCBAQCBjb25zdCBidWlsZGVyMSA9IChuZXcgQnVp
bGRlcigpKQogICAgICAgLkNvZGUoKS5FbmQoKTsKIAogY29uc3QgaTAgPSBpbnN0YW50aWF0ZShi
dWlsZGVyMCk7Ci1hc3NlcnQudGhyb3dzKCgpID0+IGluc3RhbnRpYXRlKGJ1aWxkZXIxLCB7IGlt
cDogeyBtZW1vcnk6IGkwLmV4cG9ydHMubWVtb3J5IH0gfSksIFdlYkFzc2VtYmx5LkNvbXBpbGVF
cnJvciwgYFdlYkFzc2VtYmx5Lk1vZHVsZSBkb2Vzbid0IHBhcnNlIGF0IGJ5dGUgMzQgLyA0MDog
TWVtb3J5IHNlY3Rpb24gY2Fubm90IGV4aXN0IGlmIGFuIEltcG9ydCBoYXMgYSBtZW1vcnlgKTsK
K2Fzc2VydC50aHJvd3MoKCkgPT4gaW5zdGFudGlhdGUoYnVpbGRlcjEsIHsgaW1wOiB7IG1lbW9y
eTogaTAuZXhwb3J0cy5tZW1vcnkgfSB9KSwgV2ViQXNzZW1ibHkuQ29tcGlsZUVycm9yLCBgV2Vi
QXNzZW1ibHkuTW9kdWxlIGRvZXNuJ3QgcGFyc2UgYXQgYnl0ZSAzNSAvIDQxOiBNZW1vcnkgc2Vj
dGlvbiBjYW5ub3QgZXhpc3QgaWYgYW4gSW1wb3J0IGhhcyBhIG1lbW9yeWApOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9lbGVtZW50LmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9l
bGVtZW50LmpzCmluZGV4IGYzYWIzMTQuLjQ3NmI1ODMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2Fz
bS9qcy1hcGkvZWxlbWVudC5qcworKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2VsZW1lbnQuanMK
QEAgLTE4MSw3ICsxODEsNyBAQCBpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0Lmpz
JzsKICAgICAgICAgICAgIGlmIChqID09PSBpKQogICAgICAgICAgICAgICAgIGFzc2VydC5lcSh0
YWJsZS5nZXQoaikoaSoyKSwgaSoyICsgNDIpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIGFzc2VydC50aHJvd3MoKCkgPT4gdGFibGUuZ2V0KGopKGkqMiksIFR5cGVFcnJvciwg
InRhYmxlLmdldChqKSBpcyBub3QgYSBmdW5jdGlvbi4iKTsKKyAgICAgICAgICAgICAgICBhc3Nl
cnQudGhyb3dzKCgpID0+IHRhYmxlLmdldChqKShpKjIpLCBUeXBlRXJyb3IsICJ0YWJsZS5nZXQo
aikgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAndGFibGUuZ2V0KGopKGkqMiknLCAndGFibGUuZ2V0
KGopJyBpcyBudWxsKSIpOwogICAgICAgICB9CiAgICAgfQogICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMTk7IGkrKykKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvZXh0ZW5zaW9uLU1l
bW9yeU1vZGUuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL2V4dGVuc2lvbi1NZW1vcnlNb2RlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxOTFjZWM0Ci0tLSAvZGV2L251
bGwKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9leHRlbnNpb24tTWVtb3J5TW9kZS5qcwpAQCAt
MCwwICsxLDEwMiBAQAoraW1wb3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CitpbXBv
cnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsKKworY29uc3QgaXRlcmF0aW9ucyA9
IDMyOworCisvLyBUaGlzIEFQSSBpc24ndCBwYXJ0IG9mIFdlYkFzc2VtYmx5J3Mgb2ZmaWNpYWwg
c3BlYy4gSXQgaXMgdXNlIGZvciB0ZXN0aW5nIHdpdGhpbiB0aGUgc2hlbGwuCisKK2NvbnN0IHZl
cnNpb24gPSAweDAxOworY29uc3QgZW1wdHlNb2R1bGVBcnJheSA9IFVpbnQ4QXJyYXkub2YoMHgw
LCAweDYxLCAweDczLCAweDZkLCB2ZXJzaW9uLCAweDAwLCAweDAwLCAweDAwKTsKKworYXNzZXJ0
LmlzRnVuY3Rpb24oV2ViQXNzZW1ibHlNZW1vcnlNb2RlKTsKKworY29uc3QgbWVzc2FnZSA9IGBX
ZWJBc3NlbWJseU1lbW9yeU1vZGUgZXhwZWN0cyBlaXRoZXIgYSBXZWJBc3NlbWJseS5NZW1vcnkg
b3IgV2ViQXNzZW1ibHkuSW5zdGFuY2VgOworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJs
eU1lbW9yeU1vZGUobnVsbCksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cithc3NlcnQudGhyb3dzKCgp
ID0+IFdlYkFzc2VtYmx5TWVtb3J5TW9kZSh1bmRlZmluZWQpLCBUeXBlRXJyb3IsIG1lc3NhZ2Up
OworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseU1lbW9yeU1vZGUoMSksIFR5cGVFcnJv
ciwgbWVzc2FnZSk7Cithc3NlcnQudGhyb3dzKCgpID0+IFdlYkFzc2VtYmx5TWVtb3J5TW9kZSgi
IiksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cithc3NlcnQudGhyb3dzKCgpID0+IFdlYkFzc2VtYmx5
TWVtb3J5TW9kZSh7fSksIFR5cGVFcnJvciwgbWVzc2FnZSk7Cithc3NlcnQudGhyb3dzKCgpID0+
IFdlYkFzc2VtYmx5TWVtb3J5TW9kZShuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKGVtcHR5TW9kdWxl
QXJyYXkpKSwgVHlwZUVycm9yLCBtZXNzYWdlKTsKK2Fzc2VydC50aHJvd3MoKCkgPT4gV2ViQXNz
ZW1ibHlNZW1vcnlNb2RlKG5ldyBXZWJBc3NlbWJseS5UYWJsZSh7aW5pdGlhbDogMSwgZWxlbWVu
dDogImFueWZ1bmMifSkpLCBUeXBlRXJyb3IsIG1lc3NhZ2UpOworCitjb25zdCB2YWxpZGF0ZU1v
ZGUgPSB3aGF0ID0+IHsKKyAgICBjb25zdCBtb2RlID0gV2ViQXNzZW1ibHlNZW1vcnlNb2RlKHdo
YXQpOworICAgIHN3aXRjaCAobW9kZSkgeworICAgIGNhc2UgIlNpZ25hbGluZyI6CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgIkJvdW5kc0NoZWNraW5nIjoKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIFdlYkFzc2VtYmx5
Lk1lbW9yeSBtb2RlICcke21vZGV9J2ApOworICAgIH0KKyAgICByZXR1cm4gd2hhdDsKK30KKwor
Y29uc3QgaW5zdGFudGlhdGUgPSBidWlsZGVyID0+IHsKKyAgICBjb25zdCBiaW4gPSBidWlsZGVy
LldlYkFzc2VtYmx5KCk7CisgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVs
ZShiaW4uZ2V0KCkpOworICAgIHJldHVybiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
KTsKK307CisKKyhmdW5jdGlvbiB0ZXN0TWVtb3J5Tm9NYXgoKSB7CisgICAgbGV0IG1lbW9yaWVz
ID0gW107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgIT0gaXRlcmF0aW9uczsgKytpKQorICAgICAg
ICBtZW1vcmllcy5wdXNoKHZhbGlkYXRlTW9kZShuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHsgaW5p
dGlhbDogaSB9KSkpOworICAgIHJldHVybiBtZW1vcmllczsKK30pKCk7CisKK2Z1bGxHQygpOwor
CisoZnVuY3Rpb24gdGVzdE1lbW9yeSgpIHsKKyAgICBsZXQgbWVtb3JpZXMgPSBbXTsKKyAgICBm
b3IgKGxldCBpID0gMDsgaSAhPSBpdGVyYXRpb25zOyArK2kpCisgICAgICAgIG1lbW9yaWVzLnB1
c2godmFsaWRhdGVNb2RlKG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoeyBpbml0aWFsOiBpLCBtYXhp
bXVtOiBpIH0pKSk7CisgICAgcmV0dXJuIG1lbW9yaWVzOworfSkoKTsKKworZnVsbEdDKCk7CisK
KyhmdW5jdGlvbiB0ZXN0SW5zdGFuY2VOb01lbW9yeSgpIHsKKyAgICBsZXQgaW5zdGFuY2VzID0g
W107CisgICAgZm9yIChsZXQgaSA9IDA7IGkgIT0gaXRlcmF0aW9uczsgKytpKSB7CisgICAgICAg
IGNvbnN0IGJ1aWxkZXIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgICAgICAgLlR5cGUoKS5F
bmQoKQorICAgICAgICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAgICAgICAuQ29k
ZSgpLkVuZCgpOworICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGluc3RhbnRpYXRlKGJ1aWxkZXIp
OworICAgICAgICAvLyBOby1tZW1vcnkgaW5zdGFuY2VzIHNob3VsZCBuZXZlciBiZSBTaWduYWxp
bmc6IGl0IHdvdWxkIGJlIHdhc3RlZnVsLgorICAgICAgICBhc3NlcnQuZXEoV2ViQXNzZW1ibHlN
ZW1vcnlNb2RlKGluc3RhbmNlKSwgIkJvdW5kc0NoZWNraW5nIik7CisgICAgICAgIGluc3RhbmNl
cy5wdXNoKGluc3RhbmNlKTsKKyAgICB9CisgICAgcmV0dXJuIGluc3RhbmNlczsKK30pKCk7CisK
K2Z1bGxHQygpOworCisoZnVuY3Rpb24gdGVzdEluc3RhbmNlTm9NYXgoKSB7CisgICAgbGV0IGlu
c3RhbmNlcyA9IFtdOworICAgIGZvciAobGV0IGkgPSAwOyBpICE9IGl0ZXJhdGlvbnM7ICsraSkg
eworICAgICAgICAvLyBOb3RlOiBub3QgZXhwb3J0ZWQhIFRoZSBpbnRlcm5hbCBBUEkgY2FuIHN0
aWxsIGFjY2Vzcy4KKyAgICAgICAgY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRlcigpKQorICAg
ICAgICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgp
CisgICAgICAgICAgICAgIC5NZW1vcnkoKS5Jbml0aWFsTWF4UGFnZXMoaSkuRW5kKCkKKyAgICAg
ICAgICAgICAgLkNvZGUoKS5FbmQoKTsKKyAgICAgICAgaW5zdGFuY2VzLnB1c2godmFsaWRhdGVN
b2RlKGluc3RhbnRpYXRlKGJ1aWxkZXIpKSk7CisgICAgfQorfSkoKTsKKworZnVsbEdDKCk7CisK
KyhmdW5jdGlvbiB0ZXN0SW5zdGFuY2UoKSB7CisgICAgbGV0IGluc3RhbmNlcyA9IFtdOworICAg
IGZvciAobGV0IGkgPSAwOyBpICE9IGl0ZXJhdGlvbnM7ICsraSkgeworICAgICAgICAvLyBOb3Rl
OiBub3QgZXhwb3J0ZWQhIFRoZSBpbnRlcm5hbCBBUEkgY2FuIHN0aWxsIGFjY2Vzcy4KKyAgICAg
ICAgY29uc3QgYnVpbGRlciA9IChuZXcgQnVpbGRlcigpKQorICAgICAgICAgICAgICAuVHlwZSgp
LkVuZCgpCisgICAgICAgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgICAgICAgIC5N
ZW1vcnkoKS5Jbml0aWFsTWF4UGFnZXMoaSwgaSkuRW5kKCkKKyAgICAgICAgICAgICAgLkNvZGUo
KS5FbmQoKTsKKyAgICAgICAgaW5zdGFuY2VzLnB1c2godmFsaWRhdGVNb2RlKGluc3RhbnRpYXRl
KGJ1aWxkZXIpKSk7CisgICAgfQorfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1h
cGkvdGVzdF9tZW1vcnkuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfbWVtb3J5LmpzCmlu
ZGV4IDAxZTk4YjEuLmU2ZDY4YzIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVz
dF9tZW1vcnkuanMKKysrIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X21lbW9yeS5qcwpAQCAt
MzE3LDE0ICszMTcsMTQgQEAgdGVzdChmdW5jdGlvbigpIHsKICAgICBjb25zdCBiaW4gPSBidWls
ZGVyLldlYkFzc2VtYmx5KCkuZ2V0KCk7CiAgICAgY29uc3QgbW9kdWxlID0gbmV3IFdlYkFzc2Vt
Ymx5Lk1vZHVsZShiaW4pOwogCi0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1i
bHkuSW5zdGFuY2UobW9kdWxlLCAyMCksIFR5cGVFcnJvciwgYHNlY29uZCBhcmd1bWVudCB0byBX
ZWJBc3NlbWJseS5JbnN0YW5jZSBtdXN0IGJlIHVuZGVmaW5lZCBvciBhbiBPYmplY3QgKGV2YWx1
YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIDIwKScpYCk7Ci0gICAgYXNz
ZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7fSksIFR5
cGVFcnJvciwgYGltcG9ydCBtdXN0IGJlIGFuIG9iamVjdCAoZXZhbHVhdGluZyAnbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge30pJylgKTsKLSAgICBhc3NlcnQudGhyb3dzKCgpID0+
IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHsgfSB9KSwgV2ViQXNzZW1i
bHkuTGlua0Vycm9yLCBgTWVtb3J5IGltcG9ydCBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgV2ViQXNz
ZW1ibHkuTWVtb3J5IChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
LCB7aW1wOiB7IH0gfSknKWApOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2Vt
Ymx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyBtZW1vcnk6IDIwIH0gfSksIFdlYkFzc2VtYmx5
LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFzc2Vt
Ymx5Lk1lbW9yeSAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwg
e2ltcDogeyBtZW1vcnk6IDIwIH0gfSknKWApOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyBtZW1vcnk6IFtdIH0gfSksIFdl
YkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9m
IFdlYkFzc2VtYmx5Lk1lbW9yeSAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNl
KG1vZHVsZSwge2ltcDogeyBtZW1vcnk6IFtdIH0gfSknKWApOwotICAgIGFzc2VydC50aHJvd3Mo
KCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyBtZW1vcnk6IG5l
dyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6IDE5LCBtYXhpbXVtOiAyNX0pIH0gfSksIFdl
YkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwn
IHRoYXQgaXMgdG9vIHNtYWxsIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2Uo
bW9kdWxlLCB7aW1wOiB7IG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDog
MTksIG1heGltdW06IDI1fSkgfSB9KScpYCk7Ci0gICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcg
V2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IG1lbW9yeTogbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7aW5pdGlhbDogMjB9KSB9IH0pLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBN
ZW1vcnkgaW1wb3J0IGRpZCBub3QgaGF2ZSBhICdtYXhpbXVtJyBidXQgdGhlIG1vZHVsZSByZXF1
aXJlcyB0aGF0IGl0IGRvZXMgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0YW5jZSht
b2R1bGUsIHtpbXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAy
MH0pIH0gfSknKWApOwotICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5Lklu
c3RhbmNlKG1vZHVsZSwge2ltcDogeyBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2lu
aXRpYWw6IDIwLCBtYXhpbXVtOiAyNn0pIH0gfSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1l
bW9yeSBpbXBvcnRzICdtYXhpbXVtJyBpcyBsYXJnZXIgdGhhbiB0aGUgbW9kdWxlJ3MgZXhwZWN0
ZWQgJ21heGltdW0nIChldmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxl
LCB7aW1wOiB7IG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogMjAsIG1h
eGltdW06IDI2fSkgfSB9KScpYCk7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNz
ZW1ibHkuSW5zdGFuY2UobW9kdWxlLCAyMCksIFR5cGVFcnJvciwgYHNlY29uZCBhcmd1bWVudCB0
byBXZWJBc3NlbWJseS5JbnN0YW5jZSBtdXN0IGJlIHVuZGVmaW5lZCBvciBhbiBPYmplY3RgKTsK
KyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUs
IHt9KSwgVHlwZUVycm9yLCBgaW1wb3J0IG11c3QgYmUgYW4gb2JqZWN0YCk7CisgICAgYXNzZXJ0
LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7IH0g
fSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgaXMgbm90IGFuIGluc3Rh
bmNlIG9mIFdlYkFzc2VtYmx5Lk1lbW9yeWApOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3
IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyBtZW1vcnk6IDIwIH0gfSksIFdl
YkFzc2VtYmx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9m
IFdlYkFzc2VtYmx5Lk1lbW9yeWApOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFz
c2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyBtZW1vcnk6IFtdIH0gfSksIFdlYkFzc2Vt
Ymx5LkxpbmtFcnJvciwgYE1lbW9yeSBpbXBvcnQgaXMgbm90IGFuIGluc3RhbmNlIG9mIFdlYkFz
c2VtYmx5Lk1lbW9yeWApOworICAgIGFzc2VydC50aHJvd3MoKCkgPT4gbmV3IFdlYkFzc2VtYmx5
Lkluc3RhbmNlKG1vZHVsZSwge2ltcDogeyBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnko
e2luaXRpYWw6IDE5LCBtYXhpbXVtOiAyNX0pIH0gfSksIFdlYkFzc2VtYmx5LkxpbmtFcnJvciwg
YE1lbW9yeSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgc21hbGxlciB0aGFu
IHRoZSBtb2R1bGUncyBkZWNsYXJlZCAnaW5pdGlhbCcgaW1wb3J0IG1lbW9yeSBzaXplYCk7Cisg
ICAgYXNzZXJ0LnRocm93cygoKSA9PiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7
aW1wOiB7IG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlhbDogMjB9KSB9IH0p
LCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkgaW1wb3J0IGRpZCBub3QgaGF2ZSBhICdt
YXhpbXVtJyBidXQgdGhlIG1vZHVsZSByZXF1aXJlcyB0aGF0IGl0IGRvZXNgKTsKKyAgICBhc3Nl
cnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5JbnN0YW5jZShtb2R1bGUsIHtpbXA6IHsg
bWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAyMCwgbWF4aW11bTogMjZ9
KSB9IH0pLCBXZWJBc3NlbWJseS5MaW5rRXJyb3IsIGBNZW1vcnkgaW1wb3J0IHByb3ZpZGVkIGEg
J21heGltdW0nIHRoYXQgaXMgbGFyZ2VyIHRoYW4gdGhlIG1vZHVsZSdzIGRlY2xhcmVkICdtYXhp
bXVtJyBpbXBvcnQgbWVtb3J5IHNpemVgKTsKIH0pOwogCiB0ZXN0KGZ1bmN0aW9uKCkgewpAQCAt
MzU0LDggKzM1NCw4IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydC50aHJvd3Mo
KCkgPT4gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgaW5zdGFuY2VPYmopLCBXZWJB
c3NlbWJseS5MaW5rRXJyb3IsIGV4cGVjdGVkRXJyb3IpOwogICAgIH0KIAotICAgIHRlc3RNZW1J
bXBvcnRFcnJvcih7aW1wOiB7IG1lbW9yeTogbmV3IFdlYkFzc2VtYmx5Lk1lbW9yeSh7aW5pdGlh
bDogMTksIG1heGltdW06IDI1fSkgfSB9LCAiTWVtb3J5IGltcG9ydCBwcm92aWRlZCBhbiAnaW5p
dGlhbCcgdGhhdCBpcyB0b28gc21hbGwgKGV2YWx1YXRpbmcgJ25ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShtb2R1bGUsIGluc3RhbmNlT2JqKScpIik7Ci0gICAgdGVzdE1lbUltcG9ydEVycm9yKHtp
bXA6IHsgbWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVtb3J5KHtpbml0aWFsOiAxOX0pIH0gfSwg
Ik1lbW9yeSBpbXBvcnQgcHJvdmlkZWQgYW4gJ2luaXRpYWwnIHRoYXQgaXMgdG9vIHNtYWxsIChl
dmFsdWF0aW5nICduZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobW9kdWxlLCBpbnN0YW5jZU9iaikn
KSIpOworICAgIHRlc3RNZW1JbXBvcnRFcnJvcih7aW1wOiB7IG1lbW9yeTogbmV3IFdlYkFzc2Vt
Ymx5Lk1lbW9yeSh7aW5pdGlhbDogMTksIG1heGltdW06IDI1fSkgfSB9LCBgTWVtb3J5IGltcG9y
dCBwcm92aWRlZCBhbiAnaW5pdGlhbCcgdGhhdCBpcyBzbWFsbGVyIHRoYW4gdGhlIG1vZHVsZSdz
IGRlY2xhcmVkICdpbml0aWFsJyBpbXBvcnQgbWVtb3J5IHNpemVgKTsKKyAgICB0ZXN0TWVtSW1w
b3J0RXJyb3Ioe2ltcDogeyBtZW1vcnk6IG5ldyBXZWJBc3NlbWJseS5NZW1vcnkoe2luaXRpYWw6
IDE5fSkgfSB9LCBgTWVtb3J5IGltcG9ydCBwcm92aWRlZCBhbiAnaW5pdGlhbCcgdGhhdCBpcyBz
bWFsbGVyIHRoYW4gdGhlIG1vZHVsZSdzIGRlY2xhcmVkICdpbml0aWFsJyBpbXBvcnQgbWVtb3J5
IHNpemVgKTsKIAogICAgIC8vIFRoaXMgc2hvdWxkIG5vdCB0aHJvdy4KICAgICBuZXcgV2ViQXNz
ZW1ibHkuSW5zdGFuY2UobW9kdWxlLCB7aW1wOiB7bWVtb3J5OiBuZXcgV2ViQXNzZW1ibHkuTWVt
b3J5KHtpbml0aWFsOjIwfSl9fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAxMzBjZGFl
Li45YjU1YmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
Ny0wMy0yOSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
QXNzZW1ibHk6IGFkZCBzaGVsbC1vbmx5IE1lbW9yeSBtb2RlIGhlbHBlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMjI3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTWFyayBMYW0uCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbldlYkFzc2VtYmx5TWVt
b3J5TW9kZSk6CisgICAgICAgICogd2FzbS9XYXNtTWVtb3J5Lmg6CisgICAgICAgICogd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaDoKKyAgICAgICAgKiB3YXNtL2pzL0pTV2ViQXNzZW1i
bHlNZW1vcnkuaDoKKwogMjAxNy0wMy0yOCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNv
bT4KIAogICAgICAgICBBc3NlbWJseUhlbHBlcnMgc2hvdWxkIG5vdCBoYXZlIGEgVk0gZmllbGQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZGQ2Y2FmZC4uMjJkZDA5MSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAKQEAgLTU3LDYgKzU3LDggQEAKICNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUg
IkpTVHlwZWRBcnJheXMuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5Q2FsbGVlLmgiCisjaW5j
bHVkZSAiSlNXZWJBc3NlbWJseUluc3RhbmNlLmgiCisjaW5jbHVkZSAiSlNXZWJBc3NlbWJseU1l
bW9yeS5oIgogI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgi
CiAjaW5jbHVkZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKQEAgLTEwODQsNiArMTA4Niw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQXN5bmNUZXN0UGFzc2Vk
KEV4ZWNTdGF0ZSopOwogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25UZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucyhFeGVj
U3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uV2Vi
QXNzZW1ibHlNZW1vcnlNb2RlKEV4ZWNTdGF0ZSopOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0FN
UExJTkdfRkxBR1MpCkBAIC0xMzU4LDYgKzEzNjEsNyBAQCBwcm90ZWN0ZWQ6CiAKICNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAidGVzdFdhc21Nb2R1bGVG
dW5jdGlvbnMiLCBmdW5jdGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zLCAwKTsKKyAgICAgICAg
YWRkRnVuY3Rpb24odm0sICJXZWJBc3NlbWJseU1lbW9yeU1vZGUiLCBmdW5jdGlvbldlYkFzc2Vt
Ymx5TWVtb3J5TW9kZSwgMSk7CiAjZW5kaWYKIAogICAgICAgICBpZiAoIWFyZ3VtZW50cy5pc0Vt
cHR5KCkpIHsKQEAgLTMyNDYsNiArMzI1MCwyNCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblRlc3RXYXNtTW9kdWxlRnVuY3Rpb25zKEV4ZWNTdGF0ZSogZQog
ICAgIHJldHVybiBlbmNvZGVkSlNVbmRlZmluZWQoKTsKIH0KIAorc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25XZWJBc3NlbWJseU1lbW9yeU1vZGUoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIAorICAgIGlmICghT3B0aW9uczo6dXNlV2ViQXNz
ZW1ibHkoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIEFT
Q0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHlNZW1vcnlNb2RlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBp
ZiB0aGUgdXNlV2ViQXNzZW1ibHkgb3B0aW9uIGlzIHNldCIpKTsKKworICAgIGlmIChKU09iamVj
dCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkuZ2V0T2JqZWN0KCkpIHsKKyAgICAgICAgaWYg
KGF1dG8qIG1lbW9yeSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1lbW9yeSo+KHZtLCBv
YmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZygmdm0s
IG1ha2VTdHJpbmcobWVtb3J5LT5tZW1vcnkoKS5tb2RlKCkpKSk7CisgICAgICAgIGlmIChhdXRv
KiBpbnN0YW5jZSA9IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseUluc3RhbmNlKj4odm0sIG9i
amVjdCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKCZ2bSwg
bWFrZVN0cmluZyhpbnN0YW5jZS0+bWVtb3J5TW9kZSgpKSkpOworICAgIH0KKworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIldlYkFzc2VtYmx5
TWVtb3J5TW9kZSBleHBlY3RzIGVpdGhlciBhIFdlYkFzc2VtYmx5Lk1lbW9yeSBvciBXZWJBc3Nl
bWJseS5JbnN0YW5jZSIpKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFQkxZKQogCiAv
LyBVc2UgU0VIIGZvciBSZWxlYXNlIGJ1aWxkcyBvbmx5IHRvIGdldCByaWQgb2YgdGhlIGNyYXNo
IHJlcG9ydCBkaWFsb2cKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21NZW1vcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuaAppbmRl
eCA0NGRhMGRmLi42ZjA5MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9XYXNtTWVtb3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9y
eS5oCkBAIC01MSw3ICs1MSw3IEBAIGVudW0gY2xhc3MgTWVtb3J5TW9kZSA6IHVpbnQ4X3Qgewog
ICAgIE51bWJlck9mTWVtb3J5TW9kZXMKIH07CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBOdW1i
ZXJPZk1lbW9yeU1vZGVzID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihNZW1vcnlNb2RlOjpOdW1iZXJP
Zk1lbW9yeU1vZGVzKTsKLWNvbnN0IGNoYXIqIG1ha2VTdHJpbmcoTWVtb3J5TW9kZSk7CitKU19F
WFBPUlRfUFJJVkFURSBjb25zdCBjaGFyKiBtYWtlU3RyaW5nKE1lbW9yeU1vZGUpOwogCiBjbGFz
cyBNZW1vcnkgOiBwdWJsaWMgUmVmQ291bnRlZDxNZW1vcnk+IHsKICAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShNZW1vcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvSlNXZWJBc3NlbWJseUluc3RhbmNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9KU1dlYkFzc2VtYmx5SW5zdGFuY2UuaAppbmRleCBjZWRjOTRmLi5lOWY3NjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFuY2Uu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5SW5zdGFu
Y2UuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBjcmVhdGUoVk0mLCBFeGVjU3RhdGUqLCBKU1dlYkFzc2VtYmx5TW9kdWxlKiwgSlNPYmpl
Y3QqIGltcG9ydE9iamVjdCwgU3RydWN0dXJlKik7CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIAotICAgIERFQ0xB
UkVfSU5GTzsKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwogCiAgICAgSlNXZWJBc3NlbWJseUNv
ZGVCbG9jayogY29kZUJsb2NrKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQmxvY2suZ2V0KCk7IH0K
ICAgICBib29sIGluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gY29kZUJsb2NrKCkgJiYgY29k
ZUJsb2NrKCktPmluaXRpYWxpemVkKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL0pTV2ViQXNzZW1ibHlNZW1vcnkuaAppbmRleCAwZWIxODhkLi5jNWYzZWY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9KU1dlYkFzc2VtYmx5TWVt
b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvSlNXZWJBc3NlbWJseU1l
bW9yeS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNXZWJBc3NlbWJs
eU1lbW9yeSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgUmVmPFdhc206Ok1lbW9yeT4mJik7CiAg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKIAotICAgIERFQ0xBUkVfSU5GTzsKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZP
OwogCiAgICAgV2FzbTo6TWVtb3J5JiBtZW1vcnkoKSB7IHJldHVybiBtX21lbW9yeS5nZXQoKTsg
fQogICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0Kik7Ci0t
IAoyLjEwLjEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>