<?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>171078</bug_id>
          
          <creation_ts>2017-04-20 15:00:25 -0700</creation_ts>
          <short_desc>WebAssembly: Module.exports, Module.imports, Module.customSections are wrong</short_desc>
          <delta_ts>2017-04-22 00:52:07 -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>161709</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <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>1299317</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-20 15:00:25 -0700</bug_when>
    <thetext>They&apos;re static properties of Module, not instance properties of a module.
https://github.com/WebAssembly/design/blob/master/JS.md#webassemblymoduleexports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300148</commentid>
    <comment_count>1</comment_count>
      <attachid>307896</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-21 23:51:51 -0700</bug_when>
    <thetext>Created attachment 307896
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300149</commentid>
    <comment_count>2</comment_count>
      <attachid>307896</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-21 23:57:17 -0700</bug_when>
    <thetext>Comment on attachment 307896
patch

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

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleConstructor.cpp:64
&gt; + customSections webAssemblyModuleCustomSections DontEnum|Function 2
&gt; + imports        webAssemblyModuleImports        DontEnum|Function 1
&gt; + exports        webAssemblyModuleExports        DontEnum|Function 1

Please add tests asserting these are functions w/ the correct length.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleConstructor.cpp:74
&gt; +    JSWebAssemblyModule* module = jsDynamicCast&lt;JSWebAssemblyModule*&gt;(vm,  exec-&gt;argument(0));

nit: 1 too many spaces before exec.

&gt; Source/JavaScriptCore/wasm/js/WebAssemblyModuleConstructor.cpp:91
&gt; +            Structure* arrayBufferStructure = InternalFunction::createSubclassStructure(exec, JSValue(), globalObject-&gt;arrayBufferStructure(ArrayBufferSharingMode::Default));

Why createSubclassStructure here? Pretty sure this ain&apos;t needed. I think you should just use arrayBufferStructure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300150</commentid>
    <comment_count>3</comment_count>
      <attachid>307897</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-22 00:11:16 -0700</bug_when>
    <thetext>Created attachment 307897
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300155</commentid>
    <comment_count>4</comment_count>
      <attachid>307897</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-22 00:52:06 -0700</bug_when>
    <thetext>Comment on attachment 307897
patch

Clearing flags on attachment: 307897

Committed r215664: &lt;http://trac.webkit.org/changeset/215664&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1300156</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-04-22 00:52:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307896</attachid>
            <date>2017-04-21 23:51:51 -0700</date>
            <delta_ts>2017-04-22 00:11:16 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-Module.exports-Module.imports-Module.cus.patch</filename>
            <type>text/plain</type>
            <size>23688</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAwYzhiNjk5NzViNWIyYjVlMTIyODhmNzQwZjNkODEzNjM3MDcwZTIxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBGcmksIDIxIEFwciAyMDE3IDIzOjUxOjIwIC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQXNz
ZW1ibHk6IE1vZHVsZS5leHBvcnRzLCBNb2R1bGUuaW1wb3J0cywKIE1vZHVsZS5jdXN0b21TZWN0
aW9ucyBhcmUgd3JvbmcKCi0tLQogSlNUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgMjMgKysrKysKIEpTVGVzdHMvd2FzbS9qcy1hcGkvTW9kdWxlLmN1
c3RvbVNlY3Rpb24uanMgICAgICAgIHwgIDE4ICsrLS0KIEpTVGVzdHMvd2FzbS9qcy1hcGkvTW9k
dWxlLmV4cG9ydHMuanMgICAgICAgICAgICAgIHwgIDI2ICsrLS0tCiBKU1Rlc3RzL3dhc20vanMt
YXBpL01vZHVsZS5pbXBvcnRzLmpzICAgICAgICAgICAgICB8ICAzNCArKystLS0tCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8ICAxOSArKysrCiAu
Li4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcCAgICAgICB8IDExMCAr
KysrKysrKysrKysrKysrKysrLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5
cGUuY3BwICAgICAgICAgfCAxMTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA3IGZpbGVzIGNoYW5n
ZWQsIDE5MCBpbnNlcnRpb25zKCspLCAxNTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBmNGY5NWFiLi5iY2E1MTVi
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDI4IEBACiAyMDE3LTA0LTIxICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxl
LmNvbT4KIAorICAgICAgICBXZWJBc3NlbWJseTogTW9kdWxlLmV4cG9ydHMsIE1vZHVsZS5pbXBv
cnRzLCBNb2R1bGUuY3VzdG9tU2VjdGlvbnMgYXJlIHdyb25nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEwNzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGV5J3JlIHN0YXRpYyBwcm9wZXJ0aWVzIG9m
IE1vZHVsZSwgbm90IGluc3RhbmNlIHByb3BlcnRpZXMgb2YgYSBtb2R1bGUuCisgICAgICAgIGh0
dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9kZXNpZ24vYmxvYi9tYXN0ZXIvSlMubWQjd2Vi
YXNzZW1ibHltb2R1bGVleHBvcnRzCisKKyAgICAgICAgKiB3YXNtL2pzLWFwaS9Nb2R1bGUuY3Vz
dG9tU2VjdGlvbi5qczoKKyAgICAgICAgKGFzc2VydC50aHJvd3MuV2ViQXNzZW1ibHkuTW9kdWxl
LmN1c3RvbVNlY3Rpb25zKToKKyAgICAgICAgKGFzc2VydC5lcSk6CisgICAgICAgIChhc3NlcnQu
dGhyb3dzLldlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuY3VzdG9tU2VjdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAqIHdhc20vanMtYXBpL01vZHVsZS5leHBvcnRzLmpzOgorICAgICAgICAo
YXNzZXJ0LnRocm93cy5XZWJBc3NlbWJseS5Nb2R1bGUuZXhwb3J0cyk6CisgICAgICAgIChhc3Nl
cnQudHJ1dGh5KToKKyAgICAgICAgKGFzc2VydC50aHJvd3MuV2ViQXNzZW1ibHkuTW9kdWxlLnBy
b3RvdHlwZS5leHBvcnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS9Nb2R1bGUu
aW1wb3J0cy5qczoKKyAgICAgICAgKGFzc2VydC50aHJvd3MuV2ViQXNzZW1ibHkuTW9kdWxlLmlt
cG9ydHMpOgorICAgICAgICAoYXNzZXJ0LnRydXRoeSk6CisgICAgICAgIChhc3NlcnQudGhyb3dz
LldlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuaW1wb3J0cyk6IERlbGV0ZWQuCisKKzIwMTct
MDQtMjEgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFNpbGVu
Y2Ugbm9pc3kgdGVzdAogCiAgICAgICAgIFVucmV2aWV3ZWQsIEZpbCAvIE1pY2hhZWwgYW5kIEkg
dGFsa2VkIGFib3V0IGl0IGluIHRoZSBjb3JyaWRvci4gSQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93
YXNtL2pzLWFwaS9Nb2R1bGUuY3VzdG9tU2VjdGlvbi5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkv
TW9kdWxlLmN1c3RvbVNlY3Rpb24uanMKaW5kZXggMGE3MGNlOS4uNzEzMjkxNyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy93YXNtL2pzLWFwaS9Nb2R1bGUuY3VzdG9tU2VjdGlvbi5qcworKysgYi9KU1Rl
c3RzL3dhc20vanMtYXBpL01vZHVsZS5jdXN0b21TZWN0aW9uLmpzCkBAIC0xLDIwICsxLDIwIEBA
CiBpbXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKIGltcG9ydCAqIGFzIGFzc2Vy
dCBmcm9tICcuLi9hc3NlcnQuanMnOwogCi1hc3NlcnQudGhyb3dzKCgpID0+IFdlYkFzc2VtYmx5
Lk1vZHVsZS5wcm90b3R5cGUuY3VzdG9tU2VjdGlvbnModW5kZWZpbmVkLCAiIiksIFR5cGVFcnJv
ciwgYFdlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuY3VzdG9tU2VjdGlvbnMgY2FsbGVkIHdp
dGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSB8dGhpc3wgdmFsdWVgKTsKK2Fzc2VydC50aHJvd3Mo
KCkgPT4gV2ViQXNzZW1ibHkuTW9kdWxlLmN1c3RvbVNlY3Rpb25zKHVuZGVmaW5lZCwgIiIpLCBU
eXBlRXJyb3IsIGBXZWJBc3NlbWJseS5Nb2R1bGUuY3VzdG9tU2VjdGlvbnMgY2FsbGVkIHdpdGgg
bm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSBhcmd1bWVudGApOwogCiB7CiAgICAgY29uc3QgZW1wdHkg
PSBuZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKS5XZWJBc3NlbWJseSgpLmdl
dCgpKTsKLSAgICBhc3NlcnQuaXNBcnJheShlbXB0eS5jdXN0b21TZWN0aW9ucygiIikpOwotICAg
IGFzc2VydC5lcShlbXB0eS5jdXN0b21TZWN0aW9ucygiIikubGVuZ3RoLCAwKTsKKyAgICBhc3Nl
cnQuaXNBcnJheShXZWJBc3NlbWJseS5Nb2R1bGUuY3VzdG9tU2VjdGlvbnMoZW1wdHksICIiKSk7
CisgICAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5Lk1vZHVsZS5jdXN0b21TZWN0aW9ucyhlbXB0eSwg
IiIpLmxlbmd0aCwgMCk7CiB9CiAKIHsKICAgICBjb25zdCBzaW5nbGUgPSBuZXcgV2ViQXNzZW1i
bHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKQogICAgICAgICAuVW5rbm93bigiaGVsbG8iKS5CeXRl
KDB4MDApLkJ5dGUoMHg0MikuQnl0ZSgweEZGKS5FbmQoKQogICAgICAgICAuV2ViQXNzZW1ibHko
KS5nZXQoKSk7Ci0gICAgYXNzZXJ0LmVxKHNpbmdsZS5jdXN0b21TZWN0aW9ucygiIikubGVuZ3Ro
LCAwKTsKLSAgICBjb25zdCBoZWxsbyA9IHNpbmdsZS5jdXN0b21TZWN0aW9ucygiaGVsbG8iKTsK
KyAgICBhc3NlcnQuZXEoV2ViQXNzZW1ibHkuTW9kdWxlLmN1c3RvbVNlY3Rpb25zKHNpbmdsZSwg
IiIpLmxlbmd0aCwgMCk7CisgICAgY29uc3QgaGVsbG8gPSBXZWJBc3NlbWJseS5Nb2R1bGUuY3Vz
dG9tU2VjdGlvbnMoc2luZ2xlLCAiaGVsbG8iKTsKICAgICBhc3NlcnQuZXEoaGVsbG8ubGVuZ3Ro
LCAxKTsKICAgICBhc3NlcnQuZXEoaGVsbG9bMF0uYnl0ZUxlbmd0aCwgMyk7CiAgICAgY29uc3Qg
aGVsbG9JOCA9IG5ldyBJbnQ4QXJyYXkoaGVsbG9bMF0pOwpAQCAtMjcsNyArMjcsNyBAQCBhc3Nl
cnQudGhyb3dzKCgpID0+IFdlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuY3VzdG9tU2VjdGlv
bnModW5kZWZpbmVkLCAiIiksCiAgICAgY29uc3QgdW5pY29kZSA9IG5ldyBXZWJBc3NlbWJseS5N
b2R1bGUoKG5ldyBCdWlsZGVyKCkpCiAgICAgICAgIC5Vbmtub3duKCLwn5Go4oCN4p2k77iP4oCN
8J+Si+KAjfCfkagiKS5CeXRlKDQyKS5FbmQoKQogICAgICAgICAuV2ViQXNzZW1ibHkoKS5nZXQo
KSk7Ci0gICAgY29uc3QgZmFtaWx5ID0gdW5pY29kZS5jdXN0b21TZWN0aW9ucygi8J+RqOKAjeKd
pO+4j+KAjfCfkovigI3wn5GoIik7CisgICAgY29uc3QgZmFtaWx5ID0gV2ViQXNzZW1ibHkuTW9k
dWxlLmN1c3RvbVNlY3Rpb25zKHVuaWNvZGUsICLwn5Go4oCN4p2k77iP4oCN8J+Si+KAjfCfkagi
KTsKICAgICBhc3NlcnQuZXEoZmFtaWx5Lmxlbmd0aCwgMSk7CiAgICAgYXNzZXJ0LmVxKGZhbWls
eVswXS5ieXRlTGVuZ3RoLCAxKTsKICAgICBjb25zdCBmYW1pbHlJOCA9IG5ldyBJbnQ4QXJyYXko
ZmFtaWx5WzBdKTsKQEAgLTQzLDEzICs0MywxMyBAQCBhc3NlcnQudGhyb3dzKCgpID0+IFdlYkFz
c2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuY3VzdG9tU2VjdGlvbnModW5kZWZpbmVkLCAiIiksCiAg
ICAgICAgIC5Vbmtub3duKCJvbmUiKS5CeXRlKDQpLkJ5dGUoNCkuQnl0ZSg0KS5CeXRlKDQpLkJ5
dGUoNCkuRW5kKCkKICAgICAgICAgLldlYkFzc2VtYmx5KCkuZ2V0KCkpOwogCi0gICAgY29uc3Qg
emVybyA9IG1hbnkuY3VzdG9tU2VjdGlvbnMoInplcm8iKTsKKyAgICBjb25zdCB6ZXJvID0gV2Vi
QXNzZW1ibHkuTW9kdWxlLmN1c3RvbVNlY3Rpb25zKG1hbnksICJ6ZXJvIik7CiAgICAgYXNzZXJ0
LmVxKHplcm8ubGVuZ3RoLCAxKTsKICAgICBhc3NlcnQuZXEoemVyb1swXS5ieXRlTGVuZ3RoLCAx
KTsKICAgICBjb25zdCB6ZXJvSTggPSBuZXcgSW50OEFycmF5KHplcm9bMF0pOwogICAgIGFzc2Vy
dC5lcSh6ZXJvSThbMF0sIDApOwogCi0gICAgY29uc3QgdHdvID0gbWFueS5jdXN0b21TZWN0aW9u
cygidHdvIik7CisgICAgY29uc3QgdHdvID0gV2ViQXNzZW1ibHkuTW9kdWxlLmN1c3RvbVNlY3Rp
b25zKG1hbnksICJ0d28iKTsKICAgICBhc3NlcnQuZXEodHdvLmxlbmd0aCwgMSk7CiAgICAgYXNz
ZXJ0LmVxKHR3b1swXS5ieXRlTGVuZ3RoLCA0KTsKICAgICBjb25zdCB0d29JOCA9IG5ldyBJbnQ4
QXJyYXkodHdvWzBdKTsKQEAgLTU4LDcgKzU4LDcgQEAgYXNzZXJ0LnRocm93cygoKSA9PiBXZWJB
c3NlbWJseS5Nb2R1bGUucHJvdG90eXBlLmN1c3RvbVNlY3Rpb25zKHVuZGVmaW5lZCwgIiIpLAog
ICAgIGFzc2VydC5lcSh0d29JOFsyXSwgMyk7CiAgICAgYXNzZXJ0LmVxKHR3b0k4WzNdLCAzKTsK
IAotICAgIGNvbnN0IG9uZSA9IG1hbnkuY3VzdG9tU2VjdGlvbnMoIm9uZSIpOworICAgIGNvbnN0
IG9uZSA9IFdlYkFzc2VtYmx5Lk1vZHVsZS5jdXN0b21TZWN0aW9ucyhtYW55LCAib25lIik7CiAg
ICAgYXNzZXJ0LmVxKG9uZS5sZW5ndGgsIDMpOwogICAgIGxldCBzZWVuID0gMDsKICAgICBjb25z
dCBleHBlY3QgPSBbCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL01vZHVsZS5leHBv
cnRzLmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9Nb2R1bGUuZXhwb3J0cy5qcwppbmRleCA1MTQw
NDdiLi42MDQ5YjNlIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vanMtYXBpL01vZHVsZS5leHBv
cnRzLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvTW9kdWxlLmV4cG9ydHMuanMKQEAgLTEs
MTMgKzEsMTMgQEAKIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogaW1wb3J0
ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CiAKLWFzc2VydC50aHJvd3MoKCkgPT4g
V2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvdHlwZS5leHBvcnRzKHVuZGVmaW5lZCwgIiIpLCBUeXBl
RXJyb3IsIGBXZWJBc3NlbWJseS5Nb2R1bGUucHJvdG90eXBlLmV4cG9ydHMgY2FsbGVkIHdpdGgg
bm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSB8dGhpc3wgdmFsdWVgKTsKK2Fzc2VydC50aHJvd3MoKCkg
PT4gV2ViQXNzZW1ibHkuTW9kdWxlLmV4cG9ydHModW5kZWZpbmVkKSwgVHlwZUVycm9yLCBgV2Vi
QXNzZW1ibHkuTW9kdWxlLmV4cG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVs
ZSBhcmd1bWVudGApOwogCiB7CiAgICAgY29uc3QgbSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUo
KG5ldyBCdWlsZGVyKCkpLldlYkFzc2VtYmx5KCkuZ2V0KCkpOwotICAgIGFzc2VydC5pc0FycmF5
KG0uZXhwb3J0cyk7Ci0gICAgYXNzZXJ0LmVxKG0uZXhwb3J0cy5sZW5ndGgsIDApOwotICAgIGFz
c2VydC50cnV0aHkobS5leHBvcnRzICE9PSBtLmV4cG9ydHMpOworICAgIGFzc2VydC5pc0FycmF5
KFdlYkFzc2VtYmx5Lk1vZHVsZS5leHBvcnRzKG0pKTsKKyAgICBhc3NlcnQuZXEoV2ViQXNzZW1i
bHkuTW9kdWxlLmV4cG9ydHMobSkubGVuZ3RoLCAwKTsKKyAgICBhc3NlcnQudHJ1dGh5KFdlYkFz
c2VtYmx5Lk1vZHVsZS5leHBvcnRzKG0pICE9PSBXZWJBc3NlbWJseS5Nb2R1bGUuZXhwb3J0cyht
KSk7CiB9CiAKIHsKQEAgLTMwLDEzICszMCwxMyBAQCBhc3NlcnQudGhyb3dzKCgpID0+IFdlYkFz
c2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuZXhwb3J0cyh1bmRlZmluZWQsICIiKSwgVHlwZUVycgog
ICAgICAgICAgICAgICAgIC5GdW5jdGlvbigiZnVuYyIsIHsgcGFyYW1zOiBbXSB9KS5SZXR1cm4o
KS5FbmQoKQogICAgICAgICAgICAgLkVuZCgpCiAgICAgICAgICAgICAuV2ViQXNzZW1ibHkoKS5n
ZXQoKSk7Ci0gICAgYXNzZXJ0LmVxKG0uZXhwb3J0cy5sZW5ndGgsIDQpOwotICAgIGFzc2VydC5l
cShtLmV4cG9ydHNbMF0ubmFtZSwgImZ1bmMiKTsKLSAgICBhc3NlcnQuZXEobS5leHBvcnRzWzBd
LmtpbmQsICJmdW5jdGlvbiIpOwotICAgIGFzc2VydC5lcShtLmV4cG9ydHNbMV0ubmFtZSwgInRh
YiIpOwotICAgIGFzc2VydC5lcShtLmV4cG9ydHNbMV0ua2luZCwgInRhYmxlIik7Ci0gICAgYXNz
ZXJ0LmVxKG0uZXhwb3J0c1syXS5uYW1lLCAibWVtIik7Ci0gICAgYXNzZXJ0LmVxKG0uZXhwb3J0
c1syXS5raW5kLCAibWVtb3J5Iik7Ci0gICAgYXNzZXJ0LmVxKG0uZXhwb3J0c1szXS5uYW1lLCAi
Z2xvYiIpOwotICAgIGFzc2VydC5lcShtLmV4cG9ydHNbM10ua2luZCwgImdsb2JhbCIpOworICAg
IGFzc2VydC5lcShXZWJBc3NlbWJseS5Nb2R1bGUuZXhwb3J0cyhtKS5sZW5ndGgsIDQpOworICAg
IGFzc2VydC5lcShXZWJBc3NlbWJseS5Nb2R1bGUuZXhwb3J0cyhtKVswXS5uYW1lLCAiZnVuYyIp
OworICAgIGFzc2VydC5lcShXZWJBc3NlbWJseS5Nb2R1bGUuZXhwb3J0cyhtKVswXS5raW5kLCAi
ZnVuY3Rpb24iKTsKKyAgICBhc3NlcnQuZXEoV2ViQXNzZW1ibHkuTW9kdWxlLmV4cG9ydHMobSlb
MV0ubmFtZSwgInRhYiIpOworICAgIGFzc2VydC5lcShXZWJBc3NlbWJseS5Nb2R1bGUuZXhwb3J0
cyhtKVsxXS5raW5kLCAidGFibGUiKTsKKyAgICBhc3NlcnQuZXEoV2ViQXNzZW1ibHkuTW9kdWxl
LmV4cG9ydHMobSlbMl0ubmFtZSwgIm1lbSIpOworICAgIGFzc2VydC5lcShXZWJBc3NlbWJseS5N
b2R1bGUuZXhwb3J0cyhtKVsyXS5raW5kLCAibWVtb3J5Iik7CisgICAgYXNzZXJ0LmVxKFdlYkFz
c2VtYmx5Lk1vZHVsZS5leHBvcnRzKG0pWzNdLm5hbWUsICJnbG9iIik7CisgICAgYXNzZXJ0LmVx
KFdlYkFzc2VtYmx5Lk1vZHVsZS5leHBvcnRzKG0pWzNdLmtpbmQsICJnbG9iYWwiKTsKIH0KZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvTW9kdWxlLmltcG9ydHMuanMgYi9KU1Rlc3Rz
L3dhc20vanMtYXBpL01vZHVsZS5pbXBvcnRzLmpzCmluZGV4IDI3MzUxNGQuLmMyYWFkMzkgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9qcy1hcGkvTW9kdWxlLmltcG9ydHMuanMKKysrIGIvSlNU
ZXN0cy93YXNtL2pzLWFwaS9Nb2R1bGUuaW1wb3J0cy5qcwpAQCAtMSwxMyArMSwxMyBAQAogaW1w
b3J0IEJ1aWxkZXIgZnJvbSAnLi4vQnVpbGRlci5qcyc7CiBpbXBvcnQgKiBhcyBhc3NlcnQgZnJv
bSAnLi4vYXNzZXJ0LmpzJzsKIAotYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseS5Nb2R1
bGUucHJvdG90eXBlLmltcG9ydHModW5kZWZpbmVkLCAiIiksIFR5cGVFcnJvciwgYFdlYkFzc2Vt
Ymx5Lk1vZHVsZS5wcm90b3R5cGUuaW1wb3J0cyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1ibHku
TW9kdWxlIHx0aGlzfCB2YWx1ZWApOworYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3NlbWJseS5N
b2R1bGUuaW1wb3J0cyh1bmRlZmluZWQpLCBUeXBlRXJyb3IsIGBXZWJBc3NlbWJseS5Nb2R1bGUu
aW1wb3J0cyBjYWxsZWQgd2l0aCBub24gV2ViQXNzZW1ibHkuTW9kdWxlIGFyZ3VtZW50YCk7CiAK
IHsKICAgICBjb25zdCBtID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxkZXIoKSku
V2ViQXNzZW1ibHkoKS5nZXQoKSk7Ci0gICAgYXNzZXJ0LmlzQXJyYXkobS5pbXBvcnRzKTsKLSAg
ICBhc3NlcnQuZXEobS5pbXBvcnRzLmxlbmd0aCwgMCk7Ci0gICAgYXNzZXJ0LnRydXRoeShtLmV4
cG9ydHMgIT09IG0uZXhwb3J0cyk7CisgICAgYXNzZXJ0LmlzQXJyYXkoV2ViQXNzZW1ibHkuTW9k
dWxlLmltcG9ydHMobSkpOworICAgIGFzc2VydC5lcShXZWJBc3NlbWJseS5Nb2R1bGUuaW1wb3J0
cyhtKS5sZW5ndGgsIDApOworICAgIGFzc2VydC50cnV0aHkoV2ViQXNzZW1ibHkuTW9kdWxlLmlt
cG9ydHMobSkgIT09IFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzKG0pKTsKIH0KIAogewpAQCAt
MjEsMTcgKzIxLDE3IEBAIGFzc2VydC50aHJvd3MoKCkgPT4gV2ViQXNzZW1ibHkuTW9kdWxlLnBy
b3RvdHlwZS5pbXBvcnRzKHVuZGVmaW5lZCwgIiIpLCBUeXBlRXJyCiAgICAgICAgICAgICAgICAg
Lkdsb2JhbCgpLkkzMigiZm9vR2xvYmFsIiwgImJhckdsb2JhbCIsICJpbW11dGFibGUiKS5FbmQo
KQogICAgICAgICAgICAgLkVuZCgpCiAgICAgICAgICAgICAuV2ViQXNzZW1ibHkoKS5nZXQoKSk7
Ci0gICAgYXNzZXJ0LmVxKG0uaW1wb3J0cy5sZW5ndGgsIDQpOwotICAgIGFzc2VydC5lcShtLmlt
cG9ydHNbMF0ubW9kdWxlLCAiZm9vRnVuY3Rpb24iKTsKLSAgICBhc3NlcnQuZXEobS5pbXBvcnRz
WzBdLm5hbWUsICJiYXJGdW5jdGlvbiIpOwotICAgIGFzc2VydC5lcShtLmltcG9ydHNbMF0ua2lu
ZCwgImZ1bmN0aW9uIik7Ci0gICAgYXNzZXJ0LmVxKG0uaW1wb3J0c1sxXS5tb2R1bGUsICJmb29U
YWJsZSIpOwotICAgIGFzc2VydC5lcShtLmltcG9ydHNbMV0ubmFtZSwgImJhclRhYmxlIik7Ci0g
ICAgYXNzZXJ0LmVxKG0uaW1wb3J0c1sxXS5raW5kLCAidGFibGUiKTsKLSAgICBhc3NlcnQuZXEo
bS5pbXBvcnRzWzJdLm1vZHVsZSwgImZvb01lbW9yeSIpOwotICAgIGFzc2VydC5lcShtLmltcG9y
dHNbMl0ubmFtZSwgImJhck1lbW9yeSIpOwotICAgIGFzc2VydC5lcShtLmltcG9ydHNbMl0ua2lu
ZCwgIm1lbW9yeSIpOwotICAgIGFzc2VydC5lcShtLmltcG9ydHNbM10ubW9kdWxlLCAiZm9vR2xv
YmFsIik7Ci0gICAgYXNzZXJ0LmVxKG0uaW1wb3J0c1szXS5uYW1lLCAiYmFyR2xvYmFsIik7Ci0g
ICAgYXNzZXJ0LmVxKG0uaW1wb3J0c1szXS5raW5kLCAiZ2xvYmFsIik7CisgICAgYXNzZXJ0LmVx
KFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzKG0pLmxlbmd0aCwgNCk7CisgICAgYXNzZXJ0LmVx
KFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzKG0pWzBdLm1vZHVsZSwgImZvb0Z1bmN0aW9uIik7
CisgICAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzKG0pWzBdLm5hbWUsICJi
YXJGdW5jdGlvbiIpOworICAgIGFzc2VydC5lcShXZWJBc3NlbWJseS5Nb2R1bGUuaW1wb3J0cyht
KVswXS5raW5kLCAiZnVuY3Rpb24iKTsKKyAgICBhc3NlcnQuZXEoV2ViQXNzZW1ibHkuTW9kdWxl
LmltcG9ydHMobSlbMV0ubW9kdWxlLCAiZm9vVGFibGUiKTsKKyAgICBhc3NlcnQuZXEoV2ViQXNz
ZW1ibHkuTW9kdWxlLmltcG9ydHMobSlbMV0ubmFtZSwgImJhclRhYmxlIik7CisgICAgYXNzZXJ0
LmVxKFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzKG0pWzFdLmtpbmQsICJ0YWJsZSIpOworICAg
IGFzc2VydC5lcShXZWJBc3NlbWJseS5Nb2R1bGUuaW1wb3J0cyhtKVsyXS5tb2R1bGUsICJmb29N
ZW1vcnkiKTsKKyAgICBhc3NlcnQuZXEoV2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMobSlbMl0u
bmFtZSwgImJhck1lbW9yeSIpOworICAgIGFzc2VydC5lcShXZWJBc3NlbWJseS5Nb2R1bGUuaW1w
b3J0cyhtKVsyXS5raW5kLCAibWVtb3J5Iik7CisgICAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5Lk1v
ZHVsZS5pbXBvcnRzKG0pWzNdLm1vZHVsZSwgImZvb0dsb2JhbCIpOworICAgIGFzc2VydC5lcShX
ZWJBc3NlbWJseS5Nb2R1bGUuaW1wb3J0cyhtKVszXS5uYW1lLCAiYmFyR2xvYmFsIik7CisgICAg
YXNzZXJ0LmVxKFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzKG0pWzNdLmtpbmQsICJnbG9iYWwi
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDFlZjMwMDUuLjFkYjMwMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE3LTA0LTIxICBKRiBCYXN0
aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseTogTW9kdWxl
LmV4cG9ydHMsIE1vZHVsZS5pbXBvcnRzLCBNb2R1bGUuY3VzdG9tU2VjdGlvbnMgYXJlIHdyb25n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEwNzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGV5J3Jl
IHN0YXRpYyBwcm9wZXJ0aWVzIG9mIE1vZHVsZSwgbm90IGluc3RhbmNlIHByb3BlcnRpZXMgb2Yg
YSBtb2R1bGUuCisgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9kZXNpZ24v
YmxvYi9tYXN0ZXIvSlMubWQjd2ViYXNzZW1ibHltb2R1bGVleHBvcnRzCisKKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjp3
ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNlY3Rpb25zKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1i
bHlNb2R1bGVJbXBvcnRzKToKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRz
KToKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcDoKKyAg
ICAgICAgKEpTQzo6d2ViQXNzZW1ibHlNb2R1bGVQcm90b0N1c3RvbVNlY3Rpb25zKTogRGVsZXRl
ZC4KKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlNb2R1bGVQcm90b0ltcG9ydHMpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjp3ZWJBc3NlbWJseU1vZHVsZVByb3RvRXhwb3J0cyk6IERlbGV0ZWQu
CisKIDIwMTctMDQtMjEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgU2hhcmVkQXJyYXlCdWZmZXItb3B0LmpzIGZhaWxzIHdpdGggQnJpZ2dzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxl
Q29uc3RydWN0b3IuY3BwCmluZGV4IDljZmUzMzYuLmJiODAyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlQ29u
c3RydWN0b3IuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAor
I2luY2x1ZGUgIkFycmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgog
I2luY2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlci5o
IgpAQCAtMzYsMTIgKzM3LDIwIEBACiAjaW5jbHVkZSAiSlNXZWJBc3NlbWJseUNvbXBpbGVFcnJv
ci5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlIZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNXZWJB
c3NlbWJseU1vZHVsZS5oIgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCiAjaW5jbHVk
ZSAiU3ltYm9sVGFibGUuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGVlLmgiCisjaW5jbHVkZSAiV2Fz
bU1vZHVsZUluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiV2FzbVBsYW4uaCIKICNpbmNsdWRlICJX
ZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAorbmFtZXNwYWNlIEpTQyB7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCB3ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNlY3Rpb25zKEV4ZWNTdGF0ZSopOworc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRzKEV4ZWNT
dGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlN
b2R1bGVFeHBvcnRzKEV4ZWNTdGF0ZSopOworfQorCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1
bGVDb25zdHJ1Y3Rvci5sdXQuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC01MCw5ICs1OSwxMDgg
QEAgY29uc3QgQ2xhc3NJbmZvIFdlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW4KIAogLyogU291cmNlIGZvciBXZWJBc3NlbWJseU1v
ZHVsZUNvbnN0cnVjdG9yLmx1dC5oCiAgQGJlZ2luIGNvbnN0cnVjdG9yVGFibGVXZWJBc3NlbWJs
eU1vZHVsZQorIGN1c3RvbVNlY3Rpb25zIHdlYkFzc2VtYmx5TW9kdWxlQ3VzdG9tU2VjdGlvbnMg
RG9udEVudW18RnVuY3Rpb24gMgorIGltcG9ydHMgICAgICAgIHdlYkFzc2VtYmx5TW9kdWxlSW1w
b3J0cyAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorIGV4cG9ydHMgICAgICAgIHdlYkFzc2Vt
Ymx5TW9kdWxlRXhwb3J0cyAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQogIEBlbmQKICAqLwog
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlQ3VzdG9tU2Vj
dGlvbnMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAg
YXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOworICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNXZWJBc3Nl
bWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWljQ2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4o
dm0sICBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFtb2R1bGUpCisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNzZW1ibHkuTW9kdWxlLmN1c3RvbVNl
Y3Rpb25zIGNhbGxlZCB3aXRoIG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUgYXJndW1lbnQiKSkpKTsK
KworICAgIGNvbnN0IFN0cmluZyBzZWN0aW9uTmFtZVN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDEp
LmdldFN0cmluZyhleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsg
fSk7CisKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51
bGxwdHIsIGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOworCisgICAgY29uc3QgYXV0byYgY3VzdG9tU2VjdGlvbnMgPSBtb2R1bGUtPm1vZHVs
ZUluZm9ybWF0aW9uKCkuY3VzdG9tU2VjdGlvbnM7CisgICAgZm9yIChjb25zdCBXYXNtOjpDdXN0
b21TZWN0aW9uJiBzZWN0aW9uIDogY3VzdG9tU2VjdGlvbnMpIHsKKyAgICAgICAgaWYgKFN0cmlu
Zzo6ZnJvbVVURjgoc2VjdGlvbi5uYW1lKSA9PSBzZWN0aW9uTmFtZVN0cmluZykgeworICAgICAg
ICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNlY3Rpb24ucGF5bG9h
ZC5kYXRhKCksIHNlY3Rpb24ucGF5bG9hZC5zaXplKCkpOworICAgICAgICAgICAgaWYgKCFidWZm
ZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKSk7CisKKyAg
ICAgICAgICAgIFN0cnVjdHVyZSogYXJyYXlCdWZmZXJTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0
aW9uOjpjcmVhdGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBKU1ZhbHVlKCksIGdsb2JhbE9iamVj
dC0+YXJyYXlCdWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCkp
OworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworCisg
ICAgICAgICAgICByZXN1bHQtPnB1c2goZXhlYywgSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBh
cnJheUJ1ZmZlclN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRzKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGpzRHlu
YW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7Cisg
ICAgaWYgKCFtb2R1bGUpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiV2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5
Lk1vZHVsZSBhcmd1bWVudCIpKSkpOworCisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0
RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKworICAgIGNvbnN0IGF1dG8mIGltcG9ydHMgPSBt
b2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuaW1wb3J0czsKKyAgICBpZiAoaW1wb3J0cy5zaXpl
KCkpIHsKKyAgICAgICAgSWRlbnRpZmllciBtb2R1bGUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJtb2R1bGUiKTsKKyAgICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAibmFtZSIpOworICAgICAgICBJZGVudGlmaWVyIGtpbmQgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJraW5kIik7CisgICAgICAgIGZvciAoY29uc3QgV2Fz
bTo6SW1wb3J0JiBpbXAgOiBpbXBvcnRzKSB7CisgICAgICAgICAgICBKU09iamVjdCogb2JqID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwgbW9k
dWxlLCBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4KGltcC5tb2R1bGUpKSk7CisgICAg
ICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwgbmFtZSwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpm
cm9tVVRGOChpbXAuZmllbGQpKSk7CisgICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwga2lu
ZCwganNTdHJpbmcoZXhlYywgU3RyaW5nKG1ha2VTdHJpbmcoaW1wLmtpbmQpKSkpOworICAgICAg
ICAgICAgcmVzdWx0LT5wdXNoKGV4ZWMsIG9iaik7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgd2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8
SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFt
b2R1bGUpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhl
YywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNz
ZW1ibHkuTW9kdWxlLmV4cG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSBh
cmd1bWVudCIpKSkpOworCisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJh
eShleGVjLCBudWxscHRyLCBnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKKworICAgIGNvbnN0IGF1dG8mIGV4cG9ydHMgPSBtb2R1bGUtPm1v
ZHVsZUluZm9ybWF0aW9uKCkuZXhwb3J0czsKKyAgICBpZiAoZXhwb3J0cy5zaXplKCkpIHsKKyAg
ICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibmFt
ZSIpOworICAgICAgICBJZGVudGlmaWVyIGtpbmQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJraW5kIik7CisgICAgICAgIGZvciAoY29uc3QgV2FzbTo6RXhwb3J0JiBleHAgOiBleHBv
cnRzKSB7CisgICAgICAgICAgICBKU09iamVjdCogb2JqID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
ZXhlYyk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CisgICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwgbmFtZSwganNTdHJpbmcoZXhlYywgU3Ry
aW5nOjpmcm9tVVRGOChleHAuZmllbGQpKSk7CisgICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2
bSwga2luZCwganNTdHJpbmcoZXhlYywgU3RyaW5nKG1ha2VTdHJpbmcoZXhwLmtpbmQpKSkpOwor
ICAgICAgICAgICAgcmVzdWx0LT5wdXNoKGV4ZWMsIG9iaik7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNb2R1bGUoRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAK
aW5kZXggNjVhZGMyZC4uMWZlOTBiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcApAQCAtMjgs
MTkgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAotI2luY2x1ZGUgIkFycmF5
QnVmZmVyLmgiCi0jaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKLSNpbmNsdWRlICJKU0Fy
cmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlNb2R1bGUuaCIKLSNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUg
Ildhc21Nb2R1bGVJbmZvcm1hdGlvbi5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlUHJvdG9DdXN0b21TZWN0
aW9ucyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5TW9kdWxlUHJvdG9JbXBvcnRzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVQcm90b0V4cG9ydHMoRXhlY1N0
YXRlKik7Ci19CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5sdXQuaCIK
IApAQCAtNTAsMTA4ICszOCw5IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseU1vZHVsZVBy
b3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvCiAKIC8qIFNvdXJj
ZSBmb3IgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUubHV0LmgKICBAYmVnaW4gcHJvdG90eXBl
VGFibGVXZWJBc3NlbWJseU1vZHVsZQotIGN1c3RvbVNlY3Rpb25zIHdlYkFzc2VtYmx5TW9kdWxl
UHJvdG9DdXN0b21TZWN0aW9ucyBEb250RW51bXxGdW5jdGlvbiAxCi0gaW1wb3J0cyAgICAgICAg
d2ViQXNzZW1ibHlNb2R1bGVQcm90b0ltcG9ydHMgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yIDAK
LSBleHBvcnRzICAgICAgICB3ZWJBc3NlbWJseU1vZHVsZVByb3RvRXhwb3J0cyAgICAgICAgRG9u
dEVudW18QWNjZXNzb3IgMAogIEBlbmQKICAqLwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHdlYkFzc2VtYmx5TW9kdWxlUHJvdG9DdXN0b21TZWN0aW9ucyhFeGVjU3RhdGUqIGV4ZWMp
Ci17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBq
c0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkp
OwotICAgIGlmICghbW9kdWxlKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIldlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuY3VzdG9tU2VjdGlvbnMgY2FsbGVk
IHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSB8dGhpc3wgdmFsdWUiKSkpKTsKLQotICAgIGNv
bnN0IFN0cmluZyBzZWN0aW9uTmFtZVN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLmdldFN0cmlu
ZyhleGVjKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0KLSAg
ICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGds
b2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwot
Ci0gICAgY29uc3QgYXV0byYgY3VzdG9tU2VjdGlvbnMgPSBtb2R1bGUtPm1vZHVsZUluZm9ybWF0
aW9uKCkuY3VzdG9tU2VjdGlvbnM7Ci0gICAgZm9yIChjb25zdCBXYXNtOjpDdXN0b21TZWN0aW9u
JiBzZWN0aW9uIDogY3VzdG9tU2VjdGlvbnMpIHsKLSAgICAgICAgaWYgKFN0cmluZzo6ZnJvbVVU
Rjgoc2VjdGlvbi5uYW1lKSA9PSBzZWN0aW9uTmFtZVN0cmluZykgewotICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNlY3Rpb24ucGF5bG9hZC5kYXRhKCks
IHNlY3Rpb24ucGF5bG9hZC5zaXplKCkpOwotICAgICAgICAgICAgaWYgKCFidWZmZXIpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0
aHJvd1Njb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKSk7Ci0KLSAgICAgICAgICAg
IFN0cnVjdHVyZSogYXJyYXlCdWZmZXJTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVh
dGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBKU1ZhbHVlKCksIGdsb2JhbE9iamVjdC0+YXJyYXlC
dWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCkpOwotICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotCi0gICAgICAgICAg
ICByZXN1bHQtPnB1c2goZXhlYywgSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBhcnJheUJ1ZmZl
clN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpKSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgd2ViQXNzZW1ibHlNb2R1bGVQcm90b0ltcG9ydHMoRXhlY1N0YXRlKiBleGVjKQotewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotCi0gICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWlj
Q2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKLSAgICBp
ZiAoIW1vZHVsZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJX
ZWJBc3NlbWJseS5Nb2R1bGUucHJvdG90eXBlLmltcG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFz
c2VtYmx5Lk1vZHVsZSB8dGhpc3wgdmFsdWUiKSkpKTsKLQotICAgIEpTQXJyYXkqIHJlc3VsdCA9
IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0KTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0KLSAgICBjb25zdCBhdXRvJiBp
bXBvcnRzID0gbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydHM7Ci0gICAgaWYgKGlt
cG9ydHMuc2l6ZSgpKSB7Ci0gICAgICAgIElkZW50aWZpZXIgbW9kdWxlID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAibW9kdWxlIik7Ci0gICAgICAgIElkZW50aWZpZXIgbmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIm5hbWUiKTsKLSAgICAgICAgSWRlbnRpZmllciBr
aW5kID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAia2luZCIpOwotICAgICAgICBmb3Ig
KGNvbnN0IFdhc206OkltcG9ydCYgaW1wIDogaW1wb3J0cykgewotICAgICAgICAgICAgSlNPYmpl
Y3QqIG9iaiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICAgICAgb2JqLT5wdXREaXJl
Y3Qodm0sIG1vZHVsZSwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpmcm9tVVRGOChpbXAubW9kdWxl
KSkpOwotICAgICAgICAgICAgb2JqLT5wdXREaXJlY3Qodm0sIG5hbWUsIGpzU3RyaW5nKGV4ZWMs
IFN0cmluZzo6ZnJvbVVURjgoaW1wLmZpZWxkKSkpOwotICAgICAgICAgICAgb2JqLT5wdXREaXJl
Y3Qodm0sIGtpbmQsIGpzU3RyaW5nKGV4ZWMsIFN0cmluZyhtYWtlU3RyaW5nKGltcC5raW5kKSkp
KTsKLSAgICAgICAgICAgIHJlc3VsdC0+cHVzaChleGVjLCBvYmopOwotICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlUHJvdG9FeHBvcnRzKEV4ZWNTdGF0ZSogZXhl
YykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9
IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT50aGlzVmFsdWUo
KSk7Ci0gICAgaWYgKCFtb2R1bGUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiV2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvdHlwZS5leHBvcnRzIGNhbGxlZCB3aXRo
IG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUgfHRoaXN8IHZhbHVlIikpKSk7Ci0KLSAgICBKU0FycmF5
KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVj
dCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotCi0gICAgY29u
c3QgYXV0byYgZXhwb3J0cyA9IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5leHBvcnRzOwot
ICAgIGlmIChleHBvcnRzLnNpemUoKSkgewotICAgICAgICBJZGVudGlmaWVyIG5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJuYW1lIik7Ci0gICAgICAgIElkZW50aWZpZXIga2lu
ZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtpbmQiKTsKLSAgICAgICAgZm9yIChj
b25zdCBXYXNtOjpFeHBvcnQmIGV4cCA6IGV4cG9ydHMpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0
KiBvYmogPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0
KHZtLCBuYW1lLCBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4KGV4cC5maWVsZCkpKTsK
LSAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBraW5kLCBqc1N0cmluZyhleGVjLCBTdHJp
bmcobWFrZVN0cmluZyhleHAua2luZCkpKSk7Ci0gICAgICAgICAgICByZXN1bHQtPnB1c2goZXhl
Yywgb2JqKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKLX0KLQogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqIFdlYkFzc2VtYmx5TW9kdWxlUHJv
dG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogewogICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdl
YkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlNb2R1bGVQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7Ci0tIAoyLjkuMwoK
</data>
<flag name="review"
          id="329100"
          type_id="1"
          status="+"
          setter="saam"
    />
    <flag name="commit-queue"
          id="329101"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>307897</attachid>
            <date>2017-04-22 00:11:16 -0700</date>
            <delta_ts>2017-04-22 00:52:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-WebAssembly-Module.exports-Module.imports-Module.cus.patch</filename>
            <type>text/plain</type>
            <size>23631</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA0N2UwOWY1MzVkOGM3NzAwN2FlZDdkNGRiNzQ5Mzg3MmNmNDQ5MGNhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBTYXQsIDIyIEFwciAyMDE3IDAwOjEwOjU1IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2ViQXNz
ZW1ibHk6IE1vZHVsZS5leHBvcnRzLCBNb2R1bGUuaW1wb3J0cywKIE1vZHVsZS5jdXN0b21TZWN0
aW9ucyBhcmUgd3JvbmcKCi0tLQogSlNUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgMjMgKysrKysKIEpTVGVzdHMvd2FzbS9qcy1hcGkvTW9kdWxlLmN1
c3RvbVNlY3Rpb24uanMgICAgICAgIHwgIDE5ICsrLS0KIEpTVGVzdHMvd2FzbS9qcy1hcGkvTW9k
dWxlLmV4cG9ydHMuanMgICAgICAgICAgICAgIHwgIDI3ICsrLS0tCiBKU1Rlc3RzL3dhc20vanMt
YXBpL01vZHVsZS5pbXBvcnRzLmpzICAgICAgICAgICAgICB8ICAzNSArKystLS0tCiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICB8ICAxOSArKysrCiAu
Li4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcCAgICAgICB8IDEwNyAr
KysrKysrKysrKysrKysrKysrLQogLi4uL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5
cGUuY3BwICAgICAgICAgfCAxMTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA3IGZpbGVzIGNoYW5n
ZWQsIDE5MCBpbnNlcnRpb25zKCspLCAxNTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCBmNGY5NWFiLi41YjBlNjkz
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpA
QCAtMSw1ICsxLDI4IEBACiAyMDE3LTA0LTIxICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxl
LmNvbT4KIAorICAgICAgICBXZWJBc3NlbWJseTogTW9kdWxlLmV4cG9ydHMsIE1vZHVsZS5pbXBv
cnRzLCBNb2R1bGUuY3VzdG9tU2VjdGlvbnMgYXJlIHdyb25nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzEwNzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBTYWFtIEJhcmF0aS4KKworICAgICAgICBUaGV5J3JlIHN0YXRpYyBwcm9wZXJ0aWVzIG9mIE1v
ZHVsZSwgbm90IGluc3RhbmNlIHByb3BlcnRpZXMgb2YgYSBtb2R1bGUuCisgICAgICAgIGh0dHBz
Oi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9kZXNpZ24vYmxvYi9tYXN0ZXIvSlMubWQjd2ViYXNz
ZW1ibHltb2R1bGVleHBvcnRzCisKKyAgICAgICAgKiB3YXNtL2pzLWFwaS9Nb2R1bGUuY3VzdG9t
U2VjdGlvbi5qczoKKyAgICAgICAgKGFzc2VydC50aHJvd3MuV2ViQXNzZW1ibHkuTW9kdWxlLmN1
c3RvbVNlY3Rpb25zKToKKyAgICAgICAgKGFzc2VydC5lcSk6CisgICAgICAgIChhc3NlcnQudGhy
b3dzLldlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuY3VzdG9tU2VjdGlvbnMpOiBEZWxldGVk
LgorICAgICAgICAqIHdhc20vanMtYXBpL01vZHVsZS5leHBvcnRzLmpzOgorICAgICAgICAoYXNz
ZXJ0LnRocm93cy5XZWJBc3NlbWJseS5Nb2R1bGUuZXhwb3J0cyk6CisgICAgICAgIChhc3NlcnQu
dHJ1dGh5KToKKyAgICAgICAgKGFzc2VydC50aHJvd3MuV2ViQXNzZW1ibHkuTW9kdWxlLnByb3Rv
dHlwZS5leHBvcnRzKTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzLWFwaS9Nb2R1bGUuaW1w
b3J0cy5qczoKKyAgICAgICAgKGFzc2VydC50aHJvd3MuV2ViQXNzZW1ibHkuTW9kdWxlLmltcG9y
dHMpOgorICAgICAgICAoYXNzZXJ0LnRydXRoeSk6CisgICAgICAgIChhc3NlcnQudGhyb3dzLldl
YkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuaW1wb3J0cyk6IERlbGV0ZWQuCisKKzIwMTctMDQt
MjEgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCiAgICAgICAgIFNpbGVuY2Ug
bm9pc3kgdGVzdAogCiAgICAgICAgIFVucmV2aWV3ZWQsIEZpbCAvIE1pY2hhZWwgYW5kIEkgdGFs
a2VkIGFib3V0IGl0IGluIHRoZSBjb3JyaWRvci4gSQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNt
L2pzLWFwaS9Nb2R1bGUuY3VzdG9tU2VjdGlvbi5qcyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvTW9k
dWxlLmN1c3RvbVNlY3Rpb24uanMKaW5kZXggMGE3MGNlOS4uY2NkMWE3MiAxMDA2NDQKLS0tIGEv
SlNUZXN0cy93YXNtL2pzLWFwaS9Nb2R1bGUuY3VzdG9tU2VjdGlvbi5qcworKysgYi9KU1Rlc3Rz
L3dhc20vanMtYXBpL01vZHVsZS5jdXN0b21TZWN0aW9uLmpzCkBAIC0xLDIwICsxLDIxIEBACiBp
bXBvcnQgQnVpbGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKIGltcG9ydCAqIGFzIGFzc2VydCBm
cm9tICcuLi9hc3NlcnQuanMnOwogCi1hc3NlcnQudGhyb3dzKCgpID0+IFdlYkFzc2VtYmx5Lk1v
ZHVsZS5wcm90b3R5cGUuY3VzdG9tU2VjdGlvbnModW5kZWZpbmVkLCAiIiksIFR5cGVFcnJvciwg
YFdlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuY3VzdG9tU2VjdGlvbnMgY2FsbGVkIHdpdGgg
bm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSB8dGhpc3wgdmFsdWVgKTsKK2Fzc2VydC50aHJvd3MoKCkg
PT4gV2ViQXNzZW1ibHkuTW9kdWxlLmN1c3RvbVNlY3Rpb25zKHVuZGVmaW5lZCwgIiIpLCBUeXBl
RXJyb3IsIGBXZWJBc3NlbWJseS5Nb2R1bGUuY3VzdG9tU2VjdGlvbnMgY2FsbGVkIHdpdGggbm9u
IFdlYkFzc2VtYmx5Lk1vZHVsZSBhcmd1bWVudGApOworYXNzZXJ0LmVxKFdlYkFzc2VtYmx5Lk1v
ZHVsZS5jdXN0b21TZWN0aW9ucy5sZW5ndGgsIDIpOwogCiB7CiAgICAgY29uc3QgZW1wdHkgPSBu
ZXcgV2ViQXNzZW1ibHkuTW9kdWxlKChuZXcgQnVpbGRlcigpKS5XZWJBc3NlbWJseSgpLmdldCgp
KTsKLSAgICBhc3NlcnQuaXNBcnJheShlbXB0eS5jdXN0b21TZWN0aW9ucygiIikpOwotICAgIGFz
c2VydC5lcShlbXB0eS5jdXN0b21TZWN0aW9ucygiIikubGVuZ3RoLCAwKTsKKyAgICBhc3NlcnQu
aXNBcnJheShXZWJBc3NlbWJseS5Nb2R1bGUuY3VzdG9tU2VjdGlvbnMoZW1wdHksICIiKSk7Cisg
ICAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5Lk1vZHVsZS5jdXN0b21TZWN0aW9ucyhlbXB0eSwgIiIp
Lmxlbmd0aCwgMCk7CiB9CiAKIHsKICAgICBjb25zdCBzaW5nbGUgPSBuZXcgV2ViQXNzZW1ibHku
TW9kdWxlKChuZXcgQnVpbGRlcigpKQogICAgICAgICAuVW5rbm93bigiaGVsbG8iKS5CeXRlKDB4
MDApLkJ5dGUoMHg0MikuQnl0ZSgweEZGKS5FbmQoKQogICAgICAgICAuV2ViQXNzZW1ibHkoKS5n
ZXQoKSk7Ci0gICAgYXNzZXJ0LmVxKHNpbmdsZS5jdXN0b21TZWN0aW9ucygiIikubGVuZ3RoLCAw
KTsKLSAgICBjb25zdCBoZWxsbyA9IHNpbmdsZS5jdXN0b21TZWN0aW9ucygiaGVsbG8iKTsKKyAg
ICBhc3NlcnQuZXEoV2ViQXNzZW1ibHkuTW9kdWxlLmN1c3RvbVNlY3Rpb25zKHNpbmdsZSwgIiIp
Lmxlbmd0aCwgMCk7CisgICAgY29uc3QgaGVsbG8gPSBXZWJBc3NlbWJseS5Nb2R1bGUuY3VzdG9t
U2VjdGlvbnMoc2luZ2xlLCAiaGVsbG8iKTsKICAgICBhc3NlcnQuZXEoaGVsbG8ubGVuZ3RoLCAx
KTsKICAgICBhc3NlcnQuZXEoaGVsbG9bMF0uYnl0ZUxlbmd0aCwgMyk7CiAgICAgY29uc3QgaGVs
bG9JOCA9IG5ldyBJbnQ4QXJyYXkoaGVsbG9bMF0pOwpAQCAtMjcsNyArMjgsNyBAQCBhc3NlcnQu
dGhyb3dzKCgpID0+IFdlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuY3VzdG9tU2VjdGlvbnMo
dW5kZWZpbmVkLCAiIiksCiAgICAgY29uc3QgdW5pY29kZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1
bGUoKG5ldyBCdWlsZGVyKCkpCiAgICAgICAgIC5Vbmtub3duKCLwn5Go4oCN4p2k77iP4oCN8J+S
i+KAjfCfkagiKS5CeXRlKDQyKS5FbmQoKQogICAgICAgICAuV2ViQXNzZW1ibHkoKS5nZXQoKSk7
Ci0gICAgY29uc3QgZmFtaWx5ID0gdW5pY29kZS5jdXN0b21TZWN0aW9ucygi8J+RqOKAjeKdpO+4
j+KAjfCfkovigI3wn5GoIik7CisgICAgY29uc3QgZmFtaWx5ID0gV2ViQXNzZW1ibHkuTW9kdWxl
LmN1c3RvbVNlY3Rpb25zKHVuaWNvZGUsICLwn5Go4oCN4p2k77iP4oCN8J+Si+KAjfCfkagiKTsK
ICAgICBhc3NlcnQuZXEoZmFtaWx5Lmxlbmd0aCwgMSk7CiAgICAgYXNzZXJ0LmVxKGZhbWlseVsw
XS5ieXRlTGVuZ3RoLCAxKTsKICAgICBjb25zdCBmYW1pbHlJOCA9IG5ldyBJbnQ4QXJyYXkoZmFt
aWx5WzBdKTsKQEAgLTQzLDEzICs0NCwxMyBAQCBhc3NlcnQudGhyb3dzKCgpID0+IFdlYkFzc2Vt
Ymx5Lk1vZHVsZS5wcm90b3R5cGUuY3VzdG9tU2VjdGlvbnModW5kZWZpbmVkLCAiIiksCiAgICAg
ICAgIC5Vbmtub3duKCJvbmUiKS5CeXRlKDQpLkJ5dGUoNCkuQnl0ZSg0KS5CeXRlKDQpLkJ5dGUo
NCkuRW5kKCkKICAgICAgICAgLldlYkFzc2VtYmx5KCkuZ2V0KCkpOwogCi0gICAgY29uc3QgemVy
byA9IG1hbnkuY3VzdG9tU2VjdGlvbnMoInplcm8iKTsKKyAgICBjb25zdCB6ZXJvID0gV2ViQXNz
ZW1ibHkuTW9kdWxlLmN1c3RvbVNlY3Rpb25zKG1hbnksICJ6ZXJvIik7CiAgICAgYXNzZXJ0LmVx
KHplcm8ubGVuZ3RoLCAxKTsKICAgICBhc3NlcnQuZXEoemVyb1swXS5ieXRlTGVuZ3RoLCAxKTsK
ICAgICBjb25zdCB6ZXJvSTggPSBuZXcgSW50OEFycmF5KHplcm9bMF0pOwogICAgIGFzc2VydC5l
cSh6ZXJvSThbMF0sIDApOwogCi0gICAgY29uc3QgdHdvID0gbWFueS5jdXN0b21TZWN0aW9ucygi
dHdvIik7CisgICAgY29uc3QgdHdvID0gV2ViQXNzZW1ibHkuTW9kdWxlLmN1c3RvbVNlY3Rpb25z
KG1hbnksICJ0d28iKTsKICAgICBhc3NlcnQuZXEodHdvLmxlbmd0aCwgMSk7CiAgICAgYXNzZXJ0
LmVxKHR3b1swXS5ieXRlTGVuZ3RoLCA0KTsKICAgICBjb25zdCB0d29JOCA9IG5ldyBJbnQ4QXJy
YXkodHdvWzBdKTsKQEAgLTU4LDcgKzU5LDcgQEAgYXNzZXJ0LnRocm93cygoKSA9PiBXZWJBc3Nl
bWJseS5Nb2R1bGUucHJvdG90eXBlLmN1c3RvbVNlY3Rpb25zKHVuZGVmaW5lZCwgIiIpLAogICAg
IGFzc2VydC5lcSh0d29JOFsyXSwgMyk7CiAgICAgYXNzZXJ0LmVxKHR3b0k4WzNdLCAzKTsKIAot
ICAgIGNvbnN0IG9uZSA9IG1hbnkuY3VzdG9tU2VjdGlvbnMoIm9uZSIpOworICAgIGNvbnN0IG9u
ZSA9IFdlYkFzc2VtYmx5Lk1vZHVsZS5jdXN0b21TZWN0aW9ucyhtYW55LCAib25lIik7CiAgICAg
YXNzZXJ0LmVxKG9uZS5sZW5ndGgsIDMpOwogICAgIGxldCBzZWVuID0gMDsKICAgICBjb25zdCBl
eHBlY3QgPSBbCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL01vZHVsZS5leHBvcnRz
LmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS9Nb2R1bGUuZXhwb3J0cy5qcwppbmRleCA1MTQwNDdi
Li43NmUzZmQzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vanMtYXBpL01vZHVsZS5leHBvcnRz
LmpzCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvTW9kdWxlLmV4cG9ydHMuanMKQEAgLTEsMTMg
KzEsMTQgQEAKIGltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwogaW1wb3J0ICog
YXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CiAKLWFzc2VydC50aHJvd3MoKCkgPT4gV2Vi
QXNzZW1ibHkuTW9kdWxlLnByb3RvdHlwZS5leHBvcnRzKHVuZGVmaW5lZCwgIiIpLCBUeXBlRXJy
b3IsIGBXZWJBc3NlbWJseS5Nb2R1bGUucHJvdG90eXBlLmV4cG9ydHMgY2FsbGVkIHdpdGggbm9u
IFdlYkFzc2VtYmx5Lk1vZHVsZSB8dGhpc3wgdmFsdWVgKTsKK2Fzc2VydC50aHJvd3MoKCkgPT4g
V2ViQXNzZW1ibHkuTW9kdWxlLmV4cG9ydHModW5kZWZpbmVkKSwgVHlwZUVycm9yLCBgV2ViQXNz
ZW1ibHkuTW9kdWxlLmV4cG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSBh
cmd1bWVudGApOworYXNzZXJ0LmVxKFdlYkFzc2VtYmx5Lk1vZHVsZS5leHBvcnRzLmxlbmd0aCwg
MSk7CiAKIHsKICAgICBjb25zdCBtID0gbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSgobmV3IEJ1aWxk
ZXIoKSkuV2ViQXNzZW1ibHkoKS5nZXQoKSk7Ci0gICAgYXNzZXJ0LmlzQXJyYXkobS5leHBvcnRz
KTsKLSAgICBhc3NlcnQuZXEobS5leHBvcnRzLmxlbmd0aCwgMCk7Ci0gICAgYXNzZXJ0LnRydXRo
eShtLmV4cG9ydHMgIT09IG0uZXhwb3J0cyk7CisgICAgYXNzZXJ0LmlzQXJyYXkoV2ViQXNzZW1i
bHkuTW9kdWxlLmV4cG9ydHMobSkpOworICAgIGFzc2VydC5lcShXZWJBc3NlbWJseS5Nb2R1bGUu
ZXhwb3J0cyhtKS5sZW5ndGgsIDApOworICAgIGFzc2VydC50cnV0aHkoV2ViQXNzZW1ibHkuTW9k
dWxlLmV4cG9ydHMobSkgIT09IFdlYkFzc2VtYmx5Lk1vZHVsZS5leHBvcnRzKG0pKTsKIH0KIAog
ewpAQCAtMzAsMTMgKzMxLDEzIEBAIGFzc2VydC50aHJvd3MoKCkgPT4gV2ViQXNzZW1ibHkuTW9k
dWxlLnByb3RvdHlwZS5leHBvcnRzKHVuZGVmaW5lZCwgIiIpLCBUeXBlRXJyCiAgICAgICAgICAg
ICAgICAgLkZ1bmN0aW9uKCJmdW5jIiwgeyBwYXJhbXM6IFtdIH0pLlJldHVybigpLkVuZCgpCiAg
ICAgICAgICAgICAuRW5kKCkKICAgICAgICAgICAgIC5XZWJBc3NlbWJseSgpLmdldCgpKTsKLSAg
ICBhc3NlcnQuZXEobS5leHBvcnRzLmxlbmd0aCwgNCk7Ci0gICAgYXNzZXJ0LmVxKG0uZXhwb3J0
c1swXS5uYW1lLCAiZnVuYyIpOwotICAgIGFzc2VydC5lcShtLmV4cG9ydHNbMF0ua2luZCwgImZ1
bmN0aW9uIik7Ci0gICAgYXNzZXJ0LmVxKG0uZXhwb3J0c1sxXS5uYW1lLCAidGFiIik7Ci0gICAg
YXNzZXJ0LmVxKG0uZXhwb3J0c1sxXS5raW5kLCAidGFibGUiKTsKLSAgICBhc3NlcnQuZXEobS5l
eHBvcnRzWzJdLm5hbWUsICJtZW0iKTsKLSAgICBhc3NlcnQuZXEobS5leHBvcnRzWzJdLmtpbmQs
ICJtZW1vcnkiKTsKLSAgICBhc3NlcnQuZXEobS5leHBvcnRzWzNdLm5hbWUsICJnbG9iIik7Ci0g
ICAgYXNzZXJ0LmVxKG0uZXhwb3J0c1szXS5raW5kLCAiZ2xvYmFsIik7CisgICAgYXNzZXJ0LmVx
KFdlYkFzc2VtYmx5Lk1vZHVsZS5leHBvcnRzKG0pLmxlbmd0aCwgNCk7CisgICAgYXNzZXJ0LmVx
KFdlYkFzc2VtYmx5Lk1vZHVsZS5leHBvcnRzKG0pWzBdLm5hbWUsICJmdW5jIik7CisgICAgYXNz
ZXJ0LmVxKFdlYkFzc2VtYmx5Lk1vZHVsZS5leHBvcnRzKG0pWzBdLmtpbmQsICJmdW5jdGlvbiIp
OworICAgIGFzc2VydC5lcShXZWJBc3NlbWJseS5Nb2R1bGUuZXhwb3J0cyhtKVsxXS5uYW1lLCAi
dGFiIik7CisgICAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5Lk1vZHVsZS5leHBvcnRzKG0pWzFdLmtp
bmQsICJ0YWJsZSIpOworICAgIGFzc2VydC5lcShXZWJBc3NlbWJseS5Nb2R1bGUuZXhwb3J0cyht
KVsyXS5uYW1lLCAibWVtIik7CisgICAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5Lk1vZHVsZS5leHBv
cnRzKG0pWzJdLmtpbmQsICJtZW1vcnkiKTsKKyAgICBhc3NlcnQuZXEoV2ViQXNzZW1ibHkuTW9k
dWxlLmV4cG9ydHMobSlbM10ubmFtZSwgImdsb2IiKTsKKyAgICBhc3NlcnQuZXEoV2ViQXNzZW1i
bHkuTW9kdWxlLmV4cG9ydHMobSlbM10ua2luZCwgImdsb2JhbCIpOwogfQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy93YXNtL2pzLWFwaS9Nb2R1bGUuaW1wb3J0cy5qcyBiL0pTVGVzdHMvd2FzbS9qcy1h
cGkvTW9kdWxlLmltcG9ydHMuanMKaW5kZXggMjczNTE0ZC4uMWZjMmRkNSAxMDA2NDQKLS0tIGEv
SlNUZXN0cy93YXNtL2pzLWFwaS9Nb2R1bGUuaW1wb3J0cy5qcworKysgYi9KU1Rlc3RzL3dhc20v
anMtYXBpL01vZHVsZS5pbXBvcnRzLmpzCkBAIC0xLDEzICsxLDE0IEBACiBpbXBvcnQgQnVpbGRl
ciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKIGltcG9ydCAqIGFzIGFzc2VydCBmcm9tICcuLi9hc3Nl
cnQuanMnOwogCi1hc3NlcnQudGhyb3dzKCgpID0+IFdlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5
cGUuaW1wb3J0cyh1bmRlZmluZWQsICIiKSwgVHlwZUVycm9yLCBgV2ViQXNzZW1ibHkuTW9kdWxl
LnByb3RvdHlwZS5pbXBvcnRzIGNhbGxlZCB3aXRoIG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUgfHRo
aXN8IHZhbHVlYCk7Cithc3NlcnQudGhyb3dzKCgpID0+IFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBv
cnRzKHVuZGVmaW5lZCksIFR5cGVFcnJvciwgYFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzIGNh
bGxlZCB3aXRoIG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUgYXJndW1lbnRgKTsKK2Fzc2VydC5lcShX
ZWJBc3NlbWJseS5Nb2R1bGUuaW1wb3J0cy5sZW5ndGgsIDEpOwogCiB7CiAgICAgY29uc3QgbSA9
IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoKG5ldyBCdWlsZGVyKCkpLldlYkFzc2VtYmx5KCkuZ2V0
KCkpOwotICAgIGFzc2VydC5pc0FycmF5KG0uaW1wb3J0cyk7Ci0gICAgYXNzZXJ0LmVxKG0uaW1w
b3J0cy5sZW5ndGgsIDApOwotICAgIGFzc2VydC50cnV0aHkobS5leHBvcnRzICE9PSBtLmV4cG9y
dHMpOworICAgIGFzc2VydC5pc0FycmF5KFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzKG0pKTsK
KyAgICBhc3NlcnQuZXEoV2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMobSkubGVuZ3RoLCAwKTsK
KyAgICBhc3NlcnQudHJ1dGh5KFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzKG0pICE9PSBXZWJB
c3NlbWJseS5Nb2R1bGUuaW1wb3J0cyhtKSk7CiB9CiAKIHsKQEAgLTIxLDE3ICsyMiwxNyBAQCBh
c3NlcnQudGhyb3dzKCgpID0+IFdlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuaW1wb3J0cyh1
bmRlZmluZWQsICIiKSwgVHlwZUVycgogICAgICAgICAgICAgICAgIC5HbG9iYWwoKS5JMzIoImZv
b0dsb2JhbCIsICJiYXJHbG9iYWwiLCAiaW1tdXRhYmxlIikuRW5kKCkKICAgICAgICAgICAgIC5F
bmQoKQogICAgICAgICAgICAgLldlYkFzc2VtYmx5KCkuZ2V0KCkpOwotICAgIGFzc2VydC5lcSht
LmltcG9ydHMubGVuZ3RoLCA0KTsKLSAgICBhc3NlcnQuZXEobS5pbXBvcnRzWzBdLm1vZHVsZSwg
ImZvb0Z1bmN0aW9uIik7Ci0gICAgYXNzZXJ0LmVxKG0uaW1wb3J0c1swXS5uYW1lLCAiYmFyRnVu
Y3Rpb24iKTsKLSAgICBhc3NlcnQuZXEobS5pbXBvcnRzWzBdLmtpbmQsICJmdW5jdGlvbiIpOwot
ICAgIGFzc2VydC5lcShtLmltcG9ydHNbMV0ubW9kdWxlLCAiZm9vVGFibGUiKTsKLSAgICBhc3Nl
cnQuZXEobS5pbXBvcnRzWzFdLm5hbWUsICJiYXJUYWJsZSIpOwotICAgIGFzc2VydC5lcShtLmlt
cG9ydHNbMV0ua2luZCwgInRhYmxlIik7Ci0gICAgYXNzZXJ0LmVxKG0uaW1wb3J0c1syXS5tb2R1
bGUsICJmb29NZW1vcnkiKTsKLSAgICBhc3NlcnQuZXEobS5pbXBvcnRzWzJdLm5hbWUsICJiYXJN
ZW1vcnkiKTsKLSAgICBhc3NlcnQuZXEobS5pbXBvcnRzWzJdLmtpbmQsICJtZW1vcnkiKTsKLSAg
ICBhc3NlcnQuZXEobS5pbXBvcnRzWzNdLm1vZHVsZSwgImZvb0dsb2JhbCIpOwotICAgIGFzc2Vy
dC5lcShtLmltcG9ydHNbM10ubmFtZSwgImJhckdsb2JhbCIpOwotICAgIGFzc2VydC5lcShtLmlt
cG9ydHNbM10ua2luZCwgImdsb2JhbCIpOworICAgIGFzc2VydC5lcShXZWJBc3NlbWJseS5Nb2R1
bGUuaW1wb3J0cyhtKS5sZW5ndGgsIDQpOworICAgIGFzc2VydC5lcShXZWJBc3NlbWJseS5Nb2R1
bGUuaW1wb3J0cyhtKVswXS5tb2R1bGUsICJmb29GdW5jdGlvbiIpOworICAgIGFzc2VydC5lcShX
ZWJBc3NlbWJseS5Nb2R1bGUuaW1wb3J0cyhtKVswXS5uYW1lLCAiYmFyRnVuY3Rpb24iKTsKKyAg
ICBhc3NlcnQuZXEoV2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMobSlbMF0ua2luZCwgImZ1bmN0
aW9uIik7CisgICAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzKG0pWzFdLm1v
ZHVsZSwgImZvb1RhYmxlIik7CisgICAgYXNzZXJ0LmVxKFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBv
cnRzKG0pWzFdLm5hbWUsICJiYXJUYWJsZSIpOworICAgIGFzc2VydC5lcShXZWJBc3NlbWJseS5N
b2R1bGUuaW1wb3J0cyhtKVsxXS5raW5kLCAidGFibGUiKTsKKyAgICBhc3NlcnQuZXEoV2ViQXNz
ZW1ibHkuTW9kdWxlLmltcG9ydHMobSlbMl0ubW9kdWxlLCAiZm9vTWVtb3J5Iik7CisgICAgYXNz
ZXJ0LmVxKFdlYkFzc2VtYmx5Lk1vZHVsZS5pbXBvcnRzKG0pWzJdLm5hbWUsICJiYXJNZW1vcnki
KTsKKyAgICBhc3NlcnQuZXEoV2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMobSlbMl0ua2luZCwg
Im1lbW9yeSIpOworICAgIGFzc2VydC5lcShXZWJBc3NlbWJseS5Nb2R1bGUuaW1wb3J0cyhtKVsz
XS5tb2R1bGUsICJmb29HbG9iYWwiKTsKKyAgICBhc3NlcnQuZXEoV2ViQXNzZW1ibHkuTW9kdWxl
LmltcG9ydHMobSlbM10ubmFtZSwgImJhckdsb2JhbCIpOworICAgIGFzc2VydC5lcShXZWJBc3Nl
bWJseS5Nb2R1bGUuaW1wb3J0cyhtKVszXS5raW5kLCAiZ2xvYmFsIik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwppbmRleCAxZWYzMDA1Li4wM2NmNmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxNy0wNC0yMSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHk6IE1vZHVsZS5leHBvcnRzLCBNb2R1bGUu
aW1wb3J0cywgTW9kdWxlLmN1c3RvbVNlY3Rpb25zIGFyZSB3cm9uZworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcxMDc4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgVGhleSdyZSBzdGF0aWMgcHJvcGVydGllcyBv
ZiBNb2R1bGUsIG5vdCBpbnN0YW5jZSBwcm9wZXJ0aWVzIG9mIGEgbW9kdWxlLgorICAgICAgICBo
dHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL0pTLm1kI3dl
YmFzc2VtYmx5bW9kdWxlZXhwb3J0cworCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseU1v
ZHVsZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6d2ViQXNzZW1ibHlNb2R1bGVDdXN0
b21TZWN0aW9ucyk6CisgICAgICAgIChKU0M6OndlYkFzc2VtYmx5TW9kdWxlSW1wb3J0cyk6Cisg
ICAgICAgIChKU0M6OndlYkFzc2VtYmx5TW9kdWxlRXhwb3J0cyk6CisgICAgICAgICogd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OndlYkFzc2Vt
Ymx5TW9kdWxlUHJvdG9DdXN0b21TZWN0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ondl
YkFzc2VtYmx5TW9kdWxlUHJvdG9JbXBvcnRzKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6d2Vi
QXNzZW1ibHlNb2R1bGVQcm90b0V4cG9ydHMpOiBEZWxldGVkLgorCiAyMDE3LTA0LTIxICBTYWFt
IEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNoYXJlZEFycmF5QnVmZmVy
LW9wdC5qcyBmYWlscyB3aXRoIEJyaWdncwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcAppbmRl
eCA5Y2ZlMzM2Li4wODI5ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yLmNwcApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw2ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJBcnJheUJ1ZmZl
ci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJGdW5jdGlvblBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXIuaCIKQEAgLTM2LDEyICszNywyMCBA
QAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlDb21waWxlRXJyb3IuaCIKICNpbmNsdWRlICJKU1dl
YkFzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNp
bmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlN5bWJvbFRhYmxlLmgiCiAj
aW5jbHVkZSAiV2FzbUNhbGxlZS5oIgorI2luY2x1ZGUgIldhc21Nb2R1bGVJbmZvcm1hdGlvbi5o
IgogI2luY2x1ZGUgIldhc21QbGFuLmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlNb2R1bGVQcm90
b3R5cGUuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKK25hbWVzcGFjZSBKU0Mg
eworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVD
dXN0b21TZWN0aW9ucyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlSW1wb3J0cyhFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlRXhwb3J0cyhFeGVjU3Rh
dGUqKTsKK30KKwogI2luY2x1ZGUgIldlYkFzc2VtYmx5TW9kdWxlQ29uc3RydWN0b3IubHV0Lmgi
CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtNTAsOSArNTksMTA1IEBAIGNvbnN0IENsYXNzSW5mbyBX
ZWJBc3NlbWJseU1vZHVsZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNl
OjpzX2luCiAKIC8qIFNvdXJjZSBmb3IgV2ViQXNzZW1ibHlNb2R1bGVDb25zdHJ1Y3Rvci5sdXQu
aAogIEBiZWdpbiBjb25zdHJ1Y3RvclRhYmxlV2ViQXNzZW1ibHlNb2R1bGUKKyBjdXN0b21TZWN0
aW9ucyB3ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNlY3Rpb25zIERvbnRFbnVtfEZ1bmN0aW9uIDIK
KyBpbXBvcnRzICAgICAgICB3ZWJBc3NlbWJseU1vZHVsZUltcG9ydHMgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDEKKyBleHBvcnRzICAgICAgICB3ZWJBc3NlbWJseU1vZHVsZUV4cG9ydHMgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKICBAZW5kCiAgKi8KIAorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCB3ZWJBc3NlbWJseU1vZHVsZUN1c3RvbVNlY3Rpb25zKEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9
IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT5hcmd1bWVudCgw
KSk7CisgICAgaWYgKCFtb2R1bGUpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiV2ViQXNzZW1ibHkuTW9kdWxlLmN1c3RvbVNlY3Rpb25zIGNhbGxlZCB3aXRoIG5v
biBXZWJBc3NlbWJseS5Nb2R1bGUgYXJndW1lbnQiKSkpKTsKKworICAgIGNvbnN0IFN0cmluZyBz
ZWN0aW9uTmFtZVN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDEpLmdldFN0cmluZyhleGVjKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisKKyAgICBKU0FycmF5KiBy
ZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVjdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworCisgICAgY29uc3Qg
YXV0byYgY3VzdG9tU2VjdGlvbnMgPSBtb2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuY3VzdG9t
U2VjdGlvbnM7CisgICAgZm9yIChjb25zdCBXYXNtOjpDdXN0b21TZWN0aW9uJiBzZWN0aW9uIDog
Y3VzdG9tU2VjdGlvbnMpIHsKKyAgICAgICAgaWYgKFN0cmluZzo6ZnJvbVVURjgoc2VjdGlvbi5u
YW1lKSA9PSBzZWN0aW9uTmFtZVN0cmluZykgeworICAgICAgICAgICAgYXV0byBidWZmZXIgPSBB
cnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNlY3Rpb24ucGF5bG9hZC5kYXRhKCksIHNlY3Rpb24ucGF5
bG9hZC5zaXplKCkpOworICAgICAgICAgICAgaWYgKCFidWZmZXIpCisgICAgICAgICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0aHJvd1Njb3BlLCBj
cmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKSk7CisKKyAgICAgICAgICAgIHJlc3VsdC0+cHVz
aChleGVjLCBKU0FycmF5QnVmZmVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+bV9hcnJheUJ1
ZmZlclN0cnVjdHVyZS5nZXQoKSwgV1RGTW92ZShidWZmZXIpKSk7CisgICAgICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVJbXBvcnRzKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGpzRHlu
YW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7Cisg
ICAgaWYgKCFtb2R1bGUpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiV2ViQXNzZW1ibHkuTW9kdWxlLmltcG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5
Lk1vZHVsZSBhcmd1bWVudCIpKSkpOworCisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0
RW1wdHlBcnJheShleGVjLCBudWxscHRyLCBnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKworICAgIGNvbnN0IGF1dG8mIGltcG9ydHMgPSBt
b2R1bGUtPm1vZHVsZUluZm9ybWF0aW9uKCkuaW1wb3J0czsKKyAgICBpZiAoaW1wb3J0cy5zaXpl
KCkpIHsKKyAgICAgICAgSWRlbnRpZmllciBtb2R1bGUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KGV4ZWMsICJtb2R1bGUiKTsKKyAgICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAibmFtZSIpOworICAgICAgICBJZGVudGlmaWVyIGtpbmQgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJraW5kIik7CisgICAgICAgIGZvciAoY29uc3QgV2Fz
bTo6SW1wb3J0JiBpbXAgOiBpbXBvcnRzKSB7CisgICAgICAgICAgICBKU09iamVjdCogb2JqID0g
Y29uc3RydWN0RW1wdHlPYmplY3QoZXhlYyk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwgbW9k
dWxlLCBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4KGltcC5tb2R1bGUpKSk7CisgICAg
ICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwgbmFtZSwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpm
cm9tVVRGOChpbXAuZmllbGQpKSk7CisgICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwga2lu
ZCwganNTdHJpbmcoZXhlYywgU3RyaW5nKG1ha2VTdHJpbmcoaW1wLmtpbmQpKSkpOworICAgICAg
ICAgICAgcmVzdWx0LT5wdXNoKGV4ZWMsIG9iaik7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgd2ViQXNzZW1ibHlNb2R1bGVFeHBvcnRzKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBWTSYg
dm0gPSBleGVjLT52bSgpOworICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGpzRHluYW1pY0Nhc3Q8
SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgaWYgKCFt
b2R1bGUpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZXhl
YywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiV2ViQXNz
ZW1ibHkuTW9kdWxlLmV4cG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSBh
cmd1bWVudCIpKSkpOworCisgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJh
eShleGVjLCBudWxscHRyLCBnbG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKKworICAgIGNvbnN0IGF1dG8mIGV4cG9ydHMgPSBtb2R1bGUtPm1v
ZHVsZUluZm9ybWF0aW9uKCkuZXhwb3J0czsKKyAgICBpZiAoZXhwb3J0cy5zaXplKCkpIHsKKyAg
ICAgICAgSWRlbnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAibmFt
ZSIpOworICAgICAgICBJZGVudGlmaWVyIGtpbmQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4
ZWMsICJraW5kIik7CisgICAgICAgIGZvciAoY29uc3QgV2FzbTo6RXhwb3J0JiBleHAgOiBleHBv
cnRzKSB7CisgICAgICAgICAgICBKU09iamVjdCogb2JqID0gY29uc3RydWN0RW1wdHlPYmplY3Qo
ZXhlYyk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CisgICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2bSwgbmFtZSwganNTdHJpbmcoZXhlYywgU3Ry
aW5nOjpmcm9tVVRGOChleHAuZmllbGQpKSk7CisgICAgICAgICAgICBvYmotPnB1dERpcmVjdCh2
bSwga2luZCwganNTdHJpbmcoZXhlYywgU3RyaW5nKG1ha2VTdHJpbmcoZXhwLmtpbmQpKSkpOwor
ICAgICAgICAgICAgcmVzdWx0LT5wdXNoKGV4ZWMsIG9iaik7CisgICAgICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTV2ViQXNzZW1ibHlNb2R1bGUoRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5jcHAK
aW5kZXggNjVhZGMyZC4uMWZlOTBiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlLmNwcApAQCAtMjgs
MTkgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAotI2luY2x1ZGUgIkFycmF5
QnVmZmVyLmgiCi0jaW5jbHVkZSAiRnVuY3Rpb25Qcm90b3R5cGUuaCIKLSNpbmNsdWRlICJKU0Fy
cmF5QnVmZmVyLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgotI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlNb2R1bGUuaCIKLSNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUg
Ildhc21Nb2R1bGVJbmZvcm1hdGlvbi5oIgotCi1uYW1lc3BhY2UgSlNDIHsKLXN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlUHJvdG9DdXN0b21TZWN0
aW9ucyhFeGVjU3RhdGUqKTsKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHdl
YkFzc2VtYmx5TW9kdWxlUHJvdG9JbXBvcnRzKEV4ZWNTdGF0ZSopOwotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgd2ViQXNzZW1ibHlNb2R1bGVQcm90b0V4cG9ydHMoRXhlY1N0
YXRlKik7Ci19CiAKICNpbmNsdWRlICJXZWJBc3NlbWJseU1vZHVsZVByb3RvdHlwZS5sdXQuaCIK
IApAQCAtNTAsMTA4ICszOCw5IEBAIGNvbnN0IENsYXNzSW5mbyBXZWJBc3NlbWJseU1vZHVsZVBy
b3RvdHlwZTo6c19pbmZvID0geyAiV2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvCiAKIC8qIFNvdXJj
ZSBmb3IgV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUubHV0LmgKICBAYmVnaW4gcHJvdG90eXBl
VGFibGVXZWJBc3NlbWJseU1vZHVsZQotIGN1c3RvbVNlY3Rpb25zIHdlYkFzc2VtYmx5TW9kdWxl
UHJvdG9DdXN0b21TZWN0aW9ucyBEb250RW51bXxGdW5jdGlvbiAxCi0gaW1wb3J0cyAgICAgICAg
d2ViQXNzZW1ibHlNb2R1bGVQcm90b0ltcG9ydHMgICAgICAgIERvbnRFbnVtfEFjY2Vzc29yIDAK
LSBleHBvcnRzICAgICAgICB3ZWJBc3NlbWJseU1vZHVsZVByb3RvRXhwb3J0cyAgICAgICAgRG9u
dEVudW18QWNjZXNzb3IgMAogIEBlbmQKICAqLwogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHdlYkFzc2VtYmx5TW9kdWxlUHJvdG9DdXN0b21TZWN0aW9ucyhFeGVjU3RhdGUqIGV4ZWMp
Ci17Ci0gICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0KLSAgICBKU1dlYkFzc2VtYmx5TW9kdWxlKiBtb2R1bGUgPSBq
c0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1ibHlNb2R1bGUqPih2bSwgZXhlYy0+dGhpc1ZhbHVlKCkp
OwotICAgIGlmICghbW9kdWxlKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGV4ZWMsIHRocm93U2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIldlYkFzc2VtYmx5Lk1vZHVsZS5wcm90b3R5cGUuY3VzdG9tU2VjdGlvbnMgY2FsbGVk
IHdpdGggbm9uIFdlYkFzc2VtYmx5Lk1vZHVsZSB8dGhpc3wgdmFsdWUiKSkpKTsKLQotICAgIGNv
bnN0IFN0cmluZyBzZWN0aW9uTmFtZVN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDApLmdldFN0cmlu
ZyhleGVjKTsKLSAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0KLSAg
ICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGds
b2JhbE9iamVjdCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwot
Ci0gICAgY29uc3QgYXV0byYgY3VzdG9tU2VjdGlvbnMgPSBtb2R1bGUtPm1vZHVsZUluZm9ybWF0
aW9uKCkuY3VzdG9tU2VjdGlvbnM7Ci0gICAgZm9yIChjb25zdCBXYXNtOjpDdXN0b21TZWN0aW9u
JiBzZWN0aW9uIDogY3VzdG9tU2VjdGlvbnMpIHsKLSAgICAgICAgaWYgKFN0cmluZzo6ZnJvbVVU
Rjgoc2VjdGlvbi5uYW1lKSA9PSBzZWN0aW9uTmFtZVN0cmluZykgewotICAgICAgICAgICAgYXV0
byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKHNlY3Rpb24ucGF5bG9hZC5kYXRhKCks
IHNlY3Rpb24ucGF5bG9hZC5zaXplKCkpOwotICAgICAgICAgICAgaWYgKCFidWZmZXIpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCB0
aHJvd1Njb3BlLCBjcmVhdGVPdXRPZk1lbW9yeUVycm9yKGV4ZWMpKSk7Ci0KLSAgICAgICAgICAg
IFN0cnVjdHVyZSogYXJyYXlCdWZmZXJTdHJ1Y3R1cmUgPSBJbnRlcm5hbEZ1bmN0aW9uOjpjcmVh
dGVTdWJjbGFzc1N0cnVjdHVyZShleGVjLCBKU1ZhbHVlKCksIGdsb2JhbE9iamVjdC0+YXJyYXlC
dWZmZXJTdHJ1Y3R1cmUoQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCkpOwotICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotCi0gICAgICAgICAg
ICByZXN1bHQtPnB1c2goZXhlYywgSlNBcnJheUJ1ZmZlcjo6Y3JlYXRlKHZtLCBhcnJheUJ1ZmZl
clN0cnVjdHVyZSwgV1RGTW92ZShidWZmZXIpKSk7Ci0gICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgd2ViQXNzZW1ibHlNb2R1bGVQcm90b0ltcG9ydHMoRXhlY1N0YXRlKiBleGVjKQotewotICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotCi0gICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0ganNEeW5hbWlj
Q2FzdDxKU1dlYkFzc2VtYmx5TW9kdWxlKj4odm0sIGV4ZWMtPnRoaXNWYWx1ZSgpKTsKLSAgICBp
ZiAoIW1vZHVsZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihleGVjLCB0aHJvd1Njb3BlLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJX
ZWJBc3NlbWJseS5Nb2R1bGUucHJvdG90eXBlLmltcG9ydHMgY2FsbGVkIHdpdGggbm9uIFdlYkFz
c2VtYmx5Lk1vZHVsZSB8dGhpc3wgdmFsdWUiKSkpKTsKLQotICAgIEpTQXJyYXkqIHJlc3VsdCA9
IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgZ2xvYmFsT2JqZWN0KTsKLSAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Ci0KLSAgICBjb25zdCBhdXRvJiBp
bXBvcnRzID0gbW9kdWxlLT5tb2R1bGVJbmZvcm1hdGlvbigpLmltcG9ydHM7Ci0gICAgaWYgKGlt
cG9ydHMuc2l6ZSgpKSB7Ci0gICAgICAgIElkZW50aWZpZXIgbW9kdWxlID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyhleGVjLCAibW9kdWxlIik7Ci0gICAgICAgIElkZW50aWZpZXIgbmFtZSA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgIm5hbWUiKTsKLSAgICAgICAgSWRlbnRpZmllciBr
aW5kID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAia2luZCIpOwotICAgICAgICBmb3Ig
KGNvbnN0IFdhc206OkltcG9ydCYgaW1wIDogaW1wb3J0cykgewotICAgICAgICAgICAgSlNPYmpl
Y3QqIG9iaiA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOwotICAgICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICAgICAgb2JqLT5wdXREaXJl
Y3Qodm0sIG1vZHVsZSwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpmcm9tVVRGOChpbXAubW9kdWxl
KSkpOwotICAgICAgICAgICAgb2JqLT5wdXREaXJlY3Qodm0sIG5hbWUsIGpzU3RyaW5nKGV4ZWMs
IFN0cmluZzo6ZnJvbVVURjgoaW1wLmZpZWxkKSkpOwotICAgICAgICAgICAgb2JqLT5wdXREaXJl
Y3Qodm0sIGtpbmQsIGpzU3RyaW5nKGV4ZWMsIFN0cmluZyhtYWtlU3RyaW5nKGltcC5raW5kKSkp
KTsKLSAgICAgICAgICAgIHJlc3VsdC0+cHVzaChleGVjLCBvYmopOwotICAgICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotICAgICAgICB9Ci0gICAgfQotCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHdlYkFzc2VtYmx5TW9kdWxlUHJvdG9FeHBvcnRzKEV4ZWNTdGF0ZSogZXhl
YykKLXsKLSAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLQotICAgIEpTV2ViQXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9
IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1vZHVsZSo+KHZtLCBleGVjLT50aGlzVmFsdWUo
KSk7Ci0gICAgaWYgKCFtb2R1bGUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oZXhlYywgdGhyb3dTY29wZSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiV2ViQXNzZW1ibHkuTW9kdWxlLnByb3RvdHlwZS5leHBvcnRzIGNhbGxlZCB3aXRo
IG5vbiBXZWJBc3NlbWJseS5Nb2R1bGUgfHRoaXN8IHZhbHVlIikpKSk7Ci0KLSAgICBKU0FycmF5
KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIG51bGxwdHIsIGdsb2JhbE9iamVj
dCk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwotCi0gICAgY29u
c3QgYXV0byYgZXhwb3J0cyA9IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKS5leHBvcnRzOwot
ICAgIGlmIChleHBvcnRzLnNpemUoKSkgewotICAgICAgICBJZGVudGlmaWVyIG5hbWUgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJuYW1lIik7Ci0gICAgICAgIElkZW50aWZpZXIga2lu
ZCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgImtpbmQiKTsKLSAgICAgICAgZm9yIChj
b25zdCBXYXNtOjpFeHBvcnQmIGV4cCA6IGV4cG9ydHMpIHsKLSAgICAgICAgICAgIEpTT2JqZWN0
KiBvYmogPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKLSAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0
KHZtLCBuYW1lLCBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4KGV4cC5maWVsZCkpKTsK
LSAgICAgICAgICAgIG9iai0+cHV0RGlyZWN0KHZtLCBraW5kLCBqc1N0cmluZyhleGVjLCBTdHJp
bmcobWFrZVN0cmluZyhleHAua2luZCkpKSk7Ci0gICAgICAgICAgICByZXN1bHQtPnB1c2goZXhl
Yywgb2JqKTsKLSAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKLX0KLQogV2ViQXNzZW1ibHlNb2R1bGVQcm90b3R5cGUqIFdlYkFzc2VtYmx5TW9kdWxlUHJv
dG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogewogICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdl
YkFzc2VtYmx5TW9kdWxlUHJvdG90eXBlPih2bS5oZWFwKSkgV2ViQXNzZW1ibHlNb2R1bGVQcm90
b3R5cGUodm0sIHN0cnVjdHVyZSk7Ci0tIAoyLjkuMwoK
</data>

          </attachment>
      

    </bug>

</bugzilla>