<?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>142997</bug_id>
          
          <creation_ts>2015-03-23 21:23:11 -0700</creation_ts>
          <short_desc>JSC should have a low-cost asynchronous disassembler</short_desc>
          <delta_ts>2015-03-23 22:38:25 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1079545</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-23 21:23:11 -0700</bug_when>
    <thetext>Patch forthcoming.

rdar://problem/20195217</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079548</commentid>
    <comment_count>1</comment_count>
      <attachid>249310</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-23 21:31:09 -0700</bug_when>
    <thetext>Created attachment 249310
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079549</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-23 21:33:50 -0700</bug_when>
    <thetext>Attachment 249310 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/LinkBuffer.h:327:  Wrong number of spaces before statement. (expected: 9)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/LinkBuffer.h:346:  Wrong number of spaces before statement. (expected: 9)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/LinkBuffer.h:349:  Wrong number of spaces before statement. (expected: 9)  [whitespace/indent] [4]
Total errors found: 3 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079554</commentid>
    <comment_count>3</comment_count>
      <attachid>249310</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-23 22:08:09 -0700</bug_when>
    <thetext>Comment on attachment 249310
the patch

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

r=me with issues resolved.

&gt; Source/JavaScriptCore/disassembler/Disassembler.cpp:65
&gt; +    char* header { nullptr };

I think this should be a std::unique_ptr&lt;char&gt;.  I see it being initialized with a strdup below but not cleaned up anywhere.

&gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:825
&gt; +                }
&gt; +                

You need to dataLog(header) here to achieve equivalence for the old showDisassembly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079556</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-23 22:26:06 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 249310 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=249310&amp;action=review
&gt; 
&gt; r=me with issues resolved.
&gt; 
&gt; &gt; Source/JavaScriptCore/disassembler/Disassembler.cpp:65
&gt; &gt; +    char* header { nullptr };
&gt; 
&gt; I think this should be a std::unique_ptr&lt;char&gt;.  I see it being initialized
&gt; with a strdup below but not cleaned up anywhere.

The destructor frees it. I believe that it cannot be a unique_ptr since that won&apos;t call free(). Since I use strdup() to create it, I need to use free() to free it.

&gt; 
&gt; &gt; Source/JavaScriptCore/ftl/FTLCompile.cpp:825
&gt; &gt; +                }
&gt; &gt; +                
&gt; 
&gt; You need to dataLog(header) here to achieve equivalence for the old
&gt; showDisassembly.

Good catch! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079557</commentid>
    <comment_count>5</comment_count>
      <attachid>249310</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-23 22:28:21 -0700</bug_when>
    <thetext>Comment on attachment 249310
the patch

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

&gt;&gt;&gt; Source/JavaScriptCore/disassembler/Disassembler.cpp:65
&gt;&gt;&gt; +    char* header { nullptr };
&gt;&gt; 
&gt;&gt; I think this should be a std::unique_ptr&lt;char&gt;.  I see it being initialized with a strdup below but not cleaned up anywhere.
&gt; 
&gt; The destructor frees it. I believe that it cannot be a unique_ptr since that won&apos;t call free(). Since I use strdup() to create it, I need to use free() to free it.

I missed the free() call in the destructor.  Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079558</commentid>
    <comment_count>6</comment_count>
      <attachid>249312</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-23 22:29:45 -0700</bug_when>
    <thetext>Created attachment 249312
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079559</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-23 22:32:50 -0700</bug_when>
    <thetext>Attachment 249312 did not pass style-queue:


ERROR: Source/JavaScriptCore/assembler/LinkBuffer.h:327:  Wrong number of spaces before statement. (expected: 9)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/LinkBuffer.h:346:  Wrong number of spaces before statement. (expected: 9)  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/assembler/LinkBuffer.h:349:  Wrong number of spaces before statement. (expected: 9)  [whitespace/indent] [4]
Total errors found: 3 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1079560</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-23 22:38:25 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/181887</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249310</attachid>
            <date>2015-03-23 21:31:09 -0700</date>
            <delta_ts>2015-03-23 22:29:45 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>21270</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxODg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBA
