<?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>128984</bug_id>
          
          <creation_ts>2014-02-18 11:21:31 -0800</creation_ts>
          <short_desc>FTL unwind parsing should handle ARM64</short_desc>
          <delta_ts>2014-02-18 15:00:05 -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>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>
          
          <blocked>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>982002</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-18 11:21:31 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982003</commentid>
    <comment_count>1</comment_count>
      <attachid>224526</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-18 11:22:29 -0800</bug_when>
    <thetext>Created attachment 224526
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982122</commentid>
    <comment_count>2</comment_count>
      <attachid>224554</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-18 14:45:33 -0800</bug_when>
    <thetext>Created attachment 224554
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982131</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-02-18 15:00:05 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/164326</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224526</attachid>
            <date>2014-02-18 11:22:29 -0800</date>
            <delta_ts>2014-02-18 14:45:33 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>14541</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0T2Zm
c2V0LmNwcAkocmV2aXNpb24gMTY0MjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExSZWdpc3RlckF0T2Zmc2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsNyArMzIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKIHZvaWQgUmVnaXN0ZXJBdE9mZnNldDo6ZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAgIG91dC5wcmludChncHIoKSwgIiBhdCAi
LCBvZmZzZXQoKSk7CisgICAgb3V0LnByaW50KHJlZygpLCAiIGF0ICIsIG9mZnNldCgpKTsKIH0K
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkZUTApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExSZWdpc3RlckF0T2Zmc2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0T2Zmc2V0LmgJKHJldmlzaW9uIDE2NDI2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zNiw0MCArMzYsMzkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogY2xh
c3MgUmVnaXN0ZXJBdE9mZnNldCB7CiBwdWJsaWM6CiAgICAgUmVnaXN0ZXJBdE9mZnNldCgpCi0g
ICAgICAgIDogbV9ncHIoSW52YWxpZEdQUlJlZykKLSAgICAgICAgLCBtX29mZnNldCgwKQorICAg
ICAgICA6IG1fb2Zmc2V0KDApCiAgICAgewogICAgIH0KICAgICAKLSAgICBSZWdpc3RlckF0T2Zm
c2V0KEdQUlJlZyBncHIsIHB0cmRpZmZfdCBvZmZzZXQpCi0gICAgICAgIDogbV9ncHIoZ3ByKQor
ICAgIFJlZ2lzdGVyQXRPZmZzZXQoUmVnIHJlZywgcHRyZGlmZl90IG9mZnNldCkKKyAgICAgICAg
OiBtX3JlZyhyZWcpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQogICAgIHsKICAgICB9CiAg
ICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBJbnZhbGlk
R1BSUmVnOyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9yZWc7IH0K
ICAgICAKLSAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KKyAgICBSZWcg
cmVnKCkgY29uc3QgeyByZXR1cm4gbV9yZWc7IH0KICAgICBwdHJkaWZmX3Qgb2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
UmVnaXN0ZXJBdE9mZnNldCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gZ3By
KCkgPT0gb3RoZXIuZ3ByKCkgJiYgb2Zmc2V0KCkgPT0gb3RoZXIub2Zmc2V0KCk7CisgICAgICAg
IHJldHVybiByZWcoKSA9PSBvdGhlci5yZWcoKSAmJiBvZmZzZXQoKSA9PSBvdGhlci5vZmZzZXQo
KTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUmVnaXN0ZXJBdE9mZnNl
dCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoZ3ByKCkgIT0gb3RoZXIuZ3ByKCkp
Ci0gICAgICAgICAgICByZXR1cm4gZ3ByKCkgPCBvdGhlci5ncHIoKTsKKyAgICAgICAgaWYgKHJl
ZygpICE9IG90aGVyLnJlZygpKQorICAgICAgICAgICAgcmV0dXJuIHJlZygpIDwgb3RoZXIucmVn
KCk7CiAgICAgICAgIHJldHVybiBvZmZzZXQoKSA8IG90aGVyLm9mZnNldCgpOwogICAgIH0KICAg
ICAKLSAgICBzdGF0aWMgR1BSUmVnIGdldEdQUihSZWdpc3RlckF0T2Zmc2V0KiB2YWx1ZSkgeyBy
ZXR1cm4gdmFsdWUtPmdwcigpOyB9CisgICAgc3RhdGljIFJlZyBnZXRSZWcoUmVnaXN0ZXJBdE9m
ZnNldCogdmFsdWUpIHsgcmV0dXJuIHZhbHVlLT5yZWcoKTsgfQogICAgIAogICAgIHZvaWQgZHVt
cChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBHUFJSZWcgbV9ncHI7
CisgICAgUmVnIG1fcmVnOwogICAgIHB0cmRpZmZfdCBtX29mZnNldDsKIH07CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVW53aW5kSW5mby5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExVbndpbmRJbmZvLmNwcAkocmV2aXNpb24gMTY0
MjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExVbndpbmRJbmZvLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNjUsNiArNjUsOCBAQCB2b2lkIFVud2luZEluZm86OnBhcnNlKHZvaWQqIHNl
Y3Rpb24sIHNpCiAgICAgUkVMRUFTRV9BU1NFUlQoIShlbmNvZGluZyAmIFVOV0lORF9JU19OT1Rf
RlVOQ1RJT05fU1RBUlQpKTsKICAgICBSRUxFQVNFX0FTU0VSVCghKGVuY29kaW5nICYgVU5XSU5E
X0hBU19MU0RBKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIShlbmNvZGluZyAmIFVOV0lORF9QRVJT
T05BTElUWV9NQVNLKSk7CisKKyNpZiBDUFUoWDg2XzY0KQogICAgIFJFTEVBU0VfQVNTRVJUKChl
bmNvZGluZyAmIFVOV0lORF9YODZfNjRfTU9ERV9NQVNLKSA9PSBVTldJTkRfWDg2XzY0X01PREVf
UkJQX0ZSQU1FKTsKICAgICAKICAgICBpbnQzMl90IG9mZnNldCA9IC0oKGVuY29kaW5nICYgVU5X
SU5EX1g4Nl82NF9SQlBfRlJBTUVfT0ZGU0VUKSA+PiAxNikgKiA4OwpAQCAtMTA3LDYgKzEwOSwx
OSBAQCB2b2lkIFVud2luZEluZm86OnBhcnNlKHZvaWQqIHNlY3Rpb24sIHNpCiAgICAgICAgIAog
ICAgICAgICBvZmZzZXQgKz0gODsKICAgICB9CisjZWxpZiBDUFUoQVJNNjQpCisgICAgUkVMRUFT
RV9BU1NFUlQoKGVuY29kaW5nICYgVU5XSU5EX0FSTTY0X01PREVfTUFTSykgPT0gVU5XSU5EX0FS
TTY0X01PREVfRlJBTUUpOworICAgIAorICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0
T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjpmcCwgMCkpOworICAgIAorICAgIGludDMyX3Qgb2Zmc2V0
ID0gMDsKKyAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfWDE5X1gyMF9QQUlS
KSB7CisgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVn
aXN0ZXJzOjp4MTksIG9mZnNldCAtPSA4KSk7CisgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjAsIG9mZnNldCAtPSA4KSk7CisgICAg
fQorI2Vsc2UKKyNlcnJvciAiVW5yZWNvZ25pemVkIGFyY2hpdGVjdHVyZSIgICAgCisjZW5kaWYK
ICAgICAKICAgICBzdGQ6OnNvcnQobV9yZWdpc3RlcnMuYmVnaW4oKSwgbV9yZWdpc3RlcnMuZW5k
KCkpOwogfQpAQCAtMTE2LDEyICsxMzEsMTIgQEAgdm9pZCBVbndpbmRJbmZvOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIAogICAgIG91dC5wcmludChsaXN0RHVtcChtX3JlZ2lzdGVycykpOwogfQog
Ci1SZWdpc3RlckF0T2Zmc2V0KiBVbndpbmRJbmZvOjpmaW5kKEdQUlJlZyBncHIpIGNvbnN0CitS
ZWdpc3RlckF0T2Zmc2V0KiBVbndpbmRJbmZvOjpmaW5kKFJlZyByZWcpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIHRyeUJpbmFyeVNlYXJjaDxSZWdpc3RlckF0T2Zmc2V0LCBHUFJSZWc+KG1fcmVnaXN0
ZXJzLCBtX3JlZ2lzdGVycy5zaXplKCksIGdwciwgUmVnaXN0ZXJBdE9mZnNldDo6Z2V0R1BSKTsK
KyAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPFJlZ2lzdGVyQXRPZmZzZXQsIFJlZz4obV9yZWdp
c3RlcnMsIG1fcmVnaXN0ZXJzLnNpemUoKSwgcmVnLCBSZWdpc3RlckF0T2Zmc2V0OjpnZXRSZWcp
OwogfQogCi11bnNpZ25lZCBVbndpbmRJbmZvOjppbmRleE9mKEdQUlJlZyBncHIpIGNvbnN0Cit1
bnNpZ25lZCBVbndpbmRJbmZvOjppbmRleE9mKFJlZyByZWcpIGNvbnN0CiB7CiAgICAgaWYgKFJl
Z2lzdGVyQXRPZmZzZXQqIHBvaW50ZXIgPSBmaW5kKGdwcikpCiAgICAgICAgIHJldHVybiBwb2lu
dGVyIC0gbV9yZWdpc3RlcnMuYmVnaW4oKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMVW53aW5kSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMVW53aW5kSW5mby5oCShyZXZpc2lvbiAxNjQyNjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFVud2luZEluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOCBA
QCBzdHJ1Y3QgVW53aW5kSW5mbyB7CiAgICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikg
Y29uc3Q7CiAgICAgCi0gICAgUmVnaXN0ZXJBdE9mZnNldCogZmluZChHUFJSZWcpIGNvbnN0Owot
ICAgIHVuc2lnbmVkIGluZGV4T2YoR1BSUmVnKSBjb25zdDsgLy8gUmV0dXJucyBVSU5UX01BWCBp
ZiBub3QgZm91bmQuCisgICAgUmVnaXN0ZXJBdE9mZnNldCogZmluZChSZWcpIGNvbnN0OworICAg
IHVuc2lnbmVkIGluZGV4T2YoUmVnKSBjb25zdDsgLy8gUmV0dXJucyBVSU5UX01BWCBpZiBub3Qg
Zm91bmQuCiAgICAgCiAgICAgVmVjdG9yPFJlZ2lzdGVyQXRPZmZzZXQ+IG1fcmVnaXN0ZXJzOwog
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVnLmgiCisKKyNpZiBFTkFCTEUoSklUKQorCisj
aW5jbHVkZSAiRlBSSW5mby5oIgorI2luY2x1ZGUgIkdQUkluZm8uaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3ZvaWQgUmVnOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgaWYg
KCEqdGhpcykKKyAgICAgICAgb3V0LnByaW50KCI8bm9uZT4iKTsKKyAgICBlbHNlIGlmIChpc0dQ
UigpKQorICAgICAgICBvdXQucHJpbnQoZ3ByKCkpOworICAgIGVsc2UKKyAgICAgICAgb3V0LnBy
aW50KGZwcigpKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJM
RShKSVQpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWcuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBSZWdfaAorI2RlZmluZSBSZWdfaAorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUg
Ik1hY3JvQXNzZW1ibGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisvLyBSZWcgaXMgYSBwb2x5
bW9ycGhpYyByZWdpc3RlciBjbGFzcy4gSXQgY2FuIHJlZmVyIHRvIGVpdGhlciBpbnRlZ2VyIG9y
IGZsb2F0IHJlZ2lzdGVycy4KKy8vIEhlcmUgYXJlIHNvbWUgdXNlIGNhc2VzOgorLy8KKy8vIEdQ
UlJlZyBncHI7CisvLyBSZWcgcmVnID0gZ3ByOworLy8gcmVnLmlzU2V0KCkgPT0gdHJ1ZQorLy8g
cmVnLmlzR1BSKCkgPT0gdHJ1ZQorLy8gcmVnLmlzRlBSKCkgPT0gZmFsc2UKKy8vCisvLyBmb3Ig
KFJlZyByZWcgPSBSZWc6OmZpcnN0KCk7IHJlZyA8PSBSZWc6Omxhc3QoKTsgcmVnID0gcmVnLm5l
eHQoKSkgeworLy8gICAgIGlmIChyZWcuaXNHUFIoKSkgeworLy8gICAgIH0gZWxzZSAvKiByZWcu
aXNGUFIoKSAqLyB7CisvLyAgICAgfQorLy8gfQorLy8KKy8vIFRoZSBhYm92ZSBsb29wIGNvdWxk
IGhhdmUgYWxzbyB1c2VkICEhcmVnIG9yIHJlZy5pc1NldCgpIGFzIGEgY29uZGl0aW9uLgorCitj
bGFzcyBSZWcgeworcHVibGljOgorICAgIFJlZygpCisgICAgICAgIDogbV9pbmRleChpbnZhbGlk
KCkpCisgICAgeworICAgIH0KKyAgICAKKyAgICBSZWcoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgcmVnKQorICAgICAgICA6IG1faW5kZXgoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgo
cmVnKSkKKyAgICB7CisgICAgfQorICAgIAorICAgIFJlZyhNYWNyb0Fzc2VtYmxlcjo6RlBSZWdp
c3RlcklEIHJlZykKKyAgICAgICAgOiBtX2luZGV4KE1hY3JvQXNzZW1ibGVyOjpyZWdpc3Rlcklu
ZGV4KHJlZykpCisgICAgeworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgUmVnIGZyb21JbmRleCh1
bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIFJlZyByZXN1bHQ7CisgICAgICAgIHJlc3Vs
dC5tX2luZGV4ID0gaW5kZXg7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAor
ICAgIHN0YXRpYyBSZWcgZmlyc3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgUmVnIHJlc3VsdDsK
KyAgICAgICAgcmVzdWx0Lm1faW5kZXggPSAwOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKyAgICAKKyAgICBzdGF0aWMgUmVnIGxhc3QoKSBjb25zdAorICAgIHsKKyAgICAgICAgUmVn
IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1faW5kZXggPSBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVy
T2ZSZWdpc3RlcnMoKSArIE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZkZQUmVnaXN0ZXJzKCkgLSAx
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBSZWcgbmV4dCgpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQoISEqdGhpcyk7CisgICAgICAgIGlmICgqdGhpcyA9
PSBsYXN0KCkpCisgICAgICAgICAgICByZXR1cm4gUmVnKCk7CisgICAgICAgIFJlZyByZXN1bHQ7
CisgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gbV9pbmRleCArIDE7CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4g
bV9pbmRleDsgfQorICAgIAorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiBtX2luZGV4
ICE9IGludmFsaWQoKTsgfQorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlz
U2V0KCk7IH0KKyAgICAKKyAgICBib29sIGlzR1BSKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2luZGV4IDwgTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0ZXJzKCk7CisgICAg
fQorICAgIAorICAgIGJvb2wgaXNGUFIoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICht
X2luZGV4IC0gTWFjcm9Bc3NlbWJsZXI6Om51bWJlck9mUmVnaXN0ZXJzKCkpIDwgTWFjcm9Bc3Nl
bWJsZXI6Om51bWJlck9mRlBSZWdpc3RlcnMoKTsKKyAgICB9CisgICAgCisgICAgTWFjcm9Bc3Nl
bWJsZXI6OlJlZ2lzdGVySUQgZ3ByKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0dQ
UigpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1hY3JvQXNzZW1ibGVyOjpSZWdpc3Rl
cklEPihNYWNyb0Fzc2VtYmxlcjo6Zmlyc3RSZWdpc3RlcigpICsgbV9pbmRleCk7CisgICAgfQor
ICAgIAorICAgIE1hY3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQgZnByKCkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVChpc0ZQUigpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE1h
Y3JvQXNzZW1ibGVyOjpGUFJlZ2lzdGVySUQ+KAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
OmZpcnN0RlBSZWdpc3RlcigpICsgKG1faW5kZXggLSBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZS
ZWdpc3RlcnMoKSkpOworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVn
JiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2luZGV4ID09IG90aGVyLm1f
aW5kZXg7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBSZWcmIG90aGVy
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW5kZXggIT0gb3RoZXIubV9pbmRleDsK
KyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUmVnJiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2luZGV4IDwgb3RoZXIubV9pbmRleDsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgUmVnJiBvdGhlcikgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2luZGV4ID4gb3RoZXIubV9pbmRleDsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBvcGVyYXRvcjw9KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9pbmRleCA8PSBvdGhlci5tX2luZGV4OworICAgIH0KKyAgICAKKyAgICBib29sIG9w
ZXJhdG9yPj0oY29uc3QgUmVnJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2lkbmV4ID49IG90aGVyLm1faW5kZXg7CisgICAgfQorICAgIAorICAgIHVuc2lnbmVkIGhhc2go
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW5kZXg7CisgICAgfQorICAgIAorICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OworCitwcml2YXRlOgorICAgIHN0YXRpYyB1
aW50OF90IGludmFsaWQoKSB7IHJldHVybiAweGZmOyB9CisgICAgCisgICAgdWludDhfdCBtX2lu
ZGV4OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQor
CisjZW5kaWYgLy8gUmVnX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWdp
c3RlclNldC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0
ZXJTZXQuaAkocmV2aXNpb24gMTY0MjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWdpc3RlclNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiRlBS
SW5mby5oIgogI2luY2x1ZGUgIkdQUkluZm8uaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5o
IgorI2luY2x1ZGUgIlJlZy5oIgogI2luY2x1ZGUgIlRlbXBSZWdpc3RlclNldC5oIgogI2luY2x1
ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KIApAQCAtNDgsMTIgKzQ5LDEzIEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgUmVnaXN0ZXJTZXQgYWxsR1BScygpOwogICAgIHN0YXRpYyBSZWdpc3RlclNldCBhbGxG
UFJzKCk7CiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbFJlZ2lzdGVycygpOwotCi0gICAgdm9p
ZCBzZXQoR1BSUmVnIHJlZywgYm9vbCB2YWx1ZSA9IHRydWUpCisgICAgCisgICAgdm9pZCBzZXQo
UmVnIHJlZywgYm9vbCB2YWx1ZSA9IHRydWUpCiAgICAgewotICAgICAgICBtX3ZlY3Rvci5zZXQo
TWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSwgdmFsdWUpOworICAgICAgICBBU1NF
UlQoISFyZWcpOworICAgICAgICBtX3ZlY3Rvci5zZXQocmVnLmluZGV4KCksIHZhbHVlKTsKICAg
ICB9Ci0gICAgCisKICAgICB2b2lkIHNldChKU1ZhbHVlUmVncyByZWdzKQogICAgIHsKICAgICAg
ICAgaWYgKHJlZ3MudGFnR1BSKCkgIT0gSW52YWxpZEdQUlJlZykKQEAgLTYxLDI1ICs2MywxOCBA
QCBwdWJsaWM6CiAgICAgICAgIHNldChyZWdzLnBheWxvYWRHUFIoKSk7CiAgICAgfQogICAgIAot
ICAgIHZvaWQgY2xlYXIoR1BSUmVnIHJlZykKKyAgICB2b2lkIGNsZWFyKFJlZyByZWcpCiAgICAg
eworICAgICAgICBBU1NFUlQoISFyZWcpOwogICAgICAgICBzZXQocmVnLCBmYWxzZSk7CiAgICAg
fQogICAgIAotICAgIGJvb2wgZ2V0KEdQUlJlZyByZWcpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9y
LmdldChNYWNyb0Fzc2VtYmxlcjo6cmVnaXN0ZXJJbmRleChyZWcpKTsgfQotICAgIAotICAgIHZv
aWQgc2V0KEZQUlJlZyByZWcsIGJvb2wgdmFsdWUgPSB0cnVlKQotICAgIHsKLSAgICAgICAgbV92
ZWN0b3Iuc2V0KE1hY3JvQXNzZW1ibGVyOjpyZWdpc3RlckluZGV4KHJlZyksIHZhbHVlKTsKLSAg
ICB9Ci0gICAgCi0gICAgdm9pZCBjbGVhcihGUFJSZWcgcmVnKQorICAgIGJvb2wgZ2V0KFJlZyBy
ZWcpIGNvbnN0CiAgICAgewotICAgICAgICBzZXQocmVnLCBmYWxzZSk7CisgICAgICAgIEFTU0VS
VCghIXJlZyk7CisgICAgICAgIHJldHVybiBtX3ZlY3Rvci5nZXQocmVnLmluZGV4KCkpOwogICAg
IH0KICAgICAKLSAgICBib29sIGdldChGUFJSZWcgcmVnKSBjb25zdCB7IHJldHVybiBtX3ZlY3Rv
ci5nZXQoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSk7IH0KLSAgICAKICAgICB2
b2lkIG1lcmdlKGNvbnN0IFJlZ2lzdGVyU2V0JiBvdGhlcikgeyBtX3ZlY3Rvci5tZXJnZShvdGhl
ci5tX3ZlY3Rvcik7IH0KICAgICB2b2lkIGZpbHRlcihjb25zdCBSZWdpc3RlclNldCYgb3RoZXIp
IHsgbV92ZWN0b3IuZmlsdGVyKG90aGVyLm1fdmVjdG9yKTsgfQogICAgIHZvaWQgZXhjbHVkZShj
b25zdCBSZWdpc3RlclNldCYgb3RoZXIpIHsgbV92ZWN0b3IuZXhjbHVkZShvdGhlci5tX3ZlY3Rv
cik7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224554</attachid>
            <date>2014-02-18 14:45:33 -0800</date>
            <delta_ts>2014-02-18 14:56:30 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>29713</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTY0MzIxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDE0LTAyLTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
RlRMIHVud2luZCBwYXJzaW5nIHNob3VsZCBoYW5kbGUgQVJNNjQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODk4NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBtYWtlcyB1bndpbmQg
cGFyc2luZyBoYW5kbGUgQVJNNjQgYW5kIGl0IG1ha2VzIGFsbCBjbGllbnRzIG9mIHVud2luZCBp
bmZvIGNhcGFibGUgb2YKKyAgICAgICAgZGVhbGluZyB3aXRoIHRoYXQgYXJjaGl0ZWN0dXJlLgor
ICAgICAgICAKKyAgICAgICAgVGhlIGJpZyBkaWZmZXJlbmNlIGlzIHRoYXQgQVJNNjQgaGFzIGNh
bGxlZS1zYXZlIGRvdWJsZSByZWdpc3RlcnMuIFRoaXMgaXMgY29uY2VwdHVhbGx5IGVhc3kKKyAg
ICAgICAgdG8gaGFuZGxlLCBidXQgb3V0IGNvZGUgZm9yIGRlYWxpbmcgd2l0aCBjYWxsZWUtc2F2
ZXMgc3Bva2Ugb2YgIkdQUlJlZyIuIFdlJ3ZlIGJlZW4gaW4gdGhpcworICAgICAgICBzaXR1YXRp
b24gYmVmb3JlOiBjb2RlIHRoYXQgbmVlZHMgdG8gZGVhbCB3aXRoIGVpdGhlciBhIEdQUlJlZyBv
ciBhIEZQUlJlZy4gSW4gdGhlIHBhc3Qgd2UnZAorICAgICAgICBoYWNrZWQgYXJvdW5kIHRoZSBw
cm9ibGVtLCBidXQgdGhpcyB0aW1lIEkgZGVjaWRlZCB0byBkbyBhIGZ1bGwgZnJvbnRhbCBhc3Nh
dWx0LiBUaGlzIHBhdGNoCisgICAgICAgIGFkZHMgYSBSZWcgY2xhc3MsIHdoaWNoIGlzIGEgYm94
IGZvciBlaXRoZXIgR1BSUmVnIG9yIEZQUlJlZyBhbG9uZyB3aXRoIHRvb2xzIGZvciBpdGVyYXRp
bmcKKyAgICAgICAgb3ZlciBhbGwgcG9zc2libGUgcmVnaXN0ZXJzLiBUaGVuLCBJIHRocmVhZGVk
IHRoaXMgdGhyb3VnaCBTYXZlUmVzdG9yZSwgUmVnaXN0ZXJTZXQsCisgICAgICAgIFJlZ2lzdGVy
QXRPZmZzZXQsIGFuZCBVbndpbmRJbmZvLiBXaXRoIHRoZSBoZWxwIG9mIFJlZywgaXQgd2FzIGVh
c3kgdG8gcmVmYWN0b3IgdGhlIGNvZGUgdG8KKyAgICAgICAgaGFuZGxlIEZQUnMgaW4gYWRkaXRp
b24gdG8gR1BScy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Y29tcGlsZVN0dWIpOgorICAgICAgICAqIGZ0bC9GVExSZWdpc3RlckF0
T2Zmc2V0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpSZWdpc3RlckF0T2Zmc2V0OjpkdW1wKToK
KyAgICAgICAgKiBmdGwvRlRMUmVnaXN0ZXJBdE9mZnNldC5oOgorICAgICAgICAoSlNDOjpGVEw6
OlJlZ2lzdGVyQXRPZmZzZXQ6OlJlZ2lzdGVyQXRPZmZzZXQpOgorICAgICAgICAoSlNDOjpGVEw6
OlJlZ2lzdGVyQXRPZmZzZXQ6Om9wZXJhdG9yISk6CisgICAgICAgIChKU0M6OkZUTDo6UmVnaXN0
ZXJBdE9mZnNldDo6cmVnKToKKyAgICAgICAgKEpTQzo6RlRMOjpSZWdpc3RlckF0T2Zmc2V0Ojpv
cGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6RlRMOjpSZWdpc3RlckF0T2Zmc2V0OjpvcGVyYXRv
cjwpOgorICAgICAgICAoSlNDOjpGVEw6OlJlZ2lzdGVyQXRPZmZzZXQ6OmdldFJlZyk6CisgICAg
ICAgICogZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpvZmZzZXRP
ZlJlZyk6CisgICAgICAgICogZnRsL0ZUTFNhdmVSZXN0b3JlLmg6CisgICAgICAgICogZnRsL0ZU
TFVud2luZEluZm8uY3BwOgorICAgICAgICAoSlNDOjpGVEw6OlVud2luZEluZm86OnBhcnNlKToK
KyAgICAgICAgKEpTQzo6RlRMOjpVbndpbmRJbmZvOjpmaW5kKToKKyAgICAgICAgKEpTQzo6RlRM
OjpVbndpbmRJbmZvOjppbmRleE9mKToKKyAgICAgICAgKiBmdGwvRlRMVW53aW5kSW5mby5oOgor
ICAgICAgICAqIGppdC9SZWcuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UmVnOjpkdW1wKToK
KyAgICAgICAgKiBqaXQvUmVnLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpSZWc6OlJlZyk6Cisg
ICAgICAgIChKU0M6OlJlZzo6ZnJvbUluZGV4KToKKyAgICAgICAgKEpTQzo6UmVnOjpmaXJzdCk6
CisgICAgICAgIChKU0M6OlJlZzo6bGFzdCk6CisgICAgICAgIChKU0M6OlJlZzo6bmV4dCk6Cisg
ICAgICAgIChKU0M6OlJlZzo6aW5kZXgpOgorICAgICAgICAoSlNDOjpSZWc6OmlzU2V0KToKKyAg
ICAgICAgKEpTQzo6UmVnOjpvcGVyYXRvciEpOgorICAgICAgICAoSlNDOjpSZWc6OmlzR1BSKToK
KyAgICAgICAgKEpTQzo6UmVnOjppc0ZQUik6CisgICAgICAgIChKU0M6OlJlZzo6Z3ByKToKKyAg
ICAgICAgKEpTQzo6UmVnOjpmcHIpOgorICAgICAgICAoSlNDOjpSZWc6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoSlNDOjpSZWc6Om9wZXJhdG9yIT0pOgorICAgICAgICAoSlNDOjpSZWc6Om9wZXJh
dG9yPCk6CisgICAgICAgIChKU0M6OlJlZzo6b3BlcmF0b3I+KToKKyAgICAgICAgKEpTQzo6UmVn
OjpvcGVyYXRvcjw9KToKKyAgICAgICAgKEpTQzo6UmVnOjpvcGVyYXRvcj49KToKKyAgICAgICAg
KEpTQzo6UmVnOjpoYXNoKToKKyAgICAgICAgKEpTQzo6UmVnOjppbnZhbGlkKToKKyAgICAgICAg
KiBqaXQvUmVnaXN0ZXJTZXQuaDoKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXJTZXQ6OnNldCk6Cisg
ICAgICAgIChKU0M6OlJlZ2lzdGVyU2V0OjpjbGVhcik6CisgICAgICAgIChKU0M6OlJlZ2lzdGVy
U2V0OjpnZXQpOgorCiAyMDE0LTAyLTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CiAKICAgICAgICAgTW9yZSBBUk0gRlRMIGdsdWUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDE2NDI2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjk1LDYgKzI5NSw3IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaml0L0pJVFN0dWJzLmNwcAogICAgIGppdC9KSVRUaHVu
a3MuY3BwCiAgICAgaml0L0pJVFRvREZHRGVmZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmNwcAor
ICAgIGppdC9SZWcuY3BwCiAgICAgaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVy
YXRvci5jcHAKICAgICBqaXQvUmVnaXN0ZXJTZXQuY3BwCiAgICAgaml0L1JlcGF0Y2guY3BwCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24g
MTY0MjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTc4Niw4ICs3ODYsMTAgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRUb0RGR0RlZmVycmVkQ29tcGlsYXRp
b25DYWxsYmFjay5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFdyaXRlQmFycmll
ci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmggXAotICAg
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2Vu
ZXJhdG9yLmggXAotICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJQcmVzZXJ2
YXRpb25XcmFwcGVyR2VuZXJhdG9yLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9S
ZWcuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZWcuY3BwIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oIFwK
KwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdl
bmVyYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVnaXN0ZXJTZXQuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZ2lzdGVyU2V0LmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNjQyNjcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NDAsNiArNTQwLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGppdFxKSVRTdHVicy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxqaXRcSklU
VGh1bmtzLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxKSVRUb0RGR0Rl
ZmVycmVkQ29tcGlsYXRpb25DYWxsYmFjay5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxqaXRcUmVnLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGppdFxSZWdp
c3RlclByZXNlcnZhdGlvbldyYXBwZXJHZW5lcmF0b3IuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caml0XFJlcGF0Y2guY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5caml0XFRodW5rR2VuZXJhdG9ycy5jcHAiIC8+CkBAIC0xMTUzLDYgKzExNTQsNyBAQAogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEpJVFdyaXRlQmFycmllci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5caml0XEpTSW50ZXJmYWNlSklULmgiIC8+CiAgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxqaXRcUmVnaXN0ZXJTZXQuY3BwIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caml0XFJlZy5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caml0
XFJlZ2lzdGVyUHJlc2VydmF0aW9uV3JhcHBlckdlbmVyYXRvci5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5caml0XFJlZ2lzdGVyU2V0LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxqaXRcUmVwYXRjaC5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDE2NDI2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNzMsNiAr
MzczLDggQEAKIAkJMEZBNTgxQkExNTBFOTUyQzAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE1ODFCNzE1
MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmNwcCAqLzsgfTsKIAkJMEZBNTgxQkIxNTBF
OTUzMDAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNTgxQjgxNTBFOTUyQTAwQjlBMkQ5IC8qIERGR05vZGVG
bGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGQTU4MUJDMTUwRTk1MzAwMEI5QTJEOSAvKiBERkdOb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBNTgxQjkxNTBFOTUyQTAwQjlBMkQ5
IC8qIERGR05vZGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEZBN0E4RUIxOEI0MTNDODAwNTIzNzFEIC8qIFJlZy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkE3QThFOTE4QjQxM0M4MDA1
MjM3MUQgLyogUmVnLmNwcCAqLzsgfTsKKwkJMEZBN0E4RUMxOEI0MTNDODAwNTIzNzFEIC8qIFJl
Zy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZBN0E4
RUExOEI0MTNDODAwNTIzNzFEIC8qIFJlZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGQUY3RUZEMTY1QkE5MUIwMDBDODQ1NSAvKiBKSVREaXNh
c3NlbWJsZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEZBRjdFRkExNjVCQTkxOTAwMEM4NDU1IC8qIEpJVERpc2Fzc2VtYmxlci5jcHAgKi87IH07
CiAJCTBGQUY3RUZFMTY1QkE5MUYwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQUY3RUZCMTY1QkE5MTkw
MDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkIxMDU4NTE2NzU0ODBGMDBGOEFCNkUgLyogRXhpdEtp
bmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZC
MTA1ODIxNjc1NDgwQzAwRjhBQjZFIC8qIEV4aXRLaW5kLmNwcCAqLzsgfTsKQEAgLTE4NDAsNiAr
MTg0Miw4IEBACiAJCTBGQTU4MUI3MTUwRTk1MkEwMEI5QTJEOSAvKiBERkdOb2RlRmxhZ3MuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHTm9kZUZsYWdzLmNwcDsg
cGF0aCA9IGRmZy9ERkdOb2RlRmxhZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkE1ODFCODE1MEU5NTJBMDBCOUEyRDkgLyogREZHTm9kZUZsYWdzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR05vZGVGbGFncy5oOyBwYXRoID0gZGZnL0RGR05vZGVG
bGFncy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkE1ODFCOTE1MEU5NTJBMDBC
OUEyRDkgLyogREZHTm9kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
REZHTm9kZVR5cGUuaDsgcGF0aCA9IGRmZy9ERkdOb2RlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRkE3QThFOTE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGQTdBOEVBMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGQUY3RUZBMTY1QkE5MTkwMDBDODQ1NSAvKiBKSVREaXNhc3NlbWJsZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklURGlzYXNzZW1ibGVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZBRjdFRkIxNjVCQTkxOTAwMEM4NDU1IC8qIEpJ
VERpc2Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVREaXNh
c3NlbWJsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCMTA1ODIxNjc1NDgw
QzAwRjhBQjZFIC8qIEV4aXRLaW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEV4aXRLaW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMzODEs
NiArMzM4NSw4IEBACiAJCQkJMEZDNzEyRTExN0NEODc4RjAwOENDOTNDIC8qIEpJVFRvREZHRGVm
ZXJyZWRDb21waWxhdGlvbkNhbGxiYWNrLmggKi8sCiAJCQkJQTc2RjU0QTIxM0IyOEFBQjAwRUYy
QkNFIC8qIEpJVFdyaXRlQmFycmllci5oICovLAogCQkJCUE3NkM1MTc0MTE4Mjc0OEQwMDcxNUIw
NSAvKiBKU0ludGVyZmFjZUpJVC5oICovLAorCQkJCTBGQTdBOEU5MThCNDEzQzgwMDUyMzcxRCAv
KiBSZWcuY3BwICovLAorCQkJCTBGQTdBOEVBMThCNDEzQzgwMDUyMzcxRCAvKiBSZWcuaCAqLywK
IAkJCQkwRjZCMUNCQjE4NjEyNDZBMDA4NDVEOTcgLyogUmVnaXN0ZXJQcmVzZXJ2YXRpb25XcmFw
cGVyR2VuZXJhdG9yLmNwcCAqLywKIAkJCQkwRjZCMUNCQzE4NjEyNDZBMDA4NDVEOTcgLyogUmVn
aXN0ZXJQcmVzZXJ2YXRpb25XcmFwcGVyR2VuZXJhdG9yLmggKi8sCiAJCQkJMEZDMzE0MTQxODE0
NkQ3MDAwMDMzMjMyIC8qIFJlZ2lzdGVyU2V0LmNwcCAqLywKQEAgLTU0NjEsNiArNTQ2Nyw3IEBA
CiAJCQkJMEZCN0YzOUQxNUVEOEU0NjAwRjE2N0IyIC8qIFJlamVjdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyNEU1NTExN0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guaCBpbiBIZWFkZXJzICov
LAogCQkJCTg2RDNCM0M0MTAxNTlEN0YwMDI4NjVFNyAvKiBSZXBhdGNoQnVmZmVyLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRkE3QThFQzE4QjQxM0M4MDA1MjM3MUQgLyogUmVnLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkyQUM5MjJCQzE4QTE2MTgyMDAzQ0UwRkIgLyogRlRMRFdBUkZEZWJ1Z0xpbmVJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTEzRTVCODE4NUI4QkQzMDA3RTk1QUQgLyogSW5q
ZWN0ZWRTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg2OUVCQ0I3MEU4QzZENEEwMDg3MjJD
QyAvKiBSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywKQEAgLTYxODUsNiArNjE5Miw3IEBACiAJ
CQkJQTUzMjQzODkxODU2ODMzNTAwMkVENjkyIC8qIEluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRj
aGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEwQjE3MDUxM0RCMDBCQjcyMkMgLyog
RlRMQ29tcGlsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJEMzE3MTc4RTFDMDA2OTBD
N0YgLyogRlRMRXhpdEFyZ3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGQTdBOEVCMThC
NDEzQzgwMDUyMzcxRCAvKiBSZWcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyMzVCRDUxNzE3
OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRBcmd1bWVudEZvck9wZXJhbmQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyMzVCRDgxNzE3OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRUaHVua0dlbmVyYXRv
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJEQTE3MTc4RTFDMDA2OTBDN0YgLyogRlRM
RXhpdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTY0MjY3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNzQsMTcgKzI3NCwxNyBAQCBzdGF0aWMgdm9pZCBjb21waWxlU3R1YigKICAg
ICAKICAgICAvLyBBdCB0aGlzIHBvaW50IHJlZ1QxIHBvaW50cyB0byB3aGVyZSB3ZSB3b3VsZCBz
YXZlIG91ciByZWdpc3RlcnMuIFNhdmUgdGhlbSBoZXJlLgogICAgIHB0cmRpZmZfdCBjdXJyZW50
T2Zmc2V0ID0gMDsKLSAgICBmb3IgKEdQUlJlZyBncHIgPSBBc3NlbWJseUhlbHBlcnM6OmZpcnN0
UmVnaXN0ZXIoKTsgZ3ByIDw9IEFzc2VtYmx5SGVscGVyczo6bGFzdFJlZ2lzdGVyKCk7IGdwciA9
IHN0YXRpY19jYXN0PEdQUlJlZz4oZ3ByICsgMSkpIHsKLSAgICAgICAgaWYgKCF0b1NhdmUuZ2V0
KGdwcikpCisgICAgZm9yIChSZWcgcmVnID0gUmVnOjpmaXJzdCgpOyByZWcgPD0gUmVnOjpsYXN0
KCk7IHJlZyA9IHJlZy5uZXh0KCkpIHsKKyAgICAgICAgaWYgKCF0b1NhdmUuZ2V0KHJlZykpCiAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgY3VycmVudE9mZnNldCArPSBzaXplb2YoUmVn
aXN0ZXIpOwotICAgICAgICB1bnNpZ25lZCB1bndpbmRJbmRleCA9IGppdENvZGUtPnVud2luZElu
Zm8uaW5kZXhPZihncHIpOworICAgICAgICB1bnNpZ25lZCB1bndpbmRJbmRleCA9IGppdENvZGUt
PnVud2luZEluZm8uaW5kZXhPZihyZWcpOwogICAgICAgICBpZiAodW53aW5kSW5kZXggPT0gVUlO
VF9NQVgpIHsKICAgICAgICAgICAgIC8vIFRoZSBGVEwgY29tcGlsYXRpb24gZGlkbid0IHByZXNl
cnZlIHRoaXMgcmVnaXN0ZXIuIFRoaXMgbWVhbnMgdGhhdCBpdCBhbHNvCiAgICAgICAgICAgICAv
LyBkaWRuJ3QgdXNlIHRoZSByZWdpc3Rlci4gU28gaXRzIHZhbHVlIGF0IHRoZSBiZWdpbm5pbmcg
b2YgT1NSIGV4aXQgc2hvdWxkIGJlCiAgICAgICAgICAgICAvLyBwcmVzZXJ2ZWQgYnkgdGhlIHRo
dW5rLiBMdWNraWx5LCB3ZSBzYXZlZCBhbGwgcmVnaXN0ZXJzIGludG8gdGhlIHJlZ2lzdGVyCiAg
ICAgICAgICAgICAvLyBzY3JhdGNoIGJ1ZmZlciwgc28gd2UgY2FuIHJlc3RvcmUgdGhlbSBmcm9t
IHRoZXJlLgotICAgICAgICAgICAgaml0LmxvYWQ2NChyZWdpc3RlclNjcmF0Y2ggKyBvZmZzZXRP
ZkdQUihncHIpLCBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQubG9hZDY0KHJlZ2lz
dGVyU2NyYXRjaCArIG9mZnNldE9mUmVnKHJlZyksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoZSBGVEwgY29tcGlsYXRpb24gcHJlc2VydmVkIHRo
ZSByZWdpc3Rlci4gSXRzIG5ldyB2YWx1ZSBpcyB0aGVyZWZvcmUKICAgICAgICAgICAgIC8vIGly
cmVsZXZhbnQsIGJ1dCB3ZSBjYW4gZ2V0IHRoZSB2YWx1ZSB0aGF0IHdhcyBwcmVzZXJ2ZWQgYnkg
dXNpbmcgdGhlIHVud2luZApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExSZWdp
c3RlckF0T2Zmc2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwCShyZXZpc2lvbiAxNjQyNjcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTFJlZ2lzdGVyQXRPZmZzZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0z
Miw3ICszMiw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAogdm9pZCBSZWdp
c3RlckF0T2Zmc2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgb3V0LnBy
aW50KGdwcigpLCAiIGF0ICIsIG9mZnNldCgpKTsKKyAgICBvdXQucHJpbnQocmVnKCksICIgYXQg
Iiwgb2Zmc2V0KCkpOwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6RlRMCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlZ2lzdGVyQXRPZmZzZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFJlZ2lzdGVyQXRPZmZzZXQuaAkocmV2aXNp
b24gMTY0MjY3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExSZWdpc3RlckF0T2Zm
c2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDcgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShGVExfSklU
KQogCi0jaW5jbHVkZSAiR1BSSW5mby5oIgorI2luY2x1ZGUgIlJlZy5oIgogI2luY2x1ZGUgPHd0
Zi9QcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CkBAIC0z
Niw0MCArMzYsMzkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogY2xhc3MgUmVn
aXN0ZXJBdE9mZnNldCB7CiBwdWJsaWM6CiAgICAgUmVnaXN0ZXJBdE9mZnNldCgpCi0gICAgICAg
IDogbV9ncHIoSW52YWxpZEdQUlJlZykKLSAgICAgICAgLCBtX29mZnNldCgwKQorICAgICAgICA6
IG1fb2Zmc2V0KDApCiAgICAgewogICAgIH0KICAgICAKLSAgICBSZWdpc3RlckF0T2Zmc2V0KEdQ
UlJlZyBncHIsIHB0cmRpZmZfdCBvZmZzZXQpCi0gICAgICAgIDogbV9ncHIoZ3ByKQorICAgIFJl
Z2lzdGVyQXRPZmZzZXQoUmVnIHJlZywgcHRyZGlmZl90IG9mZnNldCkKKyAgICAgICAgOiBtX3Jl
ZyhyZWcpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQogICAgIHsKICAgICB9CiAgICAgCi0g
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiBtX2dwciA9PSBJbnZhbGlkR1BSUmVn
OyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9yZWc7IH0KICAgICAK
LSAgICBHUFJSZWcgZ3ByKCkgY29uc3QgeyByZXR1cm4gbV9ncHI7IH0KKyAgICBSZWcgcmVnKCkg
Y29uc3QgeyByZXR1cm4gbV9yZWc7IH0KICAgICBwdHJkaWZmX3Qgb2Zmc2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVnaXN0
ZXJBdE9mZnNldCYgb3RoZXIpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gZ3ByKCkgPT0g
b3RoZXIuZ3ByKCkgJiYgb2Zmc2V0KCkgPT0gb3RoZXIub2Zmc2V0KCk7CisgICAgICAgIHJldHVy
biByZWcoKSA9PSBvdGhlci5yZWcoKSAmJiBvZmZzZXQoKSA9PSBvdGhlci5vZmZzZXQoKTsKICAg
ICB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgUmVnaXN0ZXJBdE9mZnNldCYgb3Ro
ZXIpIGNvbnN0CiAgICAgewotICAgICAgICBpZiAoZ3ByKCkgIT0gb3RoZXIuZ3ByKCkpCi0gICAg
ICAgICAgICByZXR1cm4gZ3ByKCkgPCBvdGhlci5ncHIoKTsKKyAgICAgICAgaWYgKHJlZygpICE9
IG90aGVyLnJlZygpKQorICAgICAgICAgICAgcmV0dXJuIHJlZygpIDwgb3RoZXIucmVnKCk7CiAg
ICAgICAgIHJldHVybiBvZmZzZXQoKSA8IG90aGVyLm9mZnNldCgpOwogICAgIH0KICAgICAKLSAg
ICBzdGF0aWMgR1BSUmVnIGdldEdQUihSZWdpc3RlckF0T2Zmc2V0KiB2YWx1ZSkgeyByZXR1cm4g
dmFsdWUtPmdwcigpOyB9CisgICAgc3RhdGljIFJlZyBnZXRSZWcoUmVnaXN0ZXJBdE9mZnNldCog
dmFsdWUpIHsgcmV0dXJuIHZhbHVlLT5yZWcoKTsgfQogICAgIAogICAgIHZvaWQgZHVtcChQcmlu
dFN0cmVhbSYgb3V0KSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBHUFJSZWcgbV9ncHI7CisgICAg
UmVnIG1fcmVnOwogICAgIHB0cmRpZmZfdCBtX29mZnNldDsKIH07CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU2F2ZVJlc3RvcmUuY3BwCShyZXZpc2lvbiAxNjQyNjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsNiArNjIsMTMgQEAgc2l6ZV90IG9mZnNldE9mRlBSKEZQUlJlZyByZWcp
CiAgICAgcmV0dXJuIGJ5dGVzRm9yR1BScygpICsgTWFjcm9Bc3NlbWJsZXI6OmZwUmVnaXN0ZXJJ
bmRleChyZWcpICogc2l6ZW9mKGRvdWJsZSk7CiB9CiAKK3NpemVfdCBvZmZzZXRPZlJlZyhSZWcg
cmVnKQoreworICAgIGlmIChyZWcuaXNHUFIoKSkKKyAgICAgICAgcmV0dXJuIG9mZnNldE9mR1BS
KHJlZy5ncHIoKSk7CisgICAgcmV0dXJuIG9mZnNldE9mRlBSKHJlZy5mcHIoKSk7Cit9CisKIHZv
aWQgc2F2ZUFsbFJlZ2lzdGVycyhNYWNyb0Fzc2VtYmxlciYgaml0LCBjaGFyKiBzY3JhdGNoTWVt
b3J5KQogewogICAgIC8vIEdldCB0aGUgZmlyc3QgcmVnaXN0ZXIgb3V0IG9mIHRoZSB3YXksIHNv
IHRoYXQgd2UgY2FuIHVzZSBpdCBhcyBhIHBvaW50ZXIuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExTYXZlUmVzdG9yZS5oCShyZXZpc2lvbiAxNjQyNjcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFNhdmVSZXN0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKIAogI2luY2x1ZGUgIkZQUkluZm8uaCIKICNpbmNsdWRlICJHUFJJbmZvLmgi
CisjaW5jbHVkZSAiUmVnLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00MSw2ICs0Miw3IEBA
IG5hbWVzcGFjZSBGVEwgewogCiBzaXplX3QgcmVxdWlyZWRTY3JhdGNoTWVtb3J5U2l6ZUluQnl0
ZXMoKTsKIAorc2l6ZV90IG9mZnNldE9mUmVnKFJlZyk7CiBzaXplX3Qgb2Zmc2V0T2ZHUFIoR1BS
UmVnKTsKIHNpemVfdCBvZmZzZXRPZkZQUihGUFJSZWcpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTFVud2luZEluZm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMVW53aW5kSW5mby5jcHAJKHJldmlzaW9uIDE2NDI2NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVW53aW5kSW5mby5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTY1LDYgKzY1LDggQEAgdm9pZCBVbndpbmRJbmZvOjpwYXJzZSh2b2lkKiBzZWN0aW9uLCBzaQog
ICAgIFJFTEVBU0VfQVNTRVJUKCEoZW5jb2RpbmcgJiBVTldJTkRfSVNfTk9UX0ZVTkNUSU9OX1NU
QVJUKSk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIShlbmNvZGluZyAmIFVOV0lORF9IQVNfTFNEQSkp
OwogICAgIFJFTEVBU0VfQVNTRVJUKCEoZW5jb2RpbmcgJiBVTldJTkRfUEVSU09OQUxJVFlfTUFT
SykpOworCisjaWYgQ1BVKFg4Nl82NCkKICAgICBSRUxFQVNFX0FTU0VSVCgoZW5jb2RpbmcgJiBV
TldJTkRfWDg2XzY0X01PREVfTUFTSykgPT0gVU5XSU5EX1g4Nl82NF9NT0RFX1JCUF9GUkFNRSk7
CiAgICAgCiAgICAgaW50MzJfdCBvZmZzZXQgPSAtKChlbmNvZGluZyAmIFVOV0lORF9YODZfNjRf
UkJQX0ZSQU1FX09GRlNFVCkgPj4gMTYpICogODsKQEAgLTEwNyw2ICsxMDksNTEgQEAgdm9pZCBV
bndpbmRJbmZvOjpwYXJzZSh2b2lkKiBzZWN0aW9uLCBzaQogICAgICAgICAKICAgICAgICAgb2Zm
c2V0ICs9IDg7CiAgICAgfQorI2VsaWYgQ1BVKEFSTTY0KQorICAgIFJFTEVBU0VfQVNTRVJUKChl
bmNvZGluZyAmIFVOV0lORF9BUk02NF9NT0RFX01BU0spID09IFVOV0lORF9BUk02NF9NT0RFX0ZS
QU1FKTsKKyAgICAKKyAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02
NFJlZ2lzdGVyczo6ZnAsIDApKTsKKyAgICAKKyAgICBpbnQzMl90IG9mZnNldCA9IDA7CisgICAg
aWYgKGVuY29kaW5nICYgVU5XSU5EX0FSTTY0X0ZSQU1FX1gxOV9YMjBfUEFJUikgeworICAgICAg
ICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDE5
LCBvZmZzZXQgLT0gOCkpOworICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9m
ZnNldChBUk02NFJlZ2lzdGVyczo6eDIwLCBvZmZzZXQgLT0gOCkpOworICAgIH0KKyAgICBpZiAo
ZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVfWDIxX1gyMl9QQUlSKSB7CisgICAgICAgIG1f
cmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjEsIG9m
ZnNldCAtPSA4KSk7CisgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0
KEFSTTY0UmVnaXN0ZXJzOjp4MjIsIG9mZnNldCAtPSA4KSk7CisgICAgfQorICAgIGlmIChlbmNv
ZGluZyAmIFVOV0lORF9BUk02NF9GUkFNRV9YMjNfWDI0X1BBSVIpIHsKKyAgICAgICAgbV9yZWdp
c3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyMywgb2Zmc2V0
IC09IDgpKTsKKyAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJN
NjRSZWdpc3RlcnM6OngyNCwgb2Zmc2V0IC09IDgpKTsKKyAgICB9CisgICAgaWYgKGVuY29kaW5n
ICYgVU5XSU5EX0FSTTY0X0ZSQU1FX1gyNV9YMjZfUEFJUikgeworICAgICAgICBtX3JlZ2lzdGVy
cy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI1LCBvZmZzZXQgLT0g
OCkpOworICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJl
Z2lzdGVyczo6eDI2LCBvZmZzZXQgLT0gOCkpOworICAgIH0KKyAgICBpZiAoZW5jb2RpbmcgJiBV
TldJTkRfQVJNNjRfRlJBTUVfWDI3X1gyOF9QQUlSKSB7CisgICAgICAgIG1fcmVnaXN0ZXJzLmFw
cGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjcsIG9mZnNldCAtPSA4KSk7
CisgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0
ZXJzOjp4MjgsIG9mZnNldCAtPSA4KSk7CisgICAgfQorICAgIGlmIChlbmNvZGluZyAmIFVOV0lO
RF9BUk02NF9GUkFNRV9EOF9EOV9QQUlSKSB7CisgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChS
ZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjcsIG9mZnNldCAtPSA4KSk7CisgICAg
ICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4
MjgsIG9mZnNldCAtPSA4KSk7CisgICAgfQorICAgIGlmIChlbmNvZGluZyAmIFVOV0lORF9BUk02
NF9GUkFNRV9EMTBfRDExX1BBSVIpIHsKKyAgICAgICAgbV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lz
dGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyNywgb2Zmc2V0IC09IDgpKTsKKyAgICAgICAg
bV9yZWdpc3RlcnMuYXBwZW5kKFJlZ2lzdGVyQXRPZmZzZXQoQVJNNjRSZWdpc3RlcnM6OngyOCwg
b2Zmc2V0IC09IDgpKTsKKyAgICB9CisgICAgaWYgKGVuY29kaW5nICYgVU5XSU5EX0FSTTY0X0ZS
QU1FX0QxMl9EMTNfUEFJUikgeworICAgICAgICBtX3JlZ2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJB
dE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI3LCBvZmZzZXQgLT0gOCkpOworICAgICAgICBtX3Jl
Z2lzdGVycy5hcHBlbmQoUmVnaXN0ZXJBdE9mZnNldChBUk02NFJlZ2lzdGVyczo6eDI4LCBvZmZz
ZXQgLT0gOCkpOworICAgIH0KKyAgICBpZiAoZW5jb2RpbmcgJiBVTldJTkRfQVJNNjRfRlJBTUVf
RDE0X0QxNV9QQUlSKSB7CisgICAgICAgIG1fcmVnaXN0ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zm
c2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjcsIG9mZnNldCAtPSA4KSk7CisgICAgICAgIG1fcmVnaXN0
ZXJzLmFwcGVuZChSZWdpc3RlckF0T2Zmc2V0KEFSTTY0UmVnaXN0ZXJzOjp4MjgsIG9mZnNldCAt
PSA4KSk7CisgICAgfQorI2Vsc2UKKyNlcnJvciAiVW5yZWNvZ25pemVkIGFyY2hpdGVjdHVyZSIK
KyNlbmRpZgogICAgIAogICAgIHN0ZDo6c29ydChtX3JlZ2lzdGVycy5iZWdpbigpLCBtX3JlZ2lz
dGVycy5lbmQoKSk7CiB9CkBAIC0xMTYsMTQgKzE2MywxNCBAQCB2b2lkIFVud2luZEluZm86OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgCiAgICAgb3V0LnByaW50KGxpc3REdW1wKG1fcmVnaXN0ZXJz
KSk7CiB9CiAKLVJlZ2lzdGVyQXRPZmZzZXQqIFVud2luZEluZm86OmZpbmQoR1BSUmVnIGdwcikg
Y29uc3QKK1JlZ2lzdGVyQXRPZmZzZXQqIFVud2luZEluZm86OmZpbmQoUmVnIHJlZykgY29uc3QK
IHsKLSAgICByZXR1cm4gdHJ5QmluYXJ5U2VhcmNoPFJlZ2lzdGVyQXRPZmZzZXQsIEdQUlJlZz4o
bV9yZWdpc3RlcnMsIG1fcmVnaXN0ZXJzLnNpemUoKSwgZ3ByLCBSZWdpc3RlckF0T2Zmc2V0Ojpn
ZXRHUFIpOworICAgIHJldHVybiB0cnlCaW5hcnlTZWFyY2g8UmVnaXN0ZXJBdE9mZnNldCwgUmVn
PihtX3JlZ2lzdGVycywgbV9yZWdpc3RlcnMuc2l6ZSgpLCByZWcsIFJlZ2lzdGVyQXRPZmZzZXQ6
OmdldFJlZyk7CiB9CiAKLXVuc2lnbmVkIFVud2luZEluZm86OmluZGV4T2YoR1BSUmVnIGdwcikg
Y29uc3QKK3Vuc2lnbmVkIFVud2luZEluZm86OmluZGV4T2YoUmVnIHJlZykgY29uc3QKIHsKLSAg
ICBpZiAoUmVnaXN0ZXJBdE9mZnNldCogcG9pbnRlciA9IGZpbmQoZ3ByKSkKKyAgICBpZiAoUmVn
aXN0ZXJBdE9mZnNldCogcG9pbnRlciA9IGZpbmQocmVnKSkKICAgICAgICAgcmV0dXJuIHBvaW50
ZXIgLSBtX3JlZ2lzdGVycy5iZWdpbigpOwogICAgIHJldHVybiBVSU5UX01BWDsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVW53aW5kSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVW53aW5kSW5mby5oCShyZXZpc2lvbiAxNjQy
NjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFVud2luZEluZm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsOCArNDEsOCBAQCBzdHJ1Y3QgVW53aW5kSW5mbyB7CiAgICAgCiAgICAg
dm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiAgICAgCi0gICAgUmVnaXN0ZXJBdE9mZnNl
dCogZmluZChHUFJSZWcpIGNvbnN0OwotICAgIHVuc2lnbmVkIGluZGV4T2YoR1BSUmVnKSBjb25z
dDsgLy8gUmV0dXJucyBVSU5UX01BWCBpZiBub3QgZm91bmQuCisgICAgUmVnaXN0ZXJBdE9mZnNl
dCogZmluZChSZWcpIGNvbnN0OworICAgIHVuc2lnbmVkIGluZGV4T2YoUmVnKSBjb25zdDsgLy8g
UmV0dXJucyBVSU5UX01BWCBpZiBub3QgZm91bmQuCiAgICAgCiAgICAgVmVjdG9yPFJlZ2lzdGVy
QXRPZmZzZXQ+IG1fcmVnaXN0ZXJzOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVnLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZy5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVnLmgi
CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiRlBSSW5mby5oIgorI2luY2x1ZGUgIkdQ
UkluZm8uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3ZvaWQgUmVnOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0Cit7CisgICAgaWYgKCEqdGhpcykKKyAgICAgICAgb3V0LnByaW50KCI8bm9u
ZT4iKTsKKyAgICBlbHNlIGlmIChpc0dQUigpKQorICAgICAgICBvdXQucHJpbnQoZ3ByKCkpOwor
ICAgIGVsc2UKKyAgICAgICAgb3V0LnByaW50KGZwcigpKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVn
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlZy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsMTc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUmVnX2gKKyNkZWZpbmUgUmVnX2gKKworI2lmIEVO
QUJMRShKSVQpCisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgorCituYW1lc3BhY2UgSlND
IHsKKworLy8gUmVnIGlzIGEgcG9seW1vcnBoaWMgcmVnaXN0ZXIgY2xhc3MuIEl0IGNhbiByZWZl
ciB0byBlaXRoZXIgaW50ZWdlciBvciBmbG9hdCByZWdpc3RlcnMuCisvLyBIZXJlIGFyZSBzb21l
IHVzZSBjYXNlczoKKy8vCisvLyBHUFJSZWcgZ3ByOworLy8gUmVnIHJlZyA9IGdwcjsKKy8vIHJl
Zy5pc1NldCgpID09IHRydWUKKy8vIHJlZy5pc0dQUigpID09IHRydWUKKy8vIHJlZy5pc0ZQUigp
ID09IGZhbHNlCisvLworLy8gZm9yIChSZWcgcmVnID0gUmVnOjpmaXJzdCgpOyByZWcgPD0gUmVn
OjpsYXN0KCk7IHJlZyA9IHJlZy5uZXh0KCkpIHsKKy8vICAgICBpZiAocmVnLmlzR1BSKCkpIHsK
Ky8vICAgICB9IGVsc2UgLyogcmVnLmlzRlBSKCkgKi8geworLy8gICAgIH0KKy8vIH0KKy8vCisv
LyBUaGUgYWJvdmUgbG9vcCBjb3VsZCBoYXZlIGFsc28gdXNlZCAhIXJlZyBvciByZWcuaXNTZXQo
KSBhcyBhIGNvbmRpdGlvbi4KKworY2xhc3MgUmVnIHsKK3B1YmxpYzoKKyAgICBSZWcoKQorICAg
ICAgICA6IG1faW5kZXgoaW52YWxpZCgpKQorICAgIHsKKyAgICB9CisgICAgCisgICAgUmVnKE1h
Y3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZykKKyAgICAgICAgOiBtX2luZGV4KE1hY3JvQXNz
ZW1ibGVyOjpyZWdpc3RlckluZGV4KHJlZykpCisgICAgeworICAgIH0KKyAgICAKKyAgICBSZWco
TWFjcm9Bc3NlbWJsZXI6OkZQUmVnaXN0ZXJJRCByZWcpCisgICAgICAgIDogbV9pbmRleChNYWNy
b0Fzc2VtYmxlcjo6cmVnaXN0ZXJJbmRleChyZWcpKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
c3RhdGljIFJlZyBmcm9tSW5kZXgodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBSZWcg
cmVzdWx0OworICAgICAgICByZXN1bHQubV9pbmRleCA9IGluZGV4OworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgUmVnIGZpcnN0KCkKKyAgICB7CisgICAg
ICAgIFJlZyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gMDsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgc3RhdGljIFJlZyBsYXN0KCkKKyAgICB7Cisg
ICAgICAgIFJlZyByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5tX2luZGV4ID0gTWFjcm9Bc3NlbWJs
ZXI6Om51bWJlck9mUmVnaXN0ZXJzKCkgKyBNYWNyb0Fzc2VtYmxlcjo6bnVtYmVyT2ZGUFJlZ2lz
dGVycygpIC0gMTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgUmVn
IG5leHQoKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKCEhKnRoaXMpOworICAgICAgICBp
ZiAoKnRoaXMgPT0gbGFzdCgpKQorICAgICAgICAgICAgcmV0dXJuIFJlZygpOworICAgICAgICBS
ZWcgcmVzdWx0OworICAgICAgICByZXN1bHQubV9pbmRleCA9IG1faW5kZXggKyAxOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0
IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICAKKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1
cm4gbV9pbmRleCAhPSBpbnZhbGlkKCk7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsg
cmV0dXJuICFpc1NldCgpOyB9CisgICAgCisgICAgYm9vbCBpc0dQUigpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gbV9pbmRleCA8IE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVy
cygpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzRlBSKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiAobV9pbmRleCAtIE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZlJlZ2lzdGVycygpKSA8
IE1hY3JvQXNzZW1ibGVyOjpudW1iZXJPZkZQUmVnaXN0ZXJzKCk7CisgICAgfQorICAgIAorICAg
IE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIGdwcigpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQoaXNHUFIoKSk7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRD4oTWFjcm9Bc3NlbWJsZXI6OmZpcnN0UmVnaXN0ZXIoKSArIG1faW5kZXgp
OworICAgIH0KKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEIGZwcigpIGNv
bnN0CisgICAgeworICAgICAgICBBU1NFUlQoaXNGUFIoKSk7CisgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxNYWNyb0Fzc2VtYmxlcjo6RlBSZWdpc3RlcklEPigKKyAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpmaXJzdEZQUmVnaXN0ZXIoKSArIChtX2luZGV4IC0gTWFjcm9Bc3NlbWJsZXI6
Om51bWJlck9mUmVnaXN0ZXJzKCkpKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pbmRleCA9
PSBvdGhlci5tX2luZGV4OworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
UmVnJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2luZGV4ICE9IG90aGVy
Lm1faW5kZXg7CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFJlZyYgb3Ro
ZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pbmRleCA8IG90aGVyLm1faW5kZXg7
CisgICAgfQorICAgIAorICAgIGJvb2wgb3BlcmF0b3I+KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0
CisgICAgeworICAgICAgICByZXR1cm4gbV9pbmRleCA+IG90aGVyLm1faW5kZXg7CisgICAgfQor
ICAgIAorICAgIGJvb2wgb3BlcmF0b3I8PShjb25zdCBSZWcmIG90aGVyKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1faW5kZXggPD0gb3RoZXIubV9pbmRleDsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBvcGVyYXRvcj49KGNvbnN0IFJlZyYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9pbmRleCA+PSBvdGhlci5tX2luZGV4OworICAgIH0KKyAgICAKKyAgICB1bnNp
Z25lZCBoYXNoKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2luZGV4OworICAgIH0K
KyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBzdGF0aWMgdWludDhfdCBpbnZhbGlkKCkgeyByZXR1cm4gMHhmZjsgfQorICAgIAorICAgIHVp
bnQ4X3QgbV9pbmRleDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKKworI2VuZGlmIC8vIFJlZ19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVnaXN0ZXJTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlZ2lzdGVyU2V0LmgJKHJldmlzaW9uIDE2NDI2NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVnaXN0ZXJTZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkZQUkluZm8uaCIKICNpbmNsdWRlICJHUFJJbmZvLmgiCiAjaW5jbHVkZSAiTWFjcm9B
c3NlbWJsZXIuaCIKKyNpbmNsdWRlICJSZWcuaCIKICNpbmNsdWRlICJUZW1wUmVnaXN0ZXJTZXQu
aCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAKQEAgLTQ4LDEyICs0OSwxMyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFJlZ2lzdGVyU2V0IGFsbEdQUnMoKTsKICAgICBzdGF0aWMgUmVnaXN0
ZXJTZXQgYWxsRlBScygpOwogICAgIHN0YXRpYyBSZWdpc3RlclNldCBhbGxSZWdpc3RlcnMoKTsK
LQotICAgIHZvaWQgc2V0KEdQUlJlZyByZWcsIGJvb2wgdmFsdWUgPSB0cnVlKQorICAgIAorICAg
IHZvaWQgc2V0KFJlZyByZWcsIGJvb2wgdmFsdWUgPSB0cnVlKQogICAgIHsKLSAgICAgICAgbV92
ZWN0b3Iuc2V0KE1hY3JvQXNzZW1ibGVyOjpyZWdpc3RlckluZGV4KHJlZyksIHZhbHVlKTsKKyAg
ICAgICAgQVNTRVJUKCEhcmVnKTsKKyAgICAgICAgbV92ZWN0b3Iuc2V0KHJlZy5pbmRleCgpLCB2
YWx1ZSk7CiAgICAgfQotICAgIAorCiAgICAgdm9pZCBzZXQoSlNWYWx1ZVJlZ3MgcmVncykKICAg
ICB7CiAgICAgICAgIGlmIChyZWdzLnRhZ0dQUigpICE9IEludmFsaWRHUFJSZWcpCkBAIC02MSwy
NSArNjMsMTggQEAgcHVibGljOgogICAgICAgICBzZXQocmVncy5wYXlsb2FkR1BSKCkpOwogICAg
IH0KICAgICAKLSAgICB2b2lkIGNsZWFyKEdQUlJlZyByZWcpCisgICAgdm9pZCBjbGVhcihSZWcg
cmVnKQogICAgIHsKKyAgICAgICAgQVNTRVJUKCEhcmVnKTsKICAgICAgICAgc2V0KHJlZywgZmFs
c2UpOwogICAgIH0KICAgICAKLSAgICBib29sIGdldChHUFJSZWcgcmVnKSBjb25zdCB7IHJldHVy
biBtX3ZlY3Rvci5nZXQoTWFjcm9Bc3NlbWJsZXI6OnJlZ2lzdGVySW5kZXgocmVnKSk7IH0KLSAg
ICAKLSAgICB2b2lkIHNldChGUFJSZWcgcmVnLCBib29sIHZhbHVlID0gdHJ1ZSkKLSAgICB7Ci0g
ICAgICAgIG1fdmVjdG9yLnNldChNYWNyb0Fzc2VtYmxlcjo6cmVnaXN0ZXJJbmRleChyZWcpLCB2
YWx1ZSk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgY2xlYXIoRlBSUmVnIHJlZykKKyAgICBib29s
IGdldChSZWcgcmVnKSBjb25zdAogICAgIHsKLSAgICAgICAgc2V0KHJlZywgZmFsc2UpOworICAg
ICAgICBBU1NFUlQoISFyZWcpOworICAgICAgICByZXR1cm4gbV92ZWN0b3IuZ2V0KHJlZy5pbmRl
eCgpKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBnZXQoRlBSUmVnIHJlZykgY29uc3QgeyByZXR1
cm4gbV92ZWN0b3IuZ2V0KE1hY3JvQXNzZW1ibGVyOjpyZWdpc3RlckluZGV4KHJlZykpOyB9Ci0g
ICAgCiAgICAgdm9pZCBtZXJnZShjb25zdCBSZWdpc3RlclNldCYgb3RoZXIpIHsgbV92ZWN0b3Iu
bWVyZ2Uob3RoZXIubV92ZWN0b3IpOyB9CiAgICAgdm9pZCBmaWx0ZXIoY29uc3QgUmVnaXN0ZXJT
ZXQmIG90aGVyKSB7IG1fdmVjdG9yLmZpbHRlcihvdGhlci5tX3ZlY3Rvcik7IH0KICAgICB2b2lk
IGV4Y2x1ZGUoY29uc3QgUmVnaXN0ZXJTZXQmIG90aGVyKSB7IG1fdmVjdG9yLmV4Y2x1ZGUob3Ro
ZXIubV92ZWN0b3IpOyB9Cg==
</data>
<flag name="review"
          id="248644"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>