<?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>207677</bug_id>
          
          <creation_ts>2020-02-12 19:50:13 -0800</creation_ts>
          <short_desc>Add options for debugging WASM code.</short_desc>
          <delta_ts>2020-02-13 08:03:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>justin_michaud</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1618376</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-02-12 19:50:13 -0800</bug_when>
    <thetext>Specifically ...

    JSC_useBBQJIT                            - allows the BBQ JIT to be used if true
    JSC_useOMGJIT                            - allows the OMG JIT to be used if true
    JSC_useWasmLLIntPrologueOSR              - allows prologue OSR from Wasm LLInt if true
    JSC_useWasmLLIntLoopOSR                  - allows loop OSR from Wasm LLInt if true
    JSC_useWasmLLIntEpilogueOSR              - allows epilogue OSR from Wasm LLInt if true
    JSC_wasmFunctionIndexRangeToCompile=N:M  - wasm function index range to allow compilation on, e.g. 1:100</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618377</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-12 19:51:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/59411390&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618378</commentid>
    <comment_count>2</comment_count>
      <attachid>390611</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-02-12 19:57:59 -0800</bug_when>
    <thetext>Created attachment 390611
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618379</commentid>
    <comment_count>3</comment_count>
      <attachid>390611</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-02-12 20:08:50 -0800</bug_when>
    <thetext>Comment on attachment 390611
proposed patch.

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

r=me with one comment.

&gt; Source/JavaScriptCore/wasm/WasmSlowPaths.cpp:98
&gt; +    if (!Options::wasmFunctionIndexRangeToCompile().isInRange(codeBlock-&gt;functionIndex()))

This functionIndex is per-wasm-module thing. If we have two wasm modules, they can have the same function index for different functions.
Currently, I think this is OK. But maybe, should we introduce dfgWhitelist like mechanism instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618380</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-02-12 20:10:09 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #3)
&gt; &gt; Source/JavaScriptCore/wasm/WasmSlowPaths.cpp:98
&gt; &gt; +    if (!Options::wasmFunctionIndexRangeToCompile().isInRange(codeBlock-&gt;functionIndex()))
&gt; 
&gt; This functionIndex is per-wasm-module thing. If we have two wasm modules,
&gt; they can have the same function index for different functions.
&gt; Currently, I think this is OK. But maybe, should we introduce dfgWhitelist
&gt; like mechanism instead?

Yes, I understood this to be the case.  It will do for now.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618381</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-02-12 20:12:30 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r256500: &lt;http://trac.webkit.org/r256500&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618482</commentid>
    <comment_count>6</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2020-02-13 08:03:19 -0800</bug_when>
    <thetext>These should all have been wrapped in UNLIKELY</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390611</attachid>
            <date>2020-02-12 19:57:59 -0800</date>
            <delta_ts>2020-02-12 20:08:50 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-207677.patch</filename>
            <type>text/plain</type>
            <size>15627</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjU2NDk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDIwLTAyLTEyICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgb3B0aW9ucyBmb3IgZGVidWdnaW5nIFdBU00gY29kZS4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzY3NworICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTk0MTEzOTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU3BlY2lmaWNhbGx5IC4uLgorCisgICAgICAgICAgICBKU0NfdXNlQkJRSklUICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC0gYWxsb3dzIHRoZSBCQlEgSklUIHRvIGJlIHVzZWQgaWYg
dHJ1ZQorICAgICAgICAgICAgSlNDX3VzZU9NR0pJVCAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtIGFsbG93cyB0aGUgT01HIEpJVCB0byBiZSB1c2VkIGlmIHRydWUKKyAgICAgICAgICAgIEpT
Q191c2VXYXNtTExJbnRQcm9sb2d1ZU9TUiAgICAgICAgICAgICAgLSBhbGxvd3MgcHJvbG9ndWUg
T1NSIGZyb20gV2FzbSBMTEludCBpZiB0cnVlCisgICAgICAgICAgICBKU0NfdXNlV2FzbUxMSW50
TG9vcE9TUiAgICAgICAgICAgICAgICAgIC0gYWxsb3dzIGxvb3AgT1NSIGZyb20gV2FzbSBMTElu
dCBpZiB0cnVlCisgICAgICAgICAgICBKU0NfdXNlV2FzbUxMSW50RXBpbG9ndWVPU1IgICAgICAg
ICAgICAgIC0gYWxsb3dzIGVwaWxvZ3VlIE9TUiBmcm9tIFdhc20gTExJbnQgaWYgdHJ1ZQorICAg
ICAgICAgICAgSlNDX3dhc21GdW5jdGlvbkluZGV4UmFuZ2VUb0NvbXBpbGU9TjpNICAtIHdhc20g
ZnVuY3Rpb24gaW5kZXggcmFuZ2UgdG8gYWxsb3cgY29tcGlsYXRpb24gb24sIGUuZy4gMToxMDAK
KworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6ZW5z
dXJlT3B0aW9uc0FyZUNvaGVyZW50KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6
CisgICAgICAgICogd2FzbS9XYXNtQkJRUGxhbi5jcHA6CisgICAgICAgIChKU0M6Oldhc206OkJC
UVBsYW46OkJCUVBsYW4pOgorICAgICAgICAqIHdhc20vV2FzbU9NR0Zvck9TUkVudHJ5UGxhbi5j
cHA6CisgICAgICAgIChKU0M6Oldhc206Ok9NR0Zvck9TUkVudHJ5UGxhbjo6T01HRm9yT1NSRW50
cnlQbGFuKToKKyAgICAgICAgKiB3YXNtL1dhc21PTUdQbGFuLmNwcDoKKyAgICAgICAgKEpTQzo6
V2FzbTo6T01HUGxhbjo6T01HUGxhbik6CisgICAgICAgICogd2FzbS9XYXNtT3BlcmF0aW9ucy5j
cHA6CisgICAgICAgIChKU0M6Oldhc206OnNob3VsZEpJVCk6CisgICAgICAgIChKU0M6Oldhc206
Om9wZXJhdGlvbldhc21UcmlnZ2VyT1NSRW50cnlOb3cpOgorICAgICAgICAoSlNDOjpXYXNtOjpv
cGVyYXRpb25XYXNtVHJpZ2dlclRpZXJVcE5vdyk6CisgICAgICAgICogd2FzbS9XYXNtU2xvd1Bh
dGhzLmNwcDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNob3VsZEpJVCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpXQVNNX1NMT1dfUEFUSF9ERUNMKToKKwogMjAyMC0wMi0xMiAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIENvbXBhY3QgSklUQ29kZU1h
cCBieSBzdG9yaW5nIEJ5dGVjb2RlSW5kZXggYW5kIENvZGVMb2NhdGlvbiBzZXBhcmF0ZWx5Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjU2NDk5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTUwNzMsNiArNTA3Myw3IEBACiAJCUY2OTJBODdFMDI1NTU5
N0QwMUZGNjBGNyAvKiBSZWdFeHAuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUmVnRXhwLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgfTsKIAkJRjY5MkE4ODcwMjU1NTk3RDAxRkY2MEY3IC8qIEpTQ0pTVmFsdWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNDSlNWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgfTsK
IAkJRjczOTI2OTE4REM2NDMzMEFGQ0RGMEQ3IC8qIEpTU291cmNlQ29kZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NvdXJjZUNvZGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTAwMjYyMjIzRjNBRjMzMDAzQTM1OEYgLyogV2ViQXNzZW1i
bHkuYXNtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5hc20uYXNtOyBuYW1lID0gV2ViQXNzZW1ibHkuYXNtOyBwYXRoID0gbGxpbnQv
V2ViQXNzZW1ibHkuYXNtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGRTA4NkJDOTIx
MjNERUZBMDAzRjI5MjkgLyogRW50cnlGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFbnRyeUZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFMEQ0
QTA0MUFCOEREMEEwMDJGNTRCRiAvKiBFeGVjdXRpb25UaW1lTGltaXRUZXN0LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEV4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3Bw
OyBwYXRoID0gQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlGRTBENEEwNTFBQjhERDBBMDAyRjU0QkYgLyogRXhlY3V0aW9u
VGltZUxpbWl0VGVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBFeGVjdXRp
b25UaW1lTGltaXRUZXN0Lmg7IHBhdGggPSBBUEkvdGVzdHMvRXhlY3V0aW9uVGltZUxpbWl0VGVz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTQ3Niw2ICs1NDc3LDcgQEAKIAkJ
CQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovLAog
CQkJCTg2QTA1NDQ3MTU1NjQ1MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtICovLAogCQkJCTg2QTA1NDQ4MTU1NjQ1MUIwMDQ0NTE1NyAvKiBMb3dMZXZlbEludGVycHJl
dGVyNjQuYXNtICovLAorCQkJCUZFMDAyNjIyMjNGM0FGMzMwMDNBMzU4RiAvKiBXZWJBc3NlbWJs
eS5hc20gKi8sCiAJCQkpOwogCQkJbmFtZSA9IGxsaW50OwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShy
ZXZpc2lvbiAyNTY0OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQ5LDYgKzk0OSwxMCBAQCB2b2lkIE9wdGlvbnM6OmVu
c3VyZU9wdGlvbnNBcmVDb2hlcmVudCgpCiAgICAgICAgIGNvaGVyZW50ID0gZmFsc2U7CiAgICAg
ICAgIGRhdGFMb2coIklOQ09IRVJFTlQgT1BUSU9OUzogYXQgbGVhc3Qgb25lIG9mIHVzZUxMSW50
IG9yIHVzZUpJVCBtdXN0IGJlIHRydWVcbiIpOwogICAgIH0KKyAgICBpZiAodXNlV2ViQXNzZW1i
bHkoKSAmJiAhKHVzZVdhc21MTEludCgpIHx8IHVzZUJCUUpJVCgpKSkgeworICAgICAgICBjb2hl
cmVudCA9IGZhbHNlOworICAgICAgICBkYXRhTG9nKCJJTkNPSEVSRU5UIE9QVElPTlM6IGF0IGxl
YXN0IG9uZSBvZiB1c2VXYXNtTExJbnQgb3IgdXNlQkJRSklUIG11c3QgYmUgdHJ1ZVxuIik7Cisg
ICAgfQogICAgIGlmICghY29oZXJlbnQpCiAgICAgICAgIENSQVNIKCk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHJldmlzaW9uIDI1NjQ5
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNDY3LDYgKzQ2NywxMiBAQCBjb25zdGV4cHIgYm9vbCBlbmFibGVXZWJBc3NlbWJs
eVN0cmVhbWluCiAgICAgdihCb29sLCB1c2VGYXN0VExTRm9yV2FzbUNvbnRleHQsIHRydWUsIE5v
cm1hbCwgIklmIHRydWUsIHdlIHdpbGwgc3RvcmUgY29udGV4dCBpbiBmYXN0IFRMUy4gSWYgZmFs
c2UsIHdlIHdpbGwgcGluIGl0IHRvIGEgcmVnaXN0ZXIuIikgXAogICAgIHYoQm9vbCwgd2FzbUJC
UVVzZXNBaXIsIHRydWUsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9vbCwgdXNlV2FzbUxM
SW50LCB0cnVlLCBOb3JtYWwsIG51bGxwdHIpIFwKKyAgICB2KEJvb2wsIHVzZUJCUUpJVCwgdHJ1
ZSwgTm9ybWFsLCAiYWxsb3dzIHRoZSBCQlEgSklUIHRvIGJlIHVzZWQgaWYgdHJ1ZSIpIFwKKyAg
ICB2KEJvb2wsIHVzZU9NR0pJVCwgdHJ1ZSwgTm9ybWFsLCAiYWxsb3dzIHRoZSBPTUcgSklUIHRv
IGJlIHVzZWQgaWYgdHJ1ZSIpIFwKKyAgICB2KEJvb2wsIHVzZVdhc21MTEludFByb2xvZ3VlT1NS
LCB0cnVlLCBOb3JtYWwsICJhbGxvd3MgcHJvbG9ndWUgT1NSIGZyb20gV2FzbSBMTEludCBpZiB0
cnVlIikgXAorICAgIHYoQm9vbCwgdXNlV2FzbUxMSW50TG9vcE9TUiwgdHJ1ZSwgTm9ybWFsLCAi
YWxsb3dzIGxvb3AgT1NSIGZyb20gV2FzbSBMTEludCBpZiB0cnVlIikgXAorICAgIHYoQm9vbCwg
dXNlV2FzbUxMSW50RXBpbG9ndWVPU1IsIHRydWUsIE5vcm1hbCwgImFsbG93cyBlcGlsb2d1ZSBP
U1IgZnJvbSBXYXNtIExMSW50IGlmIHRydWUiKSBcCisgICAgdihPcHRpb25SYW5nZSwgd2FzbUZ1
bmN0aW9uSW5kZXhSYW5nZVRvQ29tcGlsZSwgMCwgTm9ybWFsLCAid2FzbSBmdW5jdGlvbiBpbmRl
eCByYW5nZSB0byBhbGxvdyBjb21waWxhdGlvbiBvbiwgZS5nLiAxOjEwMCIpIFwKICAgICB2KEJv
b2wsIHdhc21MTEludFRpZXJzVXBUb0JCUSwgdHJ1ZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAg
dihTaXplLCB3ZWJBc3NlbWJseUJCUUFpck1vZGVUaHJlc2hvbGQsIGlzSU9TKCkgPyAoMTAgKiBN
QikgOiAwLCBOb3JtYWwsICJJZiAwLCB3ZSBhbHdheXMgdXNlIEJCUSBBaXIuIElmIFdhc20gbW9k
dWxlIGNvZGUgc2l6ZSBoaXRzIHRoaXMgdGhyZXNob2xkLCB3ZSBjb21waWxlIFdhc20gbW9kdWxl
IHdpdGggQjMgQkJRIG1vZGUuIikgXAogICAgIHYoQm9vbCwgdXNlV2ViQXNzZW1ibHlTdHJlYW1p
bmdBcGksIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW5nQXBpLCBOb3JtYWwsICJBbGxvdyB0byBy
dW4gV2ViQXNzZW1ibHkncyBTdHJlYW1pbmcgQVBJIikgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21CQlFQbGFuLmNwcAkocmV2aXNpb24gMjU2NDk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUJCUVBsYW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE5IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
NTgsNyArNTgsOSBAQCBCQlFQbGFuOjpCQlFQbGFuKENvbnRleHQqIGNvbnRleHQsIFJlZjxNCiAg
ICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCiAgICAgLCBtX2Z1bmN0aW9uSW5kZXgoZnVuY3Rp
b25JbmRleCkKIHsKKyAgICBBU1NFUlQoT3B0aW9uczo6dXNlQkJRSklUKCkpOwogICAgIHNldE1v
ZGUobV9jb2RlQmxvY2stPm1vZGUoKSk7CisgICAgZGF0YUxvZ0xuSWYoV2FzbUJCUVBsYW5JbnRl
cm5hbDo6dmVyYm9zZSwgIlN0YXJ0aW5nIEJCUSBwbGFuIGZvciAiLCBmdW5jdGlvbkluZGV4KTsK
IH0KIAogYm9vbCBCQlFQbGFuOjpwcmVwYXJlSW1wbCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT01HRm9yT1NSRW50cnlQbGFuLmNwcAkocmV2aXNp
b24gMjU2NDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU9NR0Zvck9TUkVu
dHJ5UGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjEsNiArNjEsNyBAQCBPTUdGb3JPU1JFbnRyeVBs
YW46Ok9NR0Zvck9TUkVudHJ5UGxhbihDCiAgICAgLCBtX2Z1bmN0aW9uSW5kZXgoZnVuY3Rpb25J
bmRleCkKICAgICAsIG1fbG9vcEluZGV4KGxvb3BJbmRleCkKIHsKKyAgICBBU1NFUlQoT3B0aW9u
czo6dXNlT01HSklUKCkpOwogICAgIHNldE1vZGUobW9kZSk7CiAgICAgQVNTRVJUKG1fY29kZUJs
b2NrLT5ydW5uYWJsZSgpKTsKICAgICBBU1NFUlQobV9jb2RlQmxvY2sucHRyKCkgPT0gbV9tb2R1
bGUtPmNvZGVCbG9ja0ZvcihtX21vZGUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21PTUdQbGFuLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtT01HUGxhbi5jcHAJKHJldmlzaW9uIDI1NjQ5OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21PTUdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU5LDYgKzU5
LDcgQEAgT01HUGxhbjo6T01HUGxhbihDb250ZXh0KiBjb250ZXh0LCBSZWY8TQogICAgICwgbV9j
b2RlQmxvY2soKm1fbW9kdWxlLT5jb2RlQmxvY2tGb3IobW9kZSkpCiAgICAgLCBtX2Z1bmN0aW9u
SW5kZXgoZnVuY3Rpb25JbmRleCkKIHsKKyAgICBBU1NFUlQoT3B0aW9uczo6dXNlT01HSklUKCkp
OwogICAgIHNldE1vZGUobW9kZSk7CiAgICAgQVNTRVJUKG1fY29kZUJsb2NrLT5ydW5uYWJsZSgp
KTsKICAgICBBU1NFUlQobV9jb2RlQmxvY2sucHRyKCkgPT0gbV9tb2R1bGUtPmNvZGVCbG9ja0Zv
cihtX21vZGUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21PcGVyYXRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtT3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDI1NjQ5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21PcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE5LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMzMsNiArMjMzLDE3IEBAIHN0
YXRpYyB2b2lkIGRvT1NSRW50cnkoSW5zdGFuY2UqIGluc3RhbmMKICAgICBjb250ZXh0LmdwcihH
UFJJbmZvOjphcmd1bWVudEdQUjEpID0gYml0d2lzZV9jYXN0PFVDUFVSZWdpc3Rlcj4ob3NyRW50
cnlDYWxsZWUuZW50cnlwb2ludCgpLmV4ZWN1dGFibGVBZGRyZXNzPD4oKSk7CiB9CiAKK2lubGlu
ZSBib29sIHNob3VsZEpJVCh1bnNpZ25lZCBmdW5jdGlvbkluZGV4KQoreworICAgIGlmICghVk06
OmNhblVzZUpJVCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFPcHRpb25zOjp1
c2VPTUdKSVQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghT3B0aW9uczo6d2Fz
bUZ1bmN0aW9uSW5kZXhSYW5nZVRvQ29tcGlsZSgpLmlzSW5SYW5nZShmdW5jdGlvbkluZGV4KSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uV2FzbVRyaWdnZXJPU1JFbnRyeU5vdyhQcm9iZTo6Q29udGV4dCYg
Y29udGV4dCkKIHsKICAgICBPU1JFbnRyeURhdGEmIG9zckVudHJ5RGF0YSA9ICpjb250ZXh0LmFy
ZzxPU1JFbnRyeURhdGEqPigpOwpAQCAtMjUzLDYgKzI2NCwxMiBAQCB2b2lkIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uV2FzbVRyaWdnZXJPCiAgICAgQVNTRVJUKGNvZGVCbG9jay53YXNtQkJRQ2Fs
bGVlRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4SW5TcGFjZSkuY29tcGlsYXRp
b25Nb2RlKCkgPT0gV2FzbTo6Q29tcGlsYXRpb25Nb2RlOjpCQlFNb2RlKTsKICAgICBCQlFDYWxs
ZWUmIGNhbGxlZSA9IHN0YXRpY19jYXN0PEJCUUNhbGxlZSY+KGNvZGVCbG9jay53YXNtQkJRQ2Fs
bGVlRnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShmdW5jdGlvbkluZGV4SW5TcGFjZSkpOwogICAgIFRp
ZXJVcENvdW50JiB0aWVyVXAgPSAqY2FsbGVlLnRpZXJVcENvdW50KCk7CisKKyAgICBpZiAoIXNo
b3VsZEpJVChmdW5jdGlvbkluZGV4KSkgeworICAgICAgICB0aWVyVXAuZGVmZXJJbmRlZmluaXRl
bHkoKTsKKyAgICAgICAgcmV0dXJuIHJldHVybldpdGhvdXRPU1JFbnRyeSgpOworICAgIH0KKwog
ICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNvbnNpZGVyIE9NR0Zvck9T
UkVudHJ5UGxhbiBmb3IgWyIsIGZ1bmN0aW9uSW5kZXgsICJdIGxvb3BJbmRleCMiLCBsb29wSW5k
ZXgsICIgd2l0aCBleGVjdXRlQ291bnRlciA9ICIsIHRpZXJVcCwgIiAiLCBSYXdQb2ludGVyKGNh
bGxlZS5yZXBsYWNlbWVudCgpKSk7CiAKICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
T1NSKCkpIHsKQEAgLTQyNiw2ICs0NDMsMTIgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bldhc21UcmlnZ2VyVAogICAgIEFTU0VSVChjb2RlQmxvY2sud2FzbUJCUUNhbGxlZUZyb21GdW5j
dGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleEluU3BhY2UpLmNvbXBpbGF0aW9uTW9kZSgpID09
IFdhc206OkNvbXBpbGF0aW9uTW9kZTo6QkJRTW9kZSk7CiAgICAgQkJRQ2FsbGVlJiBjYWxsZWUg
PSBzdGF0aWNfY2FzdDxCQlFDYWxsZWUmPihjb2RlQmxvY2sud2FzbUJCUUNhbGxlZUZyb21GdW5j
dGlvbkluZGV4U3BhY2UoZnVuY3Rpb25JbmRleEluU3BhY2UpKTsKICAgICBUaWVyVXBDb3VudCYg
dGllclVwID0gKmNhbGxlZS50aWVyVXBDb3VudCgpOworCisgICAgaWYgKCFzaG91bGRKSVQoZnVu
Y3Rpb25JbmRleCkpIHsKKyAgICAgICAgdGllclVwLmRlZmVySW5kZWZpbml0ZWx5KCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NS
KCksICJDb25zaWRlciBPTUdQbGFuIGZvciBbIiwgZnVuY3Rpb25JbmRleCwgIl0gd2l0aCBleGVj
dXRlQ291bnRlciA9ICIsIHRpZXJVcCwgIiAiLCBSYXdQb2ludGVyKGNhbGxlZS5yZXBsYWNlbWVu
dCgpKSk7CiAKICAgICBpZiAoc2hvdWxkVHJpZ2dlck9NR0NvbXBpbGUodGllclVwLCBjYWxsZWUu
cmVwbGFjZW1lbnQoKSwgZnVuY3Rpb25JbmRleCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMjU2NDk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODAs
NiArODAsMjYgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CiAgICAgICAgID8g
SlNWYWx1ZTo6ZGVjb2RlKENPREVfQkxPQ0soKS0+Z2V0Q29uc3RhbnQodmlydHVhbFJlZ2lzdGVy
KSkgXAogICAgICAgICA6IGNhbGxGcmFtZS0+cih2aXJ0dWFsUmVnaXN0ZXIpKQogCitlbnVtIGNs
YXNzIFJlcXVpcmVkV2FzbUpJVCB7IEFueSwgT01HIH07CisKK2lubGluZSBib29sIHNob3VsZEpJ
VChXYXNtOjpGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrLCBSZXF1aXJlZFdhc21KSVQgcmVx
dWlyZWRKSVQgPSBSZXF1aXJlZFdhc21KSVQ6OkFueSkKK3sKKyAgICBpZiAoIVZNOjpjYW5Vc2VK
SVQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChyZXF1aXJlZEpJVCA9PSBSZXF1
aXJlZFdhc21KSVQ6Ok9NRykgeworICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZU9NR0pJVCgpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChPcHRp
b25zOjp3YXNtTExJbnRUaWVyc1VwVG9CQlEoKSAmJiAhT3B0aW9uczo6dXNlQkJRSklUKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghT3B0aW9uczo6d2FzbUxMSW50
VGllcnNVcFRvQkJRKCkgJiYgIU9wdGlvbnM6OnVzZU9NR0pJVCgpKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAoIU9wdGlvbnM6Ondhc21GdW5jdGlvbkluZGV4UmFu
Z2VUb0NvbXBpbGUoKS5pc0luUmFuZ2UoY29kZUJsb2NrLT5mdW5jdGlvbkluZGV4KCkpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGlubGluZSBib29sIGpp
dENvbXBpbGVBbmRTZXRIZXVyaXN0aWNzKFdhc206OkxMSW50Q2FsbGVlKiBjYWxsZWUsIFdhc206
OkZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFdhc206Okluc3RhbmNlKiBpbnN0YW5jZSkK
IHsKICAgICBXYXNtOjpMTEludFRpZXJVcENvdW50ZXImIHRpZXJVcENvdW50ZXIgPSBjb2RlQmxv
Y2stPnRpZXJVcENvdW50ZXIoKTsKQEAgLTEzNSwyNSArMTU1LDMzIEBAIFdBU01fU0xPV19QQVRI
X0RFQ0wocHJvbG9ndWVfb3NyKQogICAgIFdhc206OkxMSW50Q2FsbGVlKiBjYWxsZWUgPSBzdGF0
aWNfY2FzdDxXYXNtOjpMTEludENhbGxlZSo+KGNhbGxGcmFtZS0+Y2FsbGVlKCkuYXNXYXNtQ2Fs
bGVlKCkpOwogICAgIFdhc206OkZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBDT0RFX0JM
T0NLKCk7CiAKLSAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICpjYWxsZWUs
ICI6IEVudGVyZWQgZXBpbG9ndWVfb3NyIHdpdGggdGllclVwQ291bnRlciA9ICIsIGNvZGVCbG9j
ay0+dGllclVwQ291bnRlcigpKTsKKyAgICBpZiAoIXNob3VsZEpJVChjb2RlQmxvY2spKSB7Cisg
ICAgICAgIGNvZGVCbG9jay0+dGllclVwQ291bnRlcigpLmRlZmVySW5kZWZpbml0ZWx5KCk7Cisg
ICAgICAgIFdBU01fUkVUVVJOX1RXTyhudWxscHRyLCBudWxscHRyKTsKKyAgICB9CisKKyAgICBp
ZiAoIU9wdGlvbnM6OnVzZVdhc21MTEludFByb2xvZ3VlT1NSKCkpCisgICAgICAgIFdBU01fUkVU
VVJOX1RXTyhudWxscHRyLCBudWxscHRyKTsKKworICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZl
cmJvc2VPU1IoKSwgKmNhbGxlZSwgIjogRW50ZXJlZCBwcm9sb2d1ZV9vc3Igd2l0aCB0aWVyVXBD
b3VudGVyID0gIiwgY29kZUJsb2NrLT50aWVyVXBDb3VudGVyKCkpOwogCiAgICAgaWYgKCFqaXRD
b21waWxlQW5kU2V0SGV1cmlzdGljcyhjYWxsZWUsIGNvZGVCbG9jaywgaW5zdGFuY2UpKQotICAg
ICAgICBXQVNNX1JFVFVSTl9UV08oMCwgMCk7CisgICAgICAgIFdBU01fUkVUVVJOX1RXTyhudWxs
cHRyLCBudWxscHRyKTsKIAogICAgIFdBU01fUkVUVVJOX1RXTyhjYWxsZWUtPnJlcGxhY2VtZW50
KCktPmVudHJ5cG9pbnQoKS5leGVjdXRhYmxlQWRkcmVzcygpLCAwKTsKIH0KIAogV0FTTV9TTE9X
X1BBVEhfREVDTChsb29wX29zcikKIHsKLSAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5
T1NSKCkpIHsKLSAgICAgICAgc2xvd19wYXRoX3dhc21fcHJvbG9ndWVfb3NyKGNhbGxGcmFtZSwg
cGMsIGluc3RhbmNlKTsKLSAgICAgICAgV0FTTV9SRVRVUk5fVFdPKDAsIDApOwotICAgIH0KLQog
ICAgIFdhc206OkxMSW50Q2FsbGVlKiBjYWxsZWUgPSBzdGF0aWNfY2FzdDxXYXNtOjpMTEludENh
bGxlZSo+KGNhbGxGcmFtZS0+Y2FsbGVlKCkuYXNXYXNtQ2FsbGVlKCkpOwogICAgIFdhc206OkZ1
bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBDT0RFX0JMT0NLKCk7CiAgICAgV2FzbTo6TExJ
bnRUaWVyVXBDb3VudGVyJiB0aWVyVXBDb3VudGVyID0gY29kZUJsb2NrLT50aWVyVXBDb3VudGVy
KCk7CiAKKyAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5T1NSKCkgfHwgIU9wdGlvbnM6
OnVzZVdhc21MTEludExvb3BPU1IoKSB8fCAhc2hvdWxkSklUKGNvZGVCbG9jaywgUmVxdWlyZWRX
YXNtSklUOjpPTUcpKSB7CisgICAgICAgIHNsb3dfcGF0aF93YXNtX3Byb2xvZ3VlX29zcihjYWxs
RnJhbWUsIHBjLCBpbnN0YW5jZSk7CisgICAgICAgIFdBU01fUkVUVVJOX1RXTygwLCAwKTsKKyAg
ICB9CisKICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2ZXJib3NlT1NSKCksICpjYWxsZWUsICI6
IEVudGVyZWQgbG9vcF9vc3Igd2l0aCB0aWVyVXBDb3VudGVyID0gIiwgY29kZUJsb2NrLT50aWVy
VXBDb3VudGVyKCkpOwogCiAgICAgdW5zaWduZWQgbG9vcE9TUkVudHJ5Qnl0ZWNvZGVPZmZzZXQg
PSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KHBjKTsKQEAgLTIyMSw2ICsyNDksMTMgQEAgV0FT
TV9TTE9XX1BBVEhfREVDTChlcGlsb2d1ZV9vc3IpCiAgICAgV2FzbTo6TExJbnRDYWxsZWUqIGNh
bGxlZSA9IHN0YXRpY19jYXN0PFdhc206OkxMSW50Q2FsbGVlKj4oY2FsbEZyYW1lLT5jYWxsZWUo
KS5hc1dhc21DYWxsZWUoKSk7CiAgICAgV2FzbTo6RnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9j
ayA9IENPREVfQkxPQ0soKTsKIAorICAgIGlmICghc2hvdWxkSklUKGNvZGVCbG9jaykpIHsKKyAg
ICAgICAgY29kZUJsb2NrLT50aWVyVXBDb3VudGVyKCkuZGVmZXJJbmRlZmluaXRlbHkoKTsKKyAg
ICAgICAgV0FTTV9FTkRfSU1QTCgpOworICAgIH0KKyAgICBpZiAoIU9wdGlvbnM6OnVzZVdhc21M
TEludEVwaWxvZ3VlT1NSKCkpCisgICAgICAgIFdBU01fRU5EX0lNUEwoKTsKKwogICAgIGRhdGFM
b2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgKmNhbGxlZSwgIjogRW50ZXJlZCBlcGlsb2d1
ZV9vc3Igd2l0aCB0aWVyVXBDb3VudGVyID0gIiwgY29kZUJsb2NrLT50aWVyVXBDb3VudGVyKCkp
OwogCiAgICAgaml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoY2FsbGVlLCBjb2RlQmxvY2ssIGlu
c3RhbmNlKTsK
</data>
<flag name="review"
          id="406226"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>