CisyMDE1LTAzLTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SlNDIHNob3VsZCBoYXZlIGEgbG93LWNvc3QgYXN5bmNocm9ub3VzIGRpc2Fzc2VtYmxlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTk3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBUaGlz
IGFkZHMgYSBKU0NfYXN5bmNEaXNhc3NlbWJseSBvcHRpb24gdGhhdCBkaXNhc3NlbWJsZXMgb24g
YSB0aHJlYWQuIERpc2Fzc2VtYmx5CisgICAgICAgIGRvZXNuJ3QgYmxvY2sgZXhlY3V0aW9uLiBT
b21lIGNvZGUgd2lsbCBsaXZlIGEgbGl0dGxlIGxvbmdlciBiZWNhdXNlIG9mIHRoaXMsIHNpbmNl
IHRoZQorICAgICAgICB3b3JrIHRhc2tzIGhvbGQgYSByZWYgdG8gdGhlIGNvZGUsIGJ1dCBvdGhl
ciB0aGFuIHRoYXQgdGhlcmUgaXMgYmFzaWNhbGx5IG5vIG92ZXJoZWFkLgorICAgICAgICAKKyAg
ICAgICAgQXQgcHJlc2VudCwgdGhpcyBpc24ndCByZWFsbHkgYSByZXBsYWNlbWVudCBmb3IgSlND
X3Nob3dEaXNhc3NlbWJseSwgc2luY2UgaXQgZG9lc24ndAorICAgICAgICBwcm92aWRlIGNvbnRl
eHR1YWwgSVIgaW5mb3JtYXRpb24gZm9yIEJhc2VsaW5lIGFuZCBERkcgZGlzYXNzZW1ibGllcywg
YW5kIGl0IGRvZXNuJ3QgZG8KKyAgICAgICAgdGhlIHNlcGFyYXRlIElSIGR1bXBzIGZvciBGVEwu
IFVzaW5nIEpTQ19zaG93RGlzYXNzZW1ibHkgYW5kIGZyaWVuZHMgYWxvbmcgd2l0aAorICAgICAg
ICBKU0NfYXN5bmNEaXNhc3NlbWJseSBoYXMgYml6YXJyZSBiZWhhdmlvciAtIHNvIGp1c3QgY2hv
b3NlIG9uZS4KKyAgICAgICAgCisgICAgICAgIEEgc2ltcGxlIHdheSBvZiB1bmRlcnN0YW5kaW5n
IGhvdyBncmVhdCB0aGlzIGlzLCBpcyB0byBydW4gYSBzbWFsbCBiZW5jaG1hcmsgbGlrZQorICAg
ICAgICBWOFNwaWRlci9lYXJsZXktYm95ZXIuCisgICAgICAgIAorICAgICAgICBQZXJmb3JtYW5j
ZSB3aXRob3V0IGFueSBkaXNhc3NlbWJseSBmbGFnczogNjBtcworICAgICAgICBQZXJmb3JtYW5j
ZSB3aXRoIEpTQ19zaG93RGlzYXNzZW1ibHk9dHJ1ZTogNDc3bXMKKyAgICAgICAgUGVyZm9ybWFu
Y2Ugd2l0aCBKU0NfYXN5bmNEaXNhc3NlbWJseT10cnVlOiA2NW1zCisgICAgICAgIAorICAgICAg
ICBTbywgdGhlIG92ZXJoZWFkIG9mIGRpc2Fzc2VtYmx5IGdvZXMgZnJvbSA4eCB0byA4JS4KKyAg
ICAgICAgCisgICAgICAgIE5vdGUgdGhhdCBKU0NfYXN5bmNEaXNhc3NlbWJseT10cnVlIGRvZXMg
bWFrZSBpdCBpbmNvcnJlY3QgdG8gcnVuICJ0aW1lIiBhcyBhIHdheSBvZgorICAgICAgICBtZWFz
dXJpbmcgYmVuY2htYXJrIHBlcmZvcm1hbmNlLiBUaGlzIGlzIGJlY2F1c2UgYXQgVk0gZXhpdCwg
d2Ugd2FpdCBmb3IgYWxsIGFzeW5jCisgICAgICAgIGRpc2Fzc2VtYmx5IHJlcXVlc3RzIHRvIGZp
bmlzaC4gRm9yIGV4YW1wbGUsIGZvciBlYXJsZXktYm95ZXIsIHdlIHNwZW5kIGFuIGV4dHJhIH4x
MzBtcworICAgICAgICBhZnRlciB0aGUgYmVuY2htYXJrIGNvbXBsZXRlbHkgZmluaXNoZXMgdG8g
ZmluaXNoIHRoZSBkaXNhc3NlbWJsaWVzLiBUaGlzIHNtYWxsIHdlaXJkbmVzcworICAgICAgICBz
aG91bGQgYmUgT0sgZm9yIHRoZSBpbnRlbmRlZCB1c2UtY2FzZXMsIHNpbmNlIGFsbCB5b3UgaGF2
ZSB0byBkbyB0byBnZXQgYXJvdW5kIGl0IGlzIHRvCisgICAgICAgIG1lYXN1cmUgdGhlIGV4ZWN1
dGlvbiB0aW1lIG9mIHRoZSBiZW5jaG1hcmsgcGF5bG9hZCByYXRoZXIgdGhhbiB0aGUgZW5kLXRv
LWVuZCB0aW1lIG9mCisgICAgICAgIGxhdW5jaGluZyB0aGUgVk0uCisKKyAgICAgICAgKiBhc3Nl
bWJsZXIvTGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmZpbmFsaXpl
Q29kZVdpdGhEaXNhc3NlbWJseSk6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoK
KyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6d2FzQWxyZWFkeURpc2Fzc2VtYmxlZCk6CisgICAg
ICAgIChKU0M6OkxpbmtCdWZmZXI6OmRpZEFscmVhZHlEaXNhc3NlbWJsZSk6CisgICAgICAgICog
ZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6
ZGlzYXNzZW1ibGUpOgorICAgICAgICAqIGRmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6
OkpJVEZpbmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbik6CisgICAgICAgICogZGlzYXNzZW1ibGVy
L0Rpc2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OmRpc2Fzc2VtYmxlQXN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoSlNDOjp3YWl0Rm9yQXN5bmNocm9ub3VzRGlzYXNzZW1ibHkpOgorICAg
ICAgICAqIGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuaDoKKyAgICAgICAgKiBmdGwvRlRMQ29t
cGlsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bW1BbGxvY2F0ZURhdGFTZWN0aW9uKToKKyAg
ICAgICAgKiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAg
ICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgor
ICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAg
ICogcnVudGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjp+Vk0pOgorCiAyMDE1LTAzLTIz
ICBEZWFuIEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBFUzc6IEltcGxlbWVu
dCBBcnJheS5wcm90b3R5cGUuaW5jbHVkZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZp
c2lvbiAxODE4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVk
ZSAiSGVhcFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJJbml0aWFsaXplVGhyZWFkaW5nLmgiCkBA
IC0xMDQsNiArMTA1LDggQEAgbmFtZXNwYWNlIHsKIAogTk9fUkVUVVJOX1dJVEhfVkFMVUUgc3Rh
dGljIHZvaWQganNjRXhpdChpbnQgc3RhdHVzKQogeworICAgIHdhaXRGb3JBc3luY2hyb25vdXNE
aXNhc3NlbWJseSgpOworICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChERkc6Omlz
Q3Jhc2hpbmcoKSkgewogICAgICAgICBmb3IgKDs7KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAJKHJldmlzaW9uIDE4MTg3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
Mi0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNTksMTkgKzU5LDI4IEBAIExpbmtCdWZmZXI6OkNvZGVSZWYgTGlu
a0J1ZmZlcjo6ZmluYWxpemUKIHsKICAgICBDb2RlUmVmIHJlc3VsdCA9IGZpbmFsaXplQ29kZVdp
dGhvdXREaXNhc3NlbWJseSgpOwogCi0jaWYgRU5BQkxFKERJU0FTU0VNQkxFUikKLSAgICBkYXRh
TG9nRigiR2VuZXJhdGVkIEpJVCBjb2RlIGZvciAiKTsKKyAgICBpZiAobV9hbHJlYWR5RGlzYXNz
ZW1ibGVkKQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIAorICAgIFN0cmluZ1ByaW50U3Ry
ZWFtIG91dDsKKyAgICBvdXQucHJpbnRmKCJHZW5lcmF0ZWQgSklUIGNvZGUgZm9yICIpOwogICAg
IHZhX2xpc3QgYXJnTGlzdDsKICAgICB2YV9zdGFydChhcmdMaXN0LCBmb3JtYXQpOwotICAgIFdU
Rjo6ZGF0YUxvZ0ZWKGZvcm1hdCwgYXJnTGlzdCk7CisgICAgb3V0LnZwcmludGYoZm9ybWF0LCBh
cmdMaXN0KTsKICAgICB2YV9lbmQoYXJnTGlzdCk7Ci0gICAgZGF0YUxvZ0YoIjpcbiIpOworICAg
IG91dC5wcmludGYoIjpcbiIpOworCisgICAgb3V0LnByaW50ZigiICAgIENvZGUgYXQgWyVwLCAl
cCk6XG4iLCByZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0YXRpY19jYXN0PGNo
YXIqPihyZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgcmVzdWx0LnNpemUoKSk7
CisgICAgCisgICAgQ1N0cmluZyBoZWFkZXIgPSBvdXQudG9DU3RyaW5nKCk7CiAgICAgCi0gICAg
ZGF0YUxvZ0YoIiAgICBDb2RlIGF0IFslcCwgJXApOlxuIiwgcmVzdWx0LmNvZGUoKS5leGVjdXRh
YmxlQWRkcmVzcygpLCBzdGF0aWNfY2FzdDxjaGFyKj4ocmVzdWx0LmNvZGUoKS5leGVjdXRhYmxl
QWRkcmVzcygpKSArIHJlc3VsdC5zaXplKCkpOworICAgIGlmIChPcHRpb25zOjphc3luY0Rpc2Fz
c2VtYmx5KCkpIHsKKyAgICAgICAgZGlzYXNzZW1ibGVBc3luY2hyb25vdXNseShoZWFkZXIsIHJl
c3VsdCwgbV9zaXplLCAiICAgICIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAg
ICAKKyAgICBkYXRhTG9nKGhlYWRlcik7CiAgICAgZGlzYXNzZW1ibGUocmVzdWx0LmNvZGUoKSwg
bV9zaXplLCAiICAgICIsIFdURjo6ZGF0YUZpbGUoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShmb3JtYXQpOwotI2VuZGlmIC8vIEVOQUJMRShESVNBU1NFTUJMRVIpCiAgICAgCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlu
a0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TGlua0J1ZmZlci5oCShyZXZpc2lvbiAxODE4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEy
LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yNTQsNiArMjU0LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
cmV0dXJuIG1fc2l6ZTsKICAgICB9CisgICAgCisgICAgYm9vbCB3YXNBbHJlYWR5RGlzYXNzZW1i
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9hbHJlYWR5RGlzYXNzZW1ibGVkOyB9CisgICAgdm9pZCBk
aWRBbHJlYWR5RGlzYXNzZW1ibGUoKSB7IG1fYWxyZWFkeURpc2Fzc2VtYmxlZCA9IHRydWU7IH0K
IAogcHJpdmF0ZToKICNpZiBFTkFCTEUoQlJBTkNIX0NPTVBBQ1RJT04pCkBAIC0zMTAsNiArMzEz
LDcgQEAgcHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2NvbXBsZXRlZDsKICNl
bmRpZgorICAgIGJvb2wgbV9hbHJlYWR5RGlzYXNzZW1ibGVkIHsgZmFsc2UgfTsKIH07CiAKICNk
ZWZpbmUgRklOQUxJWkVfQ09ERV9JRihjb25kaXRpb24sIGxpbmtCdWZmZXJSZWZlcmVuY2UsIGRh
dGFMb2dGQXJndW1lbnRzRm9ySGVhZGluZykgIFwKQEAgLTMyMCw3ICszMjQsNyBAQCBwcml2YXRl
OgogYm9vbCBzaG91bGRTaG93RGlzYXNzZW1ibHlGb3IoQ29kZUJsb2NrKik7CiAKICNkZWZpbmUg
RklOQUxJWkVfQ09ERV9GT1IoY29kZUJsb2NrLCBsaW5rQnVmZmVyUmVmZXJlbmNlLCBkYXRhTG9n
RkFyZ3VtZW50c0ZvckhlYWRpbmcpICBcCi0gICAgRklOQUxJWkVfQ09ERV9JRihzaG91bGRTaG93
RGlzYXNzZW1ibHlGb3IoY29kZUJsb2NrKSwgbGlua0J1ZmZlclJlZmVyZW5jZSwgZGF0YUxvZ0ZB
cmd1bWVudHNGb3JIZWFkaW5nKQorICAgIEZJTkFMSVpFX0NPREVfSUYoc2hvdWxkU2hvd0Rpc2Fz
c2VtYmx5Rm9yKGNvZGVCbG9jaykgfHwgT3B0aW9uczo6YXN5bmNEaXNhc3NlbWJseSgpLCBsaW5r
QnVmZmVyUmVmZXJlbmNlLCBkYXRhTG9nRkFyZ3VtZW50c0ZvckhlYWRpbmcpCiAKIC8vIFVzZSB0
aGlzIHRvIGZpbmFsaXplIGNvZGUsIGxpa2Ugc286CiAvLwpAQCAtMzM5LDEwICszNDMsMTAgQEAg
Ym9vbCBzaG91bGRTaG93RGlzYXNzZW1ibHlGb3IoQ29kZUJsb2NrKgogLy8gaXMgdHJ1ZSwgc28g
eW91IGNhbiBoaWRlIGV4cGVuc2l2ZSBkaXNhc3NlbWJseS1vbmx5IGNvbXB1dGF0aW9ucyBpbnNp
ZGUgdGhlcmUuCiAKICNkZWZpbmUgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyUmVmZXJlbmNlLCBk
YXRhTG9nRkFyZ3VtZW50c0ZvckhlYWRpbmcpICBcCi0gICAgRklOQUxJWkVfQ09ERV9JRihKU0M6
Ok9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSgpLCBsaW5rQnVmZmVyUmVmZXJlbmNlLCBkYXRhTG9n
RkFyZ3VtZW50c0ZvckhlYWRpbmcpCisgICAgRklOQUxJWkVfQ09ERV9JRihKU0M6Ok9wdGlvbnM6
OmFzeW5jRGlzYXNzZW1ibHkoKSB8fCBKU0M6Ok9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSgpLCBs
aW5rQnVmZmVyUmVmZXJlbmNlLCBkYXRhTG9nRkFyZ3VtZW50c0ZvckhlYWRpbmcpCiAKICNkZWZp
bmUgRklOQUxJWkVfREZHX0NPREUobGlua0J1ZmZlclJlZmVyZW5jZSwgZGF0YUxvZ0ZBcmd1bWVu
dHNGb3JIZWFkaW5nKSAgXAotICAgIEZJTkFMSVpFX0NPREVfSUYoKEpTQzo6T3B0aW9uczo6c2hv
d0Rpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6c2hvd0RGR0Rpc2Fzc2VtYmx5KCkpLCBsaW5rQnVm
ZmVyUmVmZXJlbmNlLCBkYXRhTG9nRkFyZ3VtZW50c0ZvckhlYWRpbmcpCisgICAgRklOQUxJWkVf
Q09ERV9JRihKU0M6Ok9wdGlvbnM6OmFzeW5jRGlzYXNzZW1ibHkoKSB8fCBKU0M6Ok9wdGlvbnM6
OnNob3dEaXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6OnNob3dERkdEaXNhc3NlbWJseSgpLCBsaW5r
QnVmZmVyUmVmZXJlbmNlLCBkYXRhTG9nRkFyZ3VtZW50c0ZvckhlYWRpbmcpCiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBp
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAkocmV2aXNpb24gMTgxODc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1NCw4ICs0NTQsMTAgQEAg
dm9pZCBKSVRDb21waWxlcjo6bGlua0Z1bmN0aW9uKCkKIAogdm9pZCBKSVRDb21waWxlcjo6ZGlz
YXNzZW1ibGUoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKLSAgICBpZiAoc2hvdWxkU2hvd0Rp
c2Fzc2VtYmx5KCkpCisgICAgaWYgKHNob3VsZFNob3dEaXNhc3NlbWJseSgpKSB7CiAgICAgICAg
IG1fZGlzYXNzZW1ibGVyLT5kdW1wKGxpbmtCdWZmZXIpOworICAgICAgICBsaW5rQnVmZmVyLmRp
ZEFscmVhZHlEaXNhc3NlbWJsZSgpOworICAgIH0KICAgICAKICAgICBpZiAobV9ncmFwaC5tX3Bs
YW4uY29tcGlsYXRpb24pCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5yZXBvcnRUb1Byb2ZpbGVy
KG1fZ3JhcGgubV9wbGFuLmNvbXBpbGF0aW9uLmdldCgpLCBsaW5rQnVmZmVyKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAJKHJldmlzaW9u
IDE4MTg3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIK
ICNpbmNsdWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdQbGFuLmgiCiAjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgpAQCAtNTYsNyArNTcsOSBAQCBzaXplX3QgSklURmluYWxpemVyOjpjb2Rl
U2l6ZSgpCiBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemUoKQogewogICAgIG1faml0Q29kZS0+
aW5pdGlhbGl6ZUNvZGVSZWYoCi0gICAgICAgIG1fbGlua0J1ZmZlci0+ZmluYWxpemVDb2RlV2l0
aG91dERpc2Fzc2VtYmx5KCksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKKyAgICAgICAgRklO
QUxJWkVfREZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9D
U3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2suZ2V0KCksIEpJVENv
ZGU6OkRGR0pJVCkpLmRhdGEoKSkpLAorICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7
CisgICAgCiAgICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZShtX2ppdENvZGUpOwogICAg
IAogICAgIGZpbmFsaXplQ29tbW9uKCk7CkBAIC02OCw3ICs3MSw4IEBAIGJvb2wgSklURmluYWxp
emVyOjpmaW5hbGl6ZUZ1bmN0aW9uKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV93aXRoQXJp
dHlDaGVjay5pc0VtcHR5VmFsdWUoKSk7CiAgICAgbV9qaXRDb2RlLT5pbml0aWFsaXplQ29kZVJl
ZigKLSAgICAgICAgbV9saW5rQnVmZmVyLT5maW5hbGl6ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHko
KSwgbV93aXRoQXJpdHlDaGVjayk7CisgICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtC
dWZmZXIsICgiREZHIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklU
VHlwZShtX3BsYW4uY29kZUJsb2NrLmdldCgpLCBKSVRDb2RlOjpERkdKSVQpKS5kYXRhKCkpKSwK
KyAgICAgICAgbV93aXRoQXJpdHlDaGVjayk7CiAgICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklU
Q29kZShtX2ppdENvZGUpOwogICAgIAogICAgIGZpbmFsaXplQ29tbW9uKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3Bw
CShyZXZpc2lvbiAxODE4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVy
L0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDEx
IEBACiAKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlIDx3dGYv
RGF0YUxvZy5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRl
c3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUg
PHd0Zi9UaHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtMzksNSArNDQsMTEyIEBAIHZvaWQgZGlzYXNzZW1ibGUo
Y29uc3QgTWFjcm9Bc3NlbWJsZXJDb2QKICAgICBvdXQucHJpbnRmKCIlc2Rpc2Fzc2VtYmx5IG5v
dCBhdmFpbGFibGUgZm9yIHJhbmdlICVwLi4uJXBcbiIsIHByZWZpeCwgY29kZVB0ci5leGVjdXRh
YmxlQWRkcmVzcygpLCBzdGF0aWNfY2FzdDxjaGFyKj4oY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpKSArIHNpemUpOwogfQogCituYW1lc3BhY2UgeworCisvLyBUaGlzIGlzIHJlYWxseSBhIHN0
cnVjdCwgZXhjZXB0IHRoYXQgaXQgc2hvdWxkIGJlIGEgY2xhc3MgYmVjYXVzZSB0aGF0J3Mgd2hh
dCB0aGUgV1RGXyogbWFjcm9zCisvLyBleHBlY3QuCitjbGFzcyBEaXNhc3NlbWJseVRhc2sgewor
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKERpc2Fzc2VtYmx5VGFzayk7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgRGlzYXNzZW1ibHlUYXNrKCkKKyAgICB7Cisg
ICAgfQorICAgIAorICAgIH5EaXNhc3NlbWJseVRhc2soKQorICAgIHsKKyAgICAgICAgaWYgKGhl
YWRlcikKKyAgICAgICAgICAgIGZyZWUoaGVhZGVyKTsgLy8gZnJlZSgpIGJlY2F1c2UgaXQgd291
bGQgaGF2ZSBiZWVuIGNvcGllZCBieSBzdHJkdXAuCisgICAgfQorICAgIAorICAgIGNoYXIqIGhl
YWRlciB7IG51bGxwdHIgfTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZjsKKyAg
ICBzaXplX3Qgc2l6ZSB7IDAgfTsKKyAgICBjb25zdCBjaGFyKiBwcmVmaXggeyBudWxscHRyIH07
CisgICAgSW5zdHJ1Y3Rpb25TdWJzZXRIaW50IHN1YnNldEhpbnQgeyBNYWNyb0Fzc2VtYmxlclN1
YnNldCB9OworfTsKKworY2xhc3MgQXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyIHsKK3B1YmxpYzoK
KyAgICBBc3luY2hyb25vdXNEaXNhc3NlbWJsZXIoKQorICAgIHsKKyAgICAgICAgY3JlYXRlVGhy
ZWFkKCJBc3luY2hyb25vdXMgRGlzYXNzZW1ibGVyIiwgWyZdICgpIHsgcnVuKCk7IH0pOworICAg
IH0KKyAgICAKKyAgICB2b2lkIGVucXVldWUoc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFz
az4gdGFzaykKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAg
ICAgICBtX3F1ZXVlLmFwcGVuZChXVEY6Om1vdmUodGFzaykpOworICAgICAgICBtX2NvbmRpdGlv
bi5icm9hZGNhc3QoKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB3YWl0VW50aWxFbXB0eSgpCisg
ICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgd2hpbGUg
KCFtX3F1ZXVlLmlzRW1wdHkoKSB8fCBtX3dvcmtpbmcpCisgICAgICAgICAgICBtX2NvbmRpdGlv
bi53YWl0KG1fbG9jayk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBOT19SRVRVUk4gdm9p
ZCBydW4oKQorICAgIHsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4gdGFzazsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgICAgICBtX3dvcmtp
bmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBtX2NvbmRpdGlvbi5icm9hZGNhc3QoKTsKKyAg
ICAgICAgICAgICAgICB3aGlsZSAobV9xdWV1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAg
ICAgIG1fY29uZGl0aW9uLndhaXQobV9sb2NrKTsKKyAgICAgICAgICAgICAgICB0YXNrID0gbV9x
dWV1ZS50YWtlRmlyc3QoKTsKKyAgICAgICAgICAgICAgICBtX3dvcmtpbmcgPSB0cnVlOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBkYXRhTG9nKHRhc2stPmhlYWRlcik7CisgICAgICAg
ICAgICBkaXNhc3NlbWJsZSgKKyAgICAgICAgICAgICAgICB0YXNrLT5jb2RlUmVmLmNvZGUoKSwg
dGFzay0+c2l6ZSwgdGFzay0+cHJlZml4LCBXVEY6OmRhdGFGaWxlKCksCisgICAgICAgICAgICAg
ICAgdGFzay0+c3Vic2V0SGludCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgTXV0ZXgg
bV9sb2NrOworICAgIFRocmVhZENvbmRpdGlvbiBtX2NvbmRpdGlvbjsKKyAgICBEZXF1ZTxzdGQ6
OnVuaXF1ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPj4gbV9xdWV1ZTsKKyAgICBib29sIG1fd29ya2lu
ZyB7IGZhbHNlIH07Cit9OworCitib29sIGhhZEFueUFzeW5jaHJvbm91c0Rpc2Fzc2VtYmx5ID0g
ZmFsc2U7CisKK0FzeW5jaHJvbm91c0Rpc2Fzc2VtYmxlciYgYXN5bmNocm9ub3VzRGlzYXNzZW1i
bGVyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXN5bmNocm9ub3VzRGlzYXNzZW1i
bGVyPiBkaXNhc3NlbWJsZXI7CisgICAgaGFkQW55QXN5bmNocm9ub3VzRGlzYXNzZW1ibHkgPSB0
cnVlOworICAgIHJldHVybiBkaXNhc3NlbWJsZXIuZ2V0KCk7Cit9CisKK30gLy8gYW5vbnltb3Vz
IG5hbWVzcGFjZQorCit2b2lkIGRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkoCisgICAgY29uc3Qg
Q1N0cmluZyYgaGVhZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIGNvZGVSZWYsIHNp
emVfdCBzaXplLCBjb25zdCBjaGFyKiBwcmVmaXgsCisgICAgSW5zdHJ1Y3Rpb25TdWJzZXRIaW50
IHN1YnNldEhpbnQpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4gdGFz
ayA9IHN0ZDo6bWFrZV91bmlxdWU8RGlzYXNzZW1ibHlUYXNrPigpOworICAgIHRhc2stPmhlYWRl
ciA9IHN0cmR1cChoZWFkZXIuZGF0YSgpKTsgLy8gWXVjayEgV2UgbmVlZCB0aGlzIGJlY2F1c2Ug
Q1N0cmluZyBkb2VzIHJhY3kgcmVmY291bnRpbmcuCisgICAgdGFzay0+Y29kZVJlZiA9IGNvZGVS
ZWY7CisgICAgdGFzay0+c2l6ZSA9IHNpemU7CisgICAgdGFzay0+cHJlZml4ID0gcHJlZml4Owor
ICAgIHRhc2stPnN1YnNldEhpbnQgPSBzdWJzZXRIaW50OworICAgIAorICAgIGFzeW5jaHJvbm91
c0Rpc2Fzc2VtYmxlcigpLmVucXVldWUoV1RGOjptb3ZlKHRhc2spKTsKK30KKwordm9pZCB3YWl0
Rm9yQXN5bmNocm9ub3VzRGlzYXNzZW1ibHkoKQoreworICAgIGlmICghaGFkQW55QXN5bmNocm9u
b3VzRGlzYXNzZW1ibHkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBhc3luY2hyb25vdXNE
aXNhc3NlbWJsZXIoKS53YWl0VW50aWxFbXB0eSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fz
c2VtYmxlci5oCShyZXZpc2lvbiAxODE4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlz
YXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwx
MSArMjYsMTQgQEAKICNpZm5kZWYgRGlzYXNzZW1ibGVyX2gKICNkZWZpbmUgRGlzYXNzZW1ibGVy
X2gKIAorI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwog
CiBlbnVtIEluc3RydWN0aW9uU3Vic2V0SGludCB7IE1hY3JvQXNzZW1ibGVyU3Vic2V0LCBMTFZN
U3Vic2V0IH07CiAKQEAgLTQ3LDYgKzUwLDE0IEBAIGlubGluZSBib29sIHRyeVRvRGlzYXNzZW1i
bGUoY29uc3QgTWFjcm8KIC8vIHRoZSByYW5nZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzc2VzLgog
dm9pZCBkaXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNv
bnN0IGNoYXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mIG91dCwgSW5zdHJ1Y3Rpb25TdWJzZXRIaW50
ID0gTWFjcm9Bc3NlbWJsZXJTdWJzZXQpOwogCisvLyBBc3luY2hyb25vdXMgZGlzYXNzZW1ibHku
IFRoaXMgaGFwcGVucyBvbiBhbm90aGVyIHRocmVhZCwgYW5kIGNhbGxzIHRoZSBwcm92aWRlZAor
Ly8gY2FsbGJhY2sgd2hlbiB0aGUgZGlzYXNzZW1ibHkgaXMgZG9uZS4KK3ZvaWQgZGlzYXNzZW1i
bGVBc3luY2hyb25vdXNseSgKKyAgICBjb25zdCBDU3RyaW5nJiBoZWFkZXIsIGNvbnN0IE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiYsIHNpemVfdCwgY29uc3QgY2hhciogcHJlZml4LAorICAgIEluc3Ry
dWN0aW9uU3Vic2V0SGludCA9IE1hY3JvQXNzZW1ibGVyU3Vic2V0KTsKKworSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCB3YWl0Rm9yQXN5bmNocm9ub3VzRGlzYXNzZW1ibHkoKTsKKwogfSAvLyBuYW1l
c3BhY2UgSlNDCiAKICNlbmRpZiAvLyBEaXNhc3NlbWJsZXJfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDb21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCShyZXZpc2lvbiAxODE4NzUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDMs
MTcgKzgwMywyNiBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlCiAg
ICAgICAgICAgICBzdGF0ZSwgc3RhdGUuZ3JhcGgubV9jb2RlQmxvY2ssIHN0YXRlLmppdENvZGUu
Z2V0KCksIHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uLAogICAgICAgICAgICAgcmVjb3JkTWFwLCBk
aWRTZWVVbndpbmRJbmZvKTsKICAgICAgICAgCi0gICAgICAgIGlmIChzaG91bGRTaG93RGlzYXNz
ZW1ibHkoKSkgeworICAgICAgICBpZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkgfHwgT3B0aW9u
czo6YXN5bmNEaXNhc3NlbWJseSgpKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgc3RhdGUuaml0Q29kZS0+aGFuZGxlcygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKHN0YXRlLmNvZGVTZWN0aW9uTmFtZXNbaV0gIT0gU0VDVElPTl9OQU1FKCJ0ZXh0
IikpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGhhbmRsZSA9IHN0YXRlLmppdENv
ZGUtPmhhbmRsZXMoKVtpXS5nZXQoKTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nKAorICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIENTdHJpbmcgaGVhZGVyID0gdG9DU3RyaW5nKAog
ICAgICAgICAgICAgICAgICAgICAiR2VuZXJhdGVkIExMVk0gY29kZSBhZnRlciBzdGFja21hcC1i
YXNlZCBmaXgtdXAgZm9yICIsCiAgICAgICAgICAgICAgICAgICAgIENvZGVCbG9ja1dpdGhKSVRU
eXBlKHN0YXRlLmdyYXBoLm1fY29kZUJsb2NrLCBKSVRDb2RlOjpGVExKSVQpLAogICAgICAgICAg
ICAgICAgICAgICAiIGluICIsIHN0YXRlLmdyYXBoLm1fcGxhbi5tb2RlLCAiICMiLCBpLCAiLCAi
LAogICAgICAgICAgICAgICAgICAgICBzdGF0ZS5jb2RlU2VjdGlvbk5hbWVzW2ldLCAiOlxuIik7
CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OmFzeW5jRGlz
YXNzZW1ibHkoKSkgeworICAgICAgICAgICAgICAgICAgICBkaXNhc3NlbWJsZUFzeW5jaHJvbm91
c2x5KAorICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLCBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYoaGFuZGxlKSwgaGFuZGxlLT5zaXplSW5CeXRlcygpLCAiICAgICIsCisgICAgICAgICAgICAg
ICAgICAgICAgICBMTFZNU3Vic2V0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGRpc2Fz
c2VtYmxlKAogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoaGFuZGxl
LT5zdGFydCgpKSwgaGFuZGxlLT5zaXplSW5CeXRlcygpLAogICAgICAgICAgICAgICAgICAgICAi
ICAgICIsIFdURjo6ZGF0YUZpbGUoKSwgTExWTVN1YnNldCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTGluay5jcHAJKHJldmlzaW9uIDE4MTg3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTGluay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSwxMCArMTMxLDEw
IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgICAgICBpZiAoc3RhdGUuY29kZVNl
Y3Rpb25OYW1lc1tpXSAhPSBTRUNUSU9OX05BTUUoInRleHQiKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEV4ZWN1dGFibGVNZW1vcnlI
YW5kbGUqIGhhbmRsZSA9IHN0YXRlLmppdENvZGUtPmhhbmRsZXMoKVtpXS5nZXQoKTsKLSAgICAg
ICAgICAgICAgICBkaXNhc3NlbWJsZSgKLSAgICAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKGhhbmRsZS0+c3RhcnQoKSksIGhhbmRsZS0+c2l6ZUluQnl0ZXMoKSwKLSAgICAg
ICAgICAgICAgICAgICAgIiAgICAgICIsIG91dCwgTExWTVN1YnNldCk7CisgICAgICAgICAgICBF
eGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBoYW5kbGUgPSBzdGF0ZS5qaXRDb2RlLT5oYW5kbGVzKClb
aV0uZ2V0KCk7CisgICAgICAgICAgICBkaXNhc3NlbWJsZSgKKyAgICAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoaGFuZGxlLT5zdGFydCgpKSwgaGFuZGxlLT5zaXplSW5CeXRlcygp
LAorICAgICAgICAgICAgICAgICIgICAgICAiLCBvdXQsIExMVk1TdWJzZXQpOwogICAgICAgICB9
CiAgICAgICAgIGNvbXBpbGF0aW9uLT5hZGREZXNjcmlwdGlvbihQcm9maWxlcjo6T3JpZ2luU3Rh
Y2soKSwgb3V0LnRvQ1N0cmluZygpKTsKICAgICAgICAgb3V0LnJlc2V0KCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxODE4NzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEyLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMi0y
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAiQXJpdHlDaGVja0ZhaWxS
ZXR1cm5UaHVua3MuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb2RlQmxv
Y2tXaXRoSklUVHlwZS5oIgogI2luY2x1ZGUgIkRGR0NhcGFiaWxpdGllcy5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSklUSW5saW5lcy5oIgpAQCAtNjgyLDE0ICs2ODMs
MTggQEAgQ29tcGlsYXRpb25SZXN1bHQgSklUOjpwcml2YXRlQ29tcGlsZShKSQogICAgIGlmICht
X2NvZGVCbG9jay0+Y29kZVR5cGUoKSA9PSBGdW5jdGlvbkNvZGUpCiAgICAgICAgIHdpdGhBcml0
eUNoZWNrID0gcGF0Y2hCdWZmZXIubG9jYXRpb25PZihhcml0eUNoZWNrKTsKIAotICAgIGlmIChP
cHRpb25zOjpzaG93RGlzYXNzZW1ibHkoKSkKKyAgICBpZiAoT3B0aW9uczo6c2hvd0Rpc2Fzc2Vt
Ymx5KCkpIHsKICAgICAgICAgbV9kaXNhc3NlbWJsZXItPmR1bXAocGF0Y2hCdWZmZXIpOworICAg
ICAgICBwYXRjaEJ1ZmZlci5kaWRBbHJlYWR5RGlzYXNzZW1ibGUoKTsKKyAgICB9CiAgICAgaWYg
KG1fY29tcGlsYXRpb24pIHsKICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnJlcG9ydFRvUHJvZmls
ZXIobV9jb21waWxhdGlvbi5nZXQoKSwgcGF0Y2hCdWZmZXIpOwogICAgICAgICBtX3ZtLT5tX3Bl
ckJ5dGVjb2RlUHJvZmlsZXItPmFkZENvbXBpbGF0aW9uKG1fY29tcGlsYXRpb24pOwogICAgIH0K
ICAgICAKLSAgICBDb2RlUmVmIHJlc3VsdCA9IHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZVdpdGhv
dXREaXNhc3NlbWJseSgpOworICAgIENvZGVSZWYgcmVzdWx0ID0gRklOQUxJWkVfQ09ERSgKKyAg
ICAgICAgcGF0Y2hCdWZmZXIsCisgICAgICAgICgiQmFzZWxpbmUgSklUIGNvZGUgZm9yICVzIiwg
dG9DU3RyaW5nKENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRDb2RlOjpCYXNl
bGluZUpJVCkpLmRhdGEoKSkpOwogICAgIAogICAgIG1fdm0tPm1hY2hpbmVDb2RlQnl0ZXNQZXJC
eXRlY29kZVdvcmRGb3JCYXNlbGluZUpJVC5hZGQoCiAgICAgICAgIHN0YXRpY19jYXN0PGRvdWJs
ZT4ocmVzdWx0LnNpemUoKSkgLwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuaAkocmV2aXNpb24gMTgxODc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsNiArMTE2LDcgQEAgdHlwZWRlZiBj
b25zdCBjaGFyKiBvcHRpb25TdHJpbmc7CiAgICAgXAogICAgIC8qIHNob3dEaXNhc3NlbWJseSBp
bXBsaWVzIHNob3dERkdEaXNhc3NlbWJseS4gKi8gXAogICAgIHYoYm9vbCwgc2hvd0Rpc2Fzc2Vt
Ymx5LCBmYWxzZSkgXAorICAgIHYoYm9vbCwgYXN5bmNEaXNhc3NlbWJseSwgZmFsc2UpIFwKICAg
ICB2KGJvb2wsIHNob3dERkdEaXNhc3NlbWJseSwgZmFsc2UpIFwKICAgICB2KGJvb2wsIHNob3dG
VExEaXNhc3NlbWJseSwgZmFsc2UpIFwKICAgICB2KGJvb2wsIHNob3dBbGxERkdOb2RlcywgZmFs
c2UpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAJKHJldmlzaW9uIDE4
MTg3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkN1c3RvbUdldHRlclNldHRlci5oIgog
I2luY2x1ZGUgIkRGR0xvbmdMaXZlZFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHV29ya2xpc3QuaCIK
KyNpbmNsdWRlICJEaXNhc3NlbWJsZXIuaCIKICNpbmNsdWRlICJFcnJvckluc3RhbmNlLmgiCiAj
aW5jbHVkZSAiRlRMVGh1bmtzLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgpA
QCAtMzA1LDYgKzMwNiw4IEBAIFZNOjp+Vk0oKQogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKICAgICAKKyAgICB3YWl0Rm9yQXN5bmNocm9ub3VzRGlzYXNzZW1ibHkoKTsKKyAgICAK
ICAgICAvLyBDbGVhciB0aGlzIGZpcnN0IHRvIGVuc3VyZSB0aGF0IG5vYm9keSB0cmllcyB0byBy
ZW1vdmUgdGhlbXNlbHZlcyBmcm9tIGl0LgogICAgIG1fcGVyQnl0ZWNvZGVQcm9maWxlciA9IG51
bGxwdHI7CiAK
</data>
<flag name="review"
          id="274111"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249312</attachid>
            <date>2015-03-23 22:29:45 -0700</date>
            <delta_ts>2015-03-23 22:29:45 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22520</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxODg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBA
CisyMDE1LTAzLTIzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SlNDIHNob3VsZCBoYXZlIGEgbG93LWNvc3QgYXN5bmNocm9ub3VzIGRpc2Fzc2VtYmxlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQyOTk3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCisgICAgICAgIAorICAgICAgICBUaGlzIGFkZHMg
YSBKU0NfYXN5bmNEaXNhc3NlbWJseSBvcHRpb24gdGhhdCBkaXNhc3NlbWJsZXMgb24gYSB0aHJl
YWQuIERpc2Fzc2VtYmx5CisgICAgICAgIGRvZXNuJ3QgYmxvY2sgZXhlY3V0aW9uLiBTb21lIGNv
ZGUgd2lsbCBsaXZlIGEgbGl0dGxlIGxvbmdlciBiZWNhdXNlIG9mIHRoaXMsIHNpbmNlIHRoZQor
ICAgICAgICB3b3JrIHRhc2tzIGhvbGQgYSByZWYgdG8gdGhlIGNvZGUsIGJ1dCBvdGhlciB0aGFu
IHRoYXQgdGhlcmUgaXMgYmFzaWNhbGx5IG5vIG92ZXJoZWFkLgorICAgICAgICAKKyAgICAgICAg
QXQgcHJlc2VudCwgdGhpcyBpc24ndCByZWFsbHkgYSByZXBsYWNlbWVudCBmb3IgSlNDX3Nob3dE
aXNhc3NlbWJseSwgc2luY2UgaXQgZG9lc24ndAorICAgICAgICBwcm92aWRlIGNvbnRleHR1YWwg
SVIgaW5mb3JtYXRpb24gZm9yIEJhc2VsaW5lIGFuZCBERkcgZGlzYXNzZW1ibGllcywgYW5kIGl0
IGRvZXNuJ3QgZG8KKyAgICAgICAgdGhlIHNlcGFyYXRlIElSIGR1bXBzIGZvciBGVEwuIFVzaW5n
IEpTQ19zaG93RGlzYXNzZW1ibHkgYW5kIGZyaWVuZHMgYWxvbmcgd2l0aAorICAgICAgICBKU0Nf
YXN5bmNEaXNhc3NlbWJseSBoYXMgYml6YXJyZSBiZWhhdmlvciAtIHNvIGp1c3QgY2hvb3NlIG9u
ZS4KKyAgICAgICAgCisgICAgICAgIEEgc2ltcGxlIHdheSBvZiB1bmRlcnN0YW5kaW5nIGhvdyBn
cmVhdCB0aGlzIGlzLCBpcyB0byBydW4gYSBzbWFsbCBiZW5jaG1hcmsgbGlrZQorICAgICAgICBW
OFNwaWRlci9lYXJsZXktYm95ZXIuCisgICAgICAgIAorICAgICAgICBQZXJmb3JtYW5jZSB3aXRo
b3V0IGFueSBkaXNhc3NlbWJseSBmbGFnczogNjBtcworICAgICAgICBQZXJmb3JtYW5jZSB3aXRo
IEpTQ19zaG93RGlzYXNzZW1ibHk9dHJ1ZTogNDc3bXMKKyAgICAgICAgUGVyZm9ybWFuY2Ugd2l0
aCBKU0NfYXN5bmNEaXNhc3NlbWJseT10cnVlOiA2NW1zCisgICAgICAgIAorICAgICAgICBTbywg
dGhlIG92ZXJoZWFkIG9mIGRpc2Fzc2VtYmx5IGdvZXMgZnJvbSA4eCB0byA4JS4KKyAgICAgICAg
CisgICAgICAgIE5vdGUgdGhhdCBKU0NfYXN5bmNEaXNhc3NlbWJseT10cnVlIGRvZXMgbWFrZSBp
dCBpbmNvcnJlY3QgdG8gcnVuICJ0aW1lIiBhcyBhIHdheSBvZgorICAgICAgICBtZWFzdXJpbmcg
YmVuY2htYXJrIHBlcmZvcm1hbmNlLiBUaGlzIGlzIGJlY2F1c2UgYXQgVk0gZXhpdCwgd2Ugd2Fp
dCBmb3IgYWxsIGFzeW5jCisgICAgICAgIGRpc2Fzc2VtYmx5IHJlcXVlc3RzIHRvIGZpbmlzaC4g
Rm9yIGV4YW1wbGUsIGZvciBlYXJsZXktYm95ZXIsIHdlIHNwZW5kIGFuIGV4dHJhIH4xMzBtcwor
ICAgICAgICBhZnRlciB0aGUgYmVuY2htYXJrIGNvbXBsZXRlbHkgZmluaXNoZXMgdG8gZmluaXNo
IHRoZSBkaXNhc3NlbWJsaWVzLiBUaGlzIHNtYWxsIHdlaXJkbmVzcworICAgICAgICBzaG91bGQg
YmUgT0sgZm9yIHRoZSBpbnRlbmRlZCB1c2UtY2FzZXMsIHNpbmNlIGFsbCB5b3UgaGF2ZSB0byBk
byB0byBnZXQgYXJvdW5kIGl0IGlzIHRvCisgICAgICAgIG1lYXN1cmUgdGhlIGV4ZWN1dGlvbiB0
aW1lIG9mIHRoZSBiZW5jaG1hcmsgcGF5bG9hZCByYXRoZXIgdGhhbiB0aGUgZW5kLXRvLWVuZCB0
aW1lIG9mCisgICAgICAgIGxhdW5jaGluZyB0aGUgVk0uCisKKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5jcHA6CisgICAgICAgIChKU0M6OkxpbmtCdWZmZXI6OmZpbmFsaXplQ29kZVdp
dGhEaXNhc3NlbWJseSk6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAg
ICAgKEpTQzo6TGlua0J1ZmZlcjo6d2FzQWxyZWFkeURpc2Fzc2VtYmxlZCk6CisgICAgICAgIChK
U0M6OkxpbmtCdWZmZXI6OmRpZEFscmVhZHlEaXNhc3NlbWJsZSk6CisgICAgICAgICogZGZnL0RG
R0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6ZGlzYXNz
ZW1ibGUpOgorICAgICAgICAqIGRmZy9ERkdKSVRGaW5hbGl6ZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkpJVEZpbmFsaXplcjo6ZmluYWxpemUpOgorICAgICAgICAoSlNDOjpERkc6OkpJVEZp
bmFsaXplcjo6ZmluYWxpemVGdW5jdGlvbik6CisgICAgICAgICogZGlzYXNzZW1ibGVyL0Rpc2Fz
c2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OmRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkpOgor
ICAgICAgICAoSlNDOjp3YWl0Rm9yQXN5bmNocm9ub3VzRGlzYXNzZW1ibHkpOgorICAgICAgICAq
IGRpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuaDoKKyAgICAgICAgKiBmdGwvRlRMQ29tcGlsZS5j
cHA6CisgICAgICAgIChKU0M6OkZUTDo6bW1BbGxvY2F0ZURhdGFTZWN0aW9uKToKKyAgICAgICAg
KiBmdGwvRlRMTGluay5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bGluayk6CisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAg
ICAqIGpzYy5jcHA6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogcnVu
dGltZS9WTS5jcHA6CisgICAgICAgIChKU0M6OlZNOjp+Vk0pOgorCiAyMDE1LTAzLTIzICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBFUzc6IEltcGxlbWVudCBBcnJh
eS5wcm90b3R5cGUuaW5jbHVkZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAx
ODE4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkNvbXBs
ZXRpb24uaCIKICNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGluZXMuaCIKKyNpbmNsdWRlICJEaXNh
c3NlbWJsZXIuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSGVh
cFN0YXRpc3RpY3MuaCIKICNpbmNsdWRlICJJbml0aWFsaXplVGhyZWFkaW5nLmgiCkBAIC0xMDQs
NiArMTA1LDggQEAgbmFtZXNwYWNlIHsKIAogTk9fUkVUVVJOX1dJVEhfVkFMVUUgc3RhdGljIHZv
aWQganNjRXhpdChpbnQgc3RhdHVzKQogeworICAgIHdhaXRGb3JBc3luY2hyb25vdXNEaXNhc3Nl
bWJseSgpOworICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChERkc6OmlzQ3Jhc2hp
bmcoKSkgewogICAgICAgICBmb3IgKDs7KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAJKHJldmlzaW9uIDE4MTg3NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTksMTkgKzU5LDI4IEBAIExpbmtCdWZmZXI6OkNvZGVSZWYgTGlua0J1ZmZl
cjo6ZmluYWxpemUKIHsKICAgICBDb2RlUmVmIHJlc3VsdCA9IGZpbmFsaXplQ29kZVdpdGhvdXRE
aXNhc3NlbWJseSgpOwogCi0jaWYgRU5BQkxFKERJU0FTU0VNQkxFUikKLSAgICBkYXRhTG9nRigi
R2VuZXJhdGVkIEpJVCBjb2RlIGZvciAiKTsKKyAgICBpZiAobV9hbHJlYWR5RGlzYXNzZW1ibGVk
KQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIAorICAgIFN0cmluZ1ByaW50U3RyZWFtIG91
dDsKKyAgICBvdXQucHJpbnRmKCJHZW5lcmF0ZWQgSklUIGNvZGUgZm9yICIpOwogICAgIHZhX2xp
c3QgYXJnTGlzdDsKICAgICB2YV9zdGFydChhcmdMaXN0LCBmb3JtYXQpOwotICAgIFdURjo6ZGF0
YUxvZ0ZWKGZvcm1hdCwgYXJnTGlzdCk7CisgICAgb3V0LnZwcmludGYoZm9ybWF0LCBhcmdMaXN0
KTsKICAgICB2YV9lbmQoYXJnTGlzdCk7Ci0gICAgZGF0YUxvZ0YoIjpcbiIpOworICAgIG91dC5w
cmludGYoIjpcbiIpOworCisgICAgb3V0LnByaW50ZigiICAgIENvZGUgYXQgWyVwLCAlcCk6XG4i
LCByZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIHN0YXRpY19jYXN0PGNoYXIqPihy
ZXN1bHQuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpICsgcmVzdWx0LnNpemUoKSk7CisgICAg
CisgICAgQ1N0cmluZyBoZWFkZXIgPSBvdXQudG9DU3RyaW5nKCk7CiAgICAgCi0gICAgZGF0YUxv
Z0YoIiAgICBDb2RlIGF0IFslcCwgJXApOlxuIiwgcmVzdWx0LmNvZGUoKS5leGVjdXRhYmxlQWRk
cmVzcygpLCBzdGF0aWNfY2FzdDxjaGFyKj4ocmVzdWx0LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVz
cygpKSArIHJlc3VsdC5zaXplKCkpOworICAgIGlmIChPcHRpb25zOjphc3luY0Rpc2Fzc2VtYmx5
KCkpIHsKKyAgICAgICAgZGlzYXNzZW1ibGVBc3luY2hyb25vdXNseShoZWFkZXIsIHJlc3VsdCwg
bV9zaXplLCAiICAgICIpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAg
ICBkYXRhTG9nKGhlYWRlcik7CiAgICAgZGlzYXNzZW1ibGUocmVzdWx0LmNvZGUoKSwgbV9zaXpl
LCAiICAgICIsIFdURjo6ZGF0YUZpbGUoKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShmb3Jt
YXQpOwotI2VuZGlmIC8vIEVOQUJMRShESVNBU1NFTUJMRVIpCiAgICAgCiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1
ZmZlci5oCShyZXZpc2lvbiAxODE4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0xpbmtCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTIsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEyLTIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yNTQsNiArMjU0LDkgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fc2l6ZTsKICAgICB9CisgICAgCisgICAgYm9vbCB3YXNBbHJlYWR5RGlzYXNzZW1ibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9hbHJlYWR5RGlzYXNzZW1ibGVkOyB9CisgICAgdm9pZCBkaWRBbHJl
YWR5RGlzYXNzZW1ibGUoKSB7IG1fYWxyZWFkeURpc2Fzc2VtYmxlZCA9IHRydWU7IH0KIAogcHJp
dmF0ZToKICNpZiBFTkFCTEUoQlJBTkNIX0NPTVBBQ1RJT04pCkBAIC0zMTAsNiArMzEzLDcgQEAg
cHJpdmF0ZToKICNpZm5kZWYgTkRFQlVHCiAgICAgYm9vbCBtX2NvbXBsZXRlZDsKICNlbmRpZgor
ICAgIGJvb2wgbV9hbHJlYWR5RGlzYXNzZW1ibGVkIHsgZmFsc2UgfTsKIH07CiAKICNkZWZpbmUg
RklOQUxJWkVfQ09ERV9JRihjb25kaXRpb24sIGxpbmtCdWZmZXJSZWZlcmVuY2UsIGRhdGFMb2dG
QXJndW1lbnRzRm9ySGVhZGluZykgIFwKQEAgLTMyMCw3ICszMjQsNyBAQCBwcml2YXRlOgogYm9v
bCBzaG91bGRTaG93RGlzYXNzZW1ibHlGb3IoQ29kZUJsb2NrKik7CiAKICNkZWZpbmUgRklOQUxJ
WkVfQ09ERV9GT1IoY29kZUJsb2NrLCBsaW5rQnVmZmVyUmVmZXJlbmNlLCBkYXRhTG9nRkFyZ3Vt
ZW50c0ZvckhlYWRpbmcpICBcCi0gICAgRklOQUxJWkVfQ09ERV9JRihzaG91bGRTaG93RGlzYXNz
ZW1ibHlGb3IoY29kZUJsb2NrKSwgbGlua0J1ZmZlclJlZmVyZW5jZSwgZGF0YUxvZ0ZBcmd1bWVu
dHNGb3JIZWFkaW5nKQorICAgIEZJTkFMSVpFX0NPREVfSUYoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5
Rm9yKGNvZGVCbG9jaykgfHwgT3B0aW9uczo6YXN5bmNEaXNhc3NlbWJseSgpLCBsaW5rQnVmZmVy
UmVmZXJlbmNlLCBkYXRhTG9nRkFyZ3VtZW50c0ZvckhlYWRpbmcpCiAKIC8vIFVzZSB0aGlzIHRv
IGZpbmFsaXplIGNvZGUsIGxpa2Ugc286CiAvLwpAQCAtMzM5LDEwICszNDMsMTAgQEAgYm9vbCBz
aG91bGRTaG93RGlzYXNzZW1ibHlGb3IoQ29kZUJsb2NrKgogLy8gaXMgdHJ1ZSwgc28geW91IGNh
biBoaWRlIGV4cGVuc2l2ZSBkaXNhc3NlbWJseS1vbmx5IGNvbXB1dGF0aW9ucyBpbnNpZGUgdGhl
cmUuCiAKICNkZWZpbmUgRklOQUxJWkVfQ09ERShsaW5rQnVmZmVyUmVmZXJlbmNlLCBkYXRhTG9n
RkFyZ3VtZW50c0ZvckhlYWRpbmcpICBcCi0gICAgRklOQUxJWkVfQ09ERV9JRihKU0M6Ok9wdGlv
bnM6OnNob3dEaXNhc3NlbWJseSgpLCBsaW5rQnVmZmVyUmVmZXJlbmNlLCBkYXRhTG9nRkFyZ3Vt
ZW50c0ZvckhlYWRpbmcpCisgICAgRklOQUxJWkVfQ09ERV9JRihKU0M6Ok9wdGlvbnM6OmFzeW5j
RGlzYXNzZW1ibHkoKSB8fCBKU0M6Ok9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSgpLCBsaW5rQnVm
ZmVyUmVmZXJlbmNlLCBkYXRhTG9nRkFyZ3VtZW50c0ZvckhlYWRpbmcpCiAKICNkZWZpbmUgRklO
QUxJWkVfREZHX0NPREUobGlua0J1ZmZlclJlZmVyZW5jZSwgZGF0YUxvZ0ZBcmd1bWVudHNGb3JI
ZWFkaW5nKSAgXAotICAgIEZJTkFMSVpFX0NPREVfSUYoKEpTQzo6T3B0aW9uczo6c2hvd0Rpc2Fz
c2VtYmx5KCkgfHwgT3B0aW9uczo6c2hvd0RGR0Rpc2Fzc2VtYmx5KCkpLCBsaW5rQnVmZmVyUmVm
ZXJlbmNlLCBkYXRhTG9nRkFyZ3VtZW50c0ZvckhlYWRpbmcpCisgICAgRklOQUxJWkVfQ09ERV9J
RihKU0M6Ok9wdGlvbnM6OmFzeW5jRGlzYXNzZW1ibHkoKSB8fCBKU0M6Ok9wdGlvbnM6OnNob3dE
aXNhc3NlbWJseSgpIHx8IE9wdGlvbnM6OnNob3dERkdEaXNhc3NlbWJseSgpLCBsaW5rQnVmZmVy
UmVmZXJlbmNlLCBkYXRhTG9nRkFyZ3VtZW50c0ZvckhlYWRpbmcpCiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmNwcAkocmV2aXNpb24gMTgxODc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdK
SVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1NCw4ICs0NTQsMTAgQEAgdm9pZCBK
SVRDb21waWxlcjo6bGlua0Z1bmN0aW9uKCkKIAogdm9pZCBKSVRDb21waWxlcjo6ZGlzYXNzZW1i
bGUoTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKIHsKLSAgICBpZiAoc2hvdWxkU2hvd0Rpc2Fzc2Vt
Ymx5KCkpCisgICAgaWYgKHNob3VsZFNob3dEaXNhc3NlbWJseSgpKSB7CiAgICAgICAgIG1fZGlz
YXNzZW1ibGVyLT5kdW1wKGxpbmtCdWZmZXIpOworICAgICAgICBsaW5rQnVmZmVyLmRpZEFscmVh
ZHlEaXNhc3NlbWJsZSgpOworICAgIH0KICAgICAKICAgICBpZiAobV9ncmFwaC5tX3BsYW4uY29t
cGlsYXRpb24pCiAgICAgICAgIG1fZGlzYXNzZW1ibGVyLT5yZXBvcnRUb1Byb2ZpbGVyKG1fZ3Jh
cGgubV9wbGFuLmNvbXBpbGF0aW9uLmdldCgpLCBsaW5rQnVmZmVyKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVEZpbmFsaXplci5jcHAJKHJldmlzaW9uIDE4MTg3
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklURmluYWxpemVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShERkdfSklUKQogCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNs
dWRlICJERkdDb21tb24uaCIKICNpbmNsdWRlICJERkdQbGFuLmgiCiAjaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgpAQCAtNTYsNyArNTcsOSBAQCBzaXplX3QgSklURmluYWxpemVyOjpjb2RlU2l6ZSgp
CiBib29sIEpJVEZpbmFsaXplcjo6ZmluYWxpemUoKQogewogICAgIG1faml0Q29kZS0+aW5pdGlh
bGl6ZUNvZGVSZWYoCi0gICAgICAgIG1fbGlua0J1ZmZlci0+ZmluYWxpemVDb2RlV2l0aG91dERp
c2Fzc2VtYmx5KCksIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKKyAgICAgICAgRklOQUxJWkVf
REZHX0NPREUoKm1fbGlua0J1ZmZlciwgKCJERkcgSklUIGNvZGUgZm9yICVzIiwgdG9DU3RyaW5n
KENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fcGxhbi5jb2RlQmxvY2suZ2V0KCksIEpJVENvZGU6OkRG
R0pJVCkpLmRhdGEoKSkpLAorICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CisgICAg
CiAgICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZShtX2ppdENvZGUpOwogICAgIAogICAg
IGZpbmFsaXplQ29tbW9uKCk7CkBAIC02OCw3ICs3MSw4IEBAIGJvb2wgSklURmluYWxpemVyOjpm
aW5hbGl6ZUZ1bmN0aW9uKCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghbV93aXRoQXJpdHlDaGVj
ay5pc0VtcHR5VmFsdWUoKSk7CiAgICAgbV9qaXRDb2RlLT5pbml0aWFsaXplQ29kZVJlZigKLSAg
ICAgICAgbV9saW5rQnVmZmVyLT5maW5hbGl6ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHkoKSwgbV93
aXRoQXJpdHlDaGVjayk7CisgICAgICAgIEZJTkFMSVpFX0RGR19DT0RFKCptX2xpbmtCdWZmZXIs
ICgiREZHIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlwZSht
X3BsYW4uY29kZUJsb2NrLmdldCgpLCBKSVRDb2RlOjpERkdKSVQpKS5kYXRhKCkpKSwKKyAgICAg
ICAgbV93aXRoQXJpdHlDaGVjayk7CiAgICAgbV9wbGFuLmNvZGVCbG9jay0+c2V0SklUQ29kZSht
X2ppdENvZGUpOwogICAgIAogICAgIGZpbmFsaXplQ29tbW9uKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuY3BwCShyZXZp
c2lvbiAxODE4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fz
c2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDYgKzI4LDExIEBACiAK
ICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxv
Zy5oPgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgorI2luY2x1ZGUgPHd0Zi9U
aHJlYWRpbmcuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nUHJpbWl0aXZlcy5oPgogCiBuYW1l
c3BhY2UgSlNDIHsKIApAQCAtMzksNSArNDQsMTEyIEBAIHZvaWQgZGlzYXNzZW1ibGUoY29uc3Qg
TWFjcm9Bc3NlbWJsZXJDb2QKICAgICBvdXQucHJpbnRmKCIlc2Rpc2Fzc2VtYmx5IG5vdCBhdmFp
bGFibGUgZm9yIHJhbmdlICVwLi4uJXBcbiIsIHByZWZpeCwgY29kZVB0ci5leGVjdXRhYmxlQWRk
cmVzcygpLCBzdGF0aWNfY2FzdDxjaGFyKj4oY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKSAr
IHNpemUpOwogfQogCituYW1lc3BhY2UgeworCisvLyBUaGlzIGlzIHJlYWxseSBhIHN0cnVjdCwg
ZXhjZXB0IHRoYXQgaXQgc2hvdWxkIGJlIGEgY2xhc3MgYmVjYXVzZSB0aGF0J3Mgd2hhdCB0aGUg
V1RGXyogbWFjcm9zCisvLyBleHBlY3QuCitjbGFzcyBEaXNhc3NlbWJseVRhc2sgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKERpc2Fzc2VtYmx5VGFzayk7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CitwdWJsaWM6CisgICAgRGlzYXNzZW1ibHlUYXNrKCkKKyAgICB7CisgICAgfQor
ICAgIAorICAgIH5EaXNhc3NlbWJseVRhc2soKQorICAgIHsKKyAgICAgICAgaWYgKGhlYWRlcikK
KyAgICAgICAgICAgIGZyZWUoaGVhZGVyKTsgLy8gZnJlZSgpIGJlY2F1c2UgaXQgd291bGQgaGF2
ZSBiZWVuIGNvcGllZCBieSBzdHJkdXAuCisgICAgfQorICAgIAorICAgIGNoYXIqIGhlYWRlciB7
IG51bGxwdHIgfTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgY29kZVJlZjsKKyAgICBzaXpl
X3Qgc2l6ZSB7IDAgfTsKKyAgICBjb25zdCBjaGFyKiBwcmVmaXggeyBudWxscHRyIH07CisgICAg
SW5zdHJ1Y3Rpb25TdWJzZXRIaW50IHN1YnNldEhpbnQgeyBNYWNyb0Fzc2VtYmxlclN1YnNldCB9
OworfTsKKworY2xhc3MgQXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyIHsKK3B1YmxpYzoKKyAgICBB
c3luY2hyb25vdXNEaXNhc3NlbWJsZXIoKQorICAgIHsKKyAgICAgICAgY3JlYXRlVGhyZWFkKCJB
c3luY2hyb25vdXMgRGlzYXNzZW1ibGVyIiwgWyZdICgpIHsgcnVuKCk7IH0pOworICAgIH0KKyAg
ICAKKyAgICB2b2lkIGVucXVldWUoc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4gdGFz
aykKKyAgICB7CisgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX2xvY2spOworICAgICAgICBt
X3F1ZXVlLmFwcGVuZChXVEY6Om1vdmUodGFzaykpOworICAgICAgICBtX2NvbmRpdGlvbi5icm9h
ZGNhc3QoKTsKKyAgICB9CisgICAgCisgICAgdm9pZCB3YWl0VW50aWxFbXB0eSgpCisgICAgewor
ICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgd2hpbGUgKCFtX3F1
ZXVlLmlzRW1wdHkoKSB8fCBtX3dvcmtpbmcpCisgICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0
KG1fbG9jayk7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBOT19SRVRVUk4gdm9pZCBydW4o
KQorICAgIHsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PERpc2Fzc2VtYmx5VGFzaz4gdGFzazsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBN
dXRleExvY2tlciBsb2NrZXIobV9sb2NrKTsKKyAgICAgICAgICAgICAgICBtX3dvcmtpbmcgPSBm
YWxzZTsKKyAgICAgICAgICAgICAgICBtX2NvbmRpdGlvbi5icm9hZGNhc3QoKTsKKyAgICAgICAg
ICAgICAgICB3aGlsZSAobV9xdWV1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgICAgIG1f
Y29uZGl0aW9uLndhaXQobV9sb2NrKTsKKyAgICAgICAgICAgICAgICB0YXNrID0gbV9xdWV1ZS50
YWtlRmlyc3QoKTsKKyAgICAgICAgICAgICAgICBtX3dvcmtpbmcgPSB0cnVlOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBkYXRhTG9nKHRhc2stPmhlYWRlcik7CisgICAgICAgICAgICBk
aXNhc3NlbWJsZSgKKyAgICAgICAgICAgICAgICB0YXNrLT5jb2RlUmVmLmNvZGUoKSwgdGFzay0+
c2l6ZSwgdGFzay0+cHJlZml4LCBXVEY6OmRhdGFGaWxlKCksCisgICAgICAgICAgICAgICAgdGFz
ay0+c3Vic2V0SGludCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgTXV0ZXggbV9sb2Nr
OworICAgIFRocmVhZENvbmRpdGlvbiBtX2NvbmRpdGlvbjsKKyAgICBEZXF1ZTxzdGQ6OnVuaXF1
ZV9wdHI8RGlzYXNzZW1ibHlUYXNrPj4gbV9xdWV1ZTsKKyAgICBib29sIG1fd29ya2luZyB7IGZh
bHNlIH07Cit9OworCitib29sIGhhZEFueUFzeW5jaHJvbm91c0Rpc2Fzc2VtYmx5ID0gZmFsc2U7
CisKK0FzeW5jaHJvbm91c0Rpc2Fzc2VtYmxlciYgYXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyKCkK
K3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXN5bmNocm9ub3VzRGlzYXNzZW1ibGVyPiBk
aXNhc3NlbWJsZXI7CisgICAgaGFkQW55QXN5bmNocm9ub3VzRGlzYXNzZW1ibHkgPSB0cnVlOwor
ICAgIHJldHVybiBkaXNhc3NlbWJsZXIuZ2V0KCk7Cit9CisKK30gLy8gYW5vbnltb3VzIG5hbWVz
cGFjZQorCit2b2lkIGRpc2Fzc2VtYmxlQXN5bmNocm9ub3VzbHkoCisgICAgY29uc3QgQ1N0cmlu
ZyYgaGVhZGVyLCBjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYmIGNvZGVSZWYsIHNpemVfdCBz
aXplLCBjb25zdCBjaGFyKiBwcmVmaXgsCisgICAgSW5zdHJ1Y3Rpb25TdWJzZXRIaW50IHN1YnNl
dEhpbnQpCit7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpc2Fzc2VtYmx5VGFzaz4gdGFzayA9IHN0
ZDo6bWFrZV91bmlxdWU8RGlzYXNzZW1ibHlUYXNrPigpOworICAgIHRhc2stPmhlYWRlciA9IHN0
cmR1cChoZWFkZXIuZGF0YSgpKTsgLy8gWXVjayEgV2UgbmVlZCB0aGlzIGJlY2F1c2UgQ1N0cmlu
ZyBkb2VzIHJhY3kgcmVmY291bnRpbmcuCisgICAgdGFzay0+Y29kZVJlZiA9IGNvZGVSZWY7Cisg
ICAgdGFzay0+c2l6ZSA9IHNpemU7CisgICAgdGFzay0+cHJlZml4ID0gcHJlZml4OworICAgIHRh
c2stPnN1YnNldEhpbnQgPSBzdWJzZXRIaW50OworICAgIAorICAgIGFzeW5jaHJvbm91c0Rpc2Fz
c2VtYmxlcigpLmVucXVldWUoV1RGOjptb3ZlKHRhc2spKTsKK30KKwordm9pZCB3YWl0Rm9yQXN5
bmNocm9ub3VzRGlzYXNzZW1ibHkoKQoreworICAgIGlmICghaGFkQW55QXN5bmNocm9ub3VzRGlz
YXNzZW1ibHkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBhc3luY2hyb25vdXNEaXNhc3Nl
bWJsZXIoKS53YWl0VW50aWxFbXB0eSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rpc2Fzc2VtYmxlci9EaXNhc3NlbWJsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1ibGVyL0Rpc2Fzc2VtYmxl
ci5oCShyZXZpc2lvbiAxODE4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGlzYXNzZW1i
bGVyL0Rpc2Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMiwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjYs
MTQgQEAKICNpZm5kZWYgRGlzYXNzZW1ibGVyX2gKICNkZWZpbmUgRGlzYXNzZW1ibGVyX2gKIAor
I2luY2x1ZGUgPGZ1bmN0aW9uYWw+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwogCiBlbnVt
IEluc3RydWN0aW9uU3Vic2V0SGludCB7IE1hY3JvQXNzZW1ibGVyU3Vic2V0LCBMTFZNU3Vic2V0
IH07CiAKQEAgLTQ3LDYgKzUwLDE0IEBAIGlubGluZSBib29sIHRyeVRvRGlzYXNzZW1ibGUoY29u
c3QgTWFjcm8KIC8vIHRoZSByYW5nZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzc2VzLgogdm9pZCBk
aXNhc3NlbWJsZShjb25zdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImLCBzaXplX3QsIGNvbnN0IGNo
YXIqIHByZWZpeCwgUHJpbnRTdHJlYW0mIG91dCwgSW5zdHJ1Y3Rpb25TdWJzZXRIaW50ID0gTWFj
cm9Bc3NlbWJsZXJTdWJzZXQpOwogCisvLyBBc3luY2hyb25vdXMgZGlzYXNzZW1ibHkuIFRoaXMg
aGFwcGVucyBvbiBhbm90aGVyIHRocmVhZCwgYW5kIGNhbGxzIHRoZSBwcm92aWRlZAorLy8gY2Fs
bGJhY2sgd2hlbiB0aGUgZGlzYXNzZW1ibHkgaXMgZG9uZS4KK3ZvaWQgZGlzYXNzZW1ibGVBc3lu
Y2hyb25vdXNseSgKKyAgICBjb25zdCBDU3RyaW5nJiBoZWFkZXIsIGNvbnN0IE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiYsIHNpemVfdCwgY29uc3QgY2hhciogcHJlZml4LAorICAgIEluc3RydWN0aW9u
U3Vic2V0SGludCA9IE1hY3JvQXNzZW1ibGVyU3Vic2V0KTsKKworSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCB3YWl0Rm9yQXN5bmNocm9ub3VzRGlzYXNzZW1ibHkoKTsKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCiAKICNlbmRpZiAvLyBEaXNhc3NlbWJsZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDb21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTENvbXBpbGUuY3BwCShyZXZpc2lvbiAxODE4NzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MDMsMTcgKzgw
MywyNyBAQCB2b2lkIGNvbXBpbGUoU3RhdGUmIHN0YXRlLCBTYWZlcG9pbnQ6OlJlCiAgICAgICAg
ICAgICBzdGF0ZSwgc3RhdGUuZ3JhcGgubV9jb2RlQmxvY2ssIHN0YXRlLmppdENvZGUuZ2V0KCks
IHN0YXRlLmdlbmVyYXRlZEZ1bmN0aW9uLAogICAgICAgICAgICAgcmVjb3JkTWFwLCBkaWRTZWVV
bndpbmRJbmZvKTsKICAgICAgICAgCi0gICAgICAgIGlmIChzaG91bGRTaG93RGlzYXNzZW1ibHko
KSkgeworICAgICAgICBpZiAoc2hvdWxkU2hvd0Rpc2Fzc2VtYmx5KCkgfHwgT3B0aW9uczo6YXN5
bmNEaXNhc3NlbWJseSgpKSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
c3RhdGUuaml0Q29kZS0+aGFuZGxlcygpLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICAgICAg
aWYgKHN0YXRlLmNvZGVTZWN0aW9uTmFtZXNbaV0gIT0gU0VDVElPTl9OQU1FKCJ0ZXh0IikpCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGhhbmRsZSA9IHN0YXRlLmppdENvZGUtPmhh
bmRsZXMoKVtpXS5nZXQoKTsKLSAgICAgICAgICAgICAgICBkYXRhTG9nKAorICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIENTdHJpbmcgaGVhZGVyID0gdG9DU3RyaW5nKAogICAgICAg
ICAgICAgICAgICAgICAiR2VuZXJhdGVkIExMVk0gY29kZSBhZnRlciBzdGFja21hcC1iYXNlZCBm
aXgtdXAgZm9yICIsCiAgICAgICAgICAgICAgICAgICAgIENvZGVCbG9ja1dpdGhKSVRUeXBlKHN0
YXRlLmdyYXBoLm1fY29kZUJsb2NrLCBKSVRDb2RlOjpGVExKSVQpLAogICAgICAgICAgICAgICAg
ICAgICAiIGluICIsIHN0YXRlLmdyYXBoLm1fcGxhbi5tb2RlLCAiICMiLCBpLCAiLCAiLAogICAg
ICAgICAgICAgICAgICAgICBzdGF0ZS5jb2RlU2VjdGlvbk5hbWVzW2ldLCAiOlxuIik7CisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKE9wdGlvbnM6OmFzeW5jRGlzYXNzZW1i
bHkoKSkgeworICAgICAgICAgICAgICAgICAgICBkaXNhc3NlbWJsZUFzeW5jaHJvbm91c2x5KAor
ICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyLCBNYWNyb0Fzc2VtYmxlckNvZGVSZWYoaGFu
ZGxlKSwgaGFuZGxlLT5zaXplSW5CeXRlcygpLCAiICAgICIsCisgICAgICAgICAgICAgICAgICAg
ICAgICBMTFZNU3Vic2V0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRhdGFMb2coaGVh
ZGVyKTsKICAgICAgICAgICAgICAgICBkaXNhc3NlbWJsZSgKICAgICAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGhhbmRsZS0+c3RhcnQoKSksIGhhbmRsZS0+c2l6ZUluQnl0
ZXMoKSwKICAgICAgICAgICAgICAgICAgICAgIiAgICAiLCBXVEY6OmRhdGFGaWxlKCksIExMVk1T
dWJzZXQpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lv
biAxODE4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzEsMTAgKzEzMSwxMCBAQCB2b2lkIGxpbmsoU3RhdGUmIHN0YXRlKQog
ICAgICAgICAgICAgaWYgKHN0YXRlLmNvZGVTZWN0aW9uTmFtZXNbaV0gIT0gU0VDVElPTl9OQU1F
KCJ0ZXh0IikpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBoYW5kbGUgPSBzdGF0ZS5qaXRDb2Rl
LT5oYW5kbGVzKClbaV0uZ2V0KCk7Ci0gICAgICAgICAgICAgICAgZGlzYXNzZW1ibGUoCi0gICAg
ICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cihoYW5kbGUtPnN0YXJ0KCkpLCBo
YW5kbGUtPnNpemVJbkJ5dGVzKCksCi0gICAgICAgICAgICAgICAgICAgICIgICAgICAiLCBvdXQs
IExMVk1TdWJzZXQpOworICAgICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogaGFuZGxl
ID0gc3RhdGUuaml0Q29kZS0+aGFuZGxlcygpW2ldLmdldCgpOworICAgICAgICAgICAgZGlzYXNz
ZW1ibGUoCisgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGhhbmRsZS0+c3Rh
cnQoKSksIGhhbmRsZS0+c2l6ZUluQnl0ZXMoKSwKKyAgICAgICAgICAgICAgICAiICAgICAgIiwg
b3V0LCBMTFZNU3Vic2V0KTsKICAgICAgICAgfQogICAgICAgICBjb21waWxhdGlvbi0+YWRkRGVz
Y3JpcHRpb24oUHJvZmlsZXI6Ok9yaWdpblN0YWNrKCksIG91dC50b0NTdHJpbmcoKSk7CiAgICAg
ICAgIG91dC5yZXNldCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNp
b24gMTgxODc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwg
MjAxMiwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTItMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDYgKzMxLDcgQEAK
IAogI2luY2x1ZGUgIkFyaXR5Q2hlY2tGYWlsUmV0dXJuVGh1bmtzLmgiCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrV2l0aEpJVFR5cGUuaCIKICNpbmNsdWRlICJE
RkdDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpJ
VElubGluZXMuaCIKQEAgLTY4MiwxNCArNjgzLDE4IEBAIENvbXBpbGF0aW9uUmVzdWx0IEpJVDo6
cHJpdmF0ZUNvbXBpbGUoSkkKICAgICBpZiAobV9jb2RlQmxvY2stPmNvZGVUeXBlKCkgPT0gRnVu
Y3Rpb25Db2RlKQogICAgICAgICB3aXRoQXJpdHlDaGVjayA9IHBhdGNoQnVmZmVyLmxvY2F0aW9u
T2YoYXJpdHlDaGVjayk7CiAKLSAgICBpZiAoT3B0aW9uczo6c2hvd0Rpc2Fzc2VtYmx5KCkpCisg
ICAgaWYgKE9wdGlvbnM6OnNob3dEaXNhc3NlbWJseSgpKSB7CiAgICAgICAgIG1fZGlzYXNzZW1i
bGVyLT5kdW1wKHBhdGNoQnVmZmVyKTsKKyAgICAgICAgcGF0Y2hCdWZmZXIuZGlkQWxyZWFkeURp
c2Fzc2VtYmxlKCk7CisgICAgfQogICAgIGlmIChtX2NvbXBpbGF0aW9uKSB7CiAgICAgICAgIG1f
ZGlzYXNzZW1ibGVyLT5yZXBvcnRUb1Byb2ZpbGVyKG1fY29tcGlsYXRpb24uZ2V0KCksIHBhdGNo
QnVmZmVyKTsKICAgICAgICAgbV92bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyLT5hZGRDb21waWxh
dGlvbihtX2NvbXBpbGF0aW9uKTsKICAgICB9CiAgICAgCi0gICAgQ29kZVJlZiByZXN1bHQgPSBw
YXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGVXaXRob3V0RGlzYXNzZW1ibHkoKTsKKyAgICBDb2RlUmVm
IHJlc3VsdCA9IEZJTkFMSVpFX0NPREUoCisgICAgICAgIHBhdGNoQnVmZmVyLAorICAgICAgICAo
IkJhc2VsaW5lIEpJVCBjb2RlIGZvciAlcyIsIHRvQ1N0cmluZyhDb2RlQmxvY2tXaXRoSklUVHlw
ZShtX2NvZGVCbG9jaywgSklUQ29kZTo6QmFzZWxpbmVKSVQpKS5kYXRhKCkpKTsKICAgICAKICAg
ICBtX3ZtLT5tYWNoaW5lQ29kZUJ5dGVzUGVyQnl0ZWNvZGVXb3JkRm9yQmFzZWxpbmVKSVQuYWRk
KAogICAgICAgICBzdGF0aWNfY2FzdDxkb3VibGU+KHJlc3VsdC5zaXplKCkpIC8KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDE4MTg3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDYgKzExNiw3IEBAIHR5cGVkZWYgY29uc3QgY2hhciogb3B0aW9uU3RyaW5nOwogICAg
IFwKICAgICAvKiBzaG93RGlzYXNzZW1ibHkgaW1wbGllcyBzaG93REZHRGlzYXNzZW1ibHkuICov
IFwKICAgICB2KGJvb2wsIHNob3dEaXNhc3NlbWJseSwgZmFsc2UpIFwKKyAgICB2KGJvb2wsIGFz
eW5jRGlzYXNzZW1ibHksIGZhbHNlKSBcCiAgICAgdihib29sLCBzaG93REZHRGlzYXNzZW1ibHks
IGZhbHNlKSBcCiAgICAgdihib29sLCBzaG93RlRMRGlzYXNzZW1ibHksIGZhbHNlKSBcCiAgICAg
dihib29sLCBzaG93QWxsREZHTm9kZXMsIGZhbHNlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9WTS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uY3BwCShyZXZpc2lvbiAxODE4NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs
dWRlICJDdXN0b21HZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJERkdMb25nTGl2ZWRTdGF0ZS5o
IgogI2luY2x1ZGUgIkRGR1dvcmtsaXN0LmgiCisjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAj
aW5jbHVkZSAiRXJyb3JJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkZUTFRodW5rcy5oIgogI2luY2x1
ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKQEAgLTMwNSw2ICszMDYsOCBAQCBWTTo6flZNKCkK
ICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCiAgICAgCisgICAgd2FpdEZvckFzeW5j
aHJvbm91c0Rpc2Fzc2VtYmx5KCk7CisgICAgCiAgICAgLy8gQ2xlYXIgdGhpcyBmaXJzdCB0byBl
bnN1cmUgdGhhdCBub2JvZHkgdHJpZXMgdG8gcmVtb3ZlIHRoZW1zZWx2ZXMgZnJvbSBpdC4KICAg
ICBtX3BlckJ5dGVjb2RlUHJvZmlsZXIgPSBudWxscHRyOwogCkluZGV4OiBTb3VyY2UvV1RGL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMTgx
ODg2KQorKysgU291cmNlL1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MiBAQAorMjAxNS0wMy0yMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAg
ICAgIEpTQyBzaG91bGQgaGF2ZSBhIGxvdy1jb3N0IGFzeW5jaHJvbm91cyBkaXNhc3NlbWJsZXIK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjk5Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgorCisgICAgICAgICogd3RmL1N0cmluZ1By
aW50U3RyZWFtLmg6CisKIDIwMTUtMDMtMjIgIEJlbmphbWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3
ZWJraXQub3JnPgogCiAgICAgICAgIENTUyBTZWxlY3RvcnM6IGZpeCBhdHRyaWJ1dGUgY2FzZS1p
bnNlbnNpdGl2ZSBtYXRjaGluZyBvZiBDb250YWluIGFuZCBMaXN0CkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9TdHJpbmdQcmludFN0cmVhbS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1N0
cmluZ1ByaW50U3RyZWFtLmgJKHJldmlzaW9uIDE4MTg3NSkKKysrIFNvdXJjZS9XVEYvd3RmL1N0
cmluZ1ByaW50U3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGlj
OgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmdQcmludFN0cmVhbSgpOwogICAgIFdURl9F
WFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5TdHJpbmdQcmludFN0cmVhbSgpOwogICAgIAotICAgIHZp
cnR1YWwgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgb3ZlcnJpZGUg
V1RGX0FUVFJJQlVURV9QUklOVEYoMiwgMCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZpcnR1
YWwgdm9pZCB2cHJpbnRmKGNvbnN0IGNoYXIqIGZvcm1hdCwgdmFfbGlzdCkgb3ZlcnJpZGUgV1RG
X0FUVFJJQlVURV9QUklOVEYoMiwgMCk7CiAgICAgCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIENT
dHJpbmcgdG9DU3RyaW5nKCk7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyB0b1N0cmlu
ZygpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>