<?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>116631</bug_id>
          
          <creation_ts>2013-05-22 12:53:15 -0700</creation_ts>
          <short_desc>fourthTier: FTL shouldn&apos;t use the LLVM global context, and should instead create its own context for each compilation</short_desc>
          <delta_ts>2013-05-22 13:09:58 -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>
          
          <blocked>112840</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>892504</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-22 12:53:15 -0700</bug_when>
    <thetext>In the future we might want to share contexts for multiple compilations, but for now using one context per compilation is a progression over just constantly using the global context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892505</commentid>
    <comment_count>1</comment_count>
      <attachid>202616</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-22 12:54:53 -0700</bug_when>
    <thetext>Created attachment 202616
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892509</commentid>
    <comment_count>2</comment_count>
      <attachid>202616</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-05-22 13:06:59 -0700</bug_when>
    <thetext>Comment on attachment 202616
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>892510</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-22 13:09:58 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/150533</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202616</attachid>
            <date>2013-05-22 12:54:53 -0700</date>
            <delta_ts>2013-05-22 13:06:59 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>28489</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUwNTMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc2IEBA
CisyMDEzLTA1LTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogRlRMIHNob3VsZG4ndCB1c2UgdGhlIExMVk0gZ2xvYmFsIGNvbnRleHQsIGFu
ZCBzaG91bGQgaW5zdGVhZCBjcmVhdGUgaXRzIG93biBjb250ZXh0IGZvciBlYWNoIGNvbXBpbGF0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY2
MzEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAg
ICAgIEluIHRoZSBmdXR1cmUgd2UgbWlnaHQgd2FudCB0byBzaGFyZSBjb250ZXh0cyBmb3IgbXVs
dGlwbGUgY29tcGlsYXRpb25zLCBidXQgZm9yCisgICAgICAgIG5vdyB1c2luZyBvbmUgY29udGV4
dCBwZXIgY29tcGlsYXRpb24gaXMgYSBwcm9ncmVzc2lvbiBvdmVyIGp1c3QgY29uc3RhbnRseSB1
c2luZworICAgICAgICB0aGUgZ2xvYmFsIGNvbnRleHQuCisKKyAgICAgICAgKiBkZmcvREZHUGxh
bi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkKToKKyAgICAg
ICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1wbCk6
CisgICAgICAgICogZGZnL0RGR1BsYW4uaDoKKyAgICAgICAgKiBmdGwvRlRMQWJicmV2aWF0ZWRU
eXBlcy5oOgorICAgICAgICAoRlRMKToKKyAgICAgICAgKiBmdGwvRlRMQWJicmV2aWF0aW9ucy5o
OgorICAgICAgICAoSlNDOjpGVEw6OnZvaWRUeXBlKToKKyAgICAgICAgKEpTQzo6RlRMOjppbnQx
VHlwZSk6CisgICAgICAgIChKU0M6OkZUTDo6aW50OFR5cGUpOgorICAgICAgICAoSlNDOjpGVEw6
OmludDMyVHlwZSk6CisgICAgICAgIChKU0M6OkZUTDo6aW50NjRUeXBlKToKKyAgICAgICAgKEpT
Qzo6RlRMOjppbnRQdHJUeXBlKToKKyAgICAgICAgKEpTQzo6RlRMOjpkb3VibGVUeXBlKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpzdHJ1Y3RUeXBlKToKKyAgICAgICAgKEpTQzo6RlRMOjptZEtpbmRJ
RCk6CisgICAgICAgIChKU0M6OkZUTDo6bWRTdHJpbmcpOgorICAgICAgICAoSlNDOjpGVEw6Om1k
Tm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6YXBwZW5kQmFzaWNCbG9jayk6CisgICAgICAgIChK
U0M6OkZUTDo6aW5zZXJ0QmFzaWNCbG9jayk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVh
cC5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6QWJzdHJhY3RIZWFwOjp0YmFhTWV0YWRhdGFTbG93
KToKKyAgICAgICAgKEpTQzo6RlRMOjpJbmRleGVkQWJzdHJhY3RIZWFwOjpJbmRleGVkQWJzdHJh
Y3RIZWFwKToKKyAgICAgICAgKEpTQzo6RlRMOjpOdW1iZXJlZEFic3RyYWN0SGVhcDo6TnVtYmVy
ZWRBYnN0cmFjdEhlYXApOgorICAgICAgICAoSlNDOjpGVEw6OkFic29sdXRlQWJzdHJhY3RIZWFw
OjpBYnNvbHV0ZUFic3RyYWN0SGVhcCk6CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcC5o
OgorICAgICAgICAoSW5kZXhlZEFic3RyYWN0SGVhcCk6CisgICAgICAgIChOdW1iZXJlZEFic3Ry
YWN0SGVhcCk6CisgICAgICAgIChBYnNvbHV0ZUFic3RyYWN0SGVhcCk6CisgICAgICAgICogZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkFic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnkpOgorICAgICAgICAqIGZ0
bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5Lmg6CisgICAgICAgIChBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5KToKKyAgICAgICAgKiBmdGwvRlRMQ29tbW9uVmFsdWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpDb21tb25WYWx1ZXM6OkNvbW1vblZhbHVlcyk6CisgICAgICAgICogZnRsL0ZUTENv
bW1vblZhbHVlcy5oOgorICAgICAgICAoQ29tbW9uVmFsdWVzKToKKyAgICAgICAgKiBmdGwvRlRM
Q29tcGlsZS5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6bW1BbGxvY2F0ZUNvZGVTZWN0aW9uKToK
KyAgICAgICAgKiBmdGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5jcHA6CisgICAgICAgIChKU0M6
OkZUTDo6SW50cmluc2ljUmVwb3NpdG9yeTo6SW50cmluc2ljUmVwb3NpdG9yeSk6CisgICAgICAg
ICogZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaDoKKyAgICAgICAgKEZUTCk6CisgICAgICAg
IChJbnRyaW5zaWNSZXBvc2l0b3J5KToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0u
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpMb3dlckRGR1RvTExWTSk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06Omxvd2VyKToKKyAgICAgICAgKiBm
dGwvRlRMT3V0cHV0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6Ok91dHB1dCk6Cisg
ICAgICAgICogZnRsL0ZUTE91dHB1dC5oOgorICAgICAgICAoT3V0cHV0KToKKyAgICAgICAgKEpT
Qzo6RlRMOjpPdXRwdXQ6Om5ld0Jsb2NrKToKKyAgICAgICAgKiBmdGwvRlRMU3RhdGUuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OlN0YXRlOjpTdGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6U3Rh
dGU6On5TdGF0ZSk6CisgICAgICAgIChGVEwpOgorICAgICAgICAqIGZ0bC9GVExTdGF0ZS5oOgor
ICAgICAgICAoU3RhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAo
SlNDKToKKwogMjAxMy0wNS0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAg
ICAgICAgIEZUTCBzaG91bGQgZm9yY2UgTExWTSB0byB1c2Ugb3VyIG93biBKSVQgbWVtb3J5IGFs
bG9jYXRvciwgYW5kIHdlIHNob3VsZG4ndCBoYXZlIHRvIGtlZXAgYXJvdW5kIGFuIExMVk1FeGVj
dXRpb25FbmdpbmVSZWYgdG8ga2VlcCBjb2RlIGFsaXZlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1BsYW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHUGxhbi5jcHAJKHJldmlzaW9uIDE1MDUyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUGxhbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDcgQEAKICNp
bmNsdWRlICJGVExMb3dlckRGR1RvTExWTS5oIgogI2luY2x1ZGUgIkZUTFN0YXRlLmgiCiAjaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgorI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCiBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKQEAgLTg4LDE3ICs4OSw0NCBAQCBQbGFuOjp+
UGxhbigpCiAKIHZvaWQgUGxhbjo6Y29tcGlsZUluVGhyZWFkKExvbmdMaXZlZFN0YXRlJiBsb25n
TGl2ZWRTdGF0ZSkKIHsKKyAgICBkb3VibGUgYmVmb3JlID0gMDsKKyAgICBpZiAoT3B0aW9uczo6
cmVwb3J0Q29tcGlsZVRpbWVzKCkpCisgICAgICAgIGJlZm9yZSA9IGN1cnJlbnRUaW1lTVMoKTsK
KyAgICAKICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIENvbXBpbGF0aW9u
IChQbGFuKSIpOwogICAgIENvbXBpbGF0aW9uU2NvcGUgY29tcGlsYXRpb25TY29wZTsKIAogICAg
IGlmIChsb2dDb21waWxhdGlvbkNoYW5nZXMoKSkKICAgICAgICAgZGF0YUxvZygiREZHKFBsYW4p
IGNvbXBpbGluZyAiLCAqY29kZUJsb2NrLCAiLCBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zID0gIiwg
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCksICJcbiIpOwogCisgICAgQ29tcGlsYXRpb25Q
YXRoIHBhdGggPSBjb21waWxlSW5UaHJlYWRJbXBsKGxvbmdMaXZlZFN0YXRlKTsKKworICAgIFJF
TEVBU0VfQVNTRVJUKGZpbmFsaXplcik7CisgICAgCisgICAgaWYgKE9wdGlvbnM6OnJlcG9ydENv
bXBpbGVUaW1lcygpKSB7CisgICAgICAgIGNvbnN0IGNoYXIqIHBhdGhOYW1lOworICAgICAgICBz
d2l0Y2ggKHBhdGgpIHsKKyAgICAgICAgY2FzZSBGYWlsUGF0aDoKKyAgICAgICAgICAgIHBhdGhO
YW1lID0gIk4vQSAoZmFpbCkiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgREZH
UGF0aDoKKyAgICAgICAgICAgIHBhdGhOYW1lID0gIkRGRyI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBGVExQYXRoOgorICAgICAgICAgICAgcGF0aE5hbWUgPSAiRlRMIjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRhdGFMb2coIkNvbXBpbGVkICIs
ICpjb2RlQmxvY2ssICIgd2l0aCAiLCBwYXRoTmFtZSwgIiBpbiAiLCBjdXJyZW50VGltZU1TKCkg
LSBiZWZvcmUsICIgbXMuXG4iKTsKKyAgICB9Cit9CisKK1BsYW46OkNvbXBpbGF0aW9uUGF0aCBQ
bGFuOjpjb21waWxlSW5UaHJlYWRJbXBsKExvbmdMaXZlZFN0YXRlJiBsb25nTGl2ZWRTdGF0ZSkK
K3sKICAgICBHcmFwaCBkZmcodm0sICp0aGlzLCBsb25nTGl2ZWRTdGF0ZSk7CiAgICAgCiAgICAg
aWYgKCFwYXJzZShkZmcpKSB7CiAgICAgICAgIGZpbmFsaXplciA9IGFkb3B0UHRyKG5ldyBGYWls
ZWRGaW5hbGl6ZXIoKnRoaXMpKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gRmFp
bFBhdGg7CiAgICAgfQogICAgIAogICAgIC8vIEJ5IHRoaXMgcG9pbnQgdGhlIERGRyBieXRlY29k
ZSBwYXJzZXIgd2lsbCBoYXZlIHBvdGVudGlhbGx5IG11dGF0ZWQgdmFyaW91cyB0YWJsZXMKQEAg
LTE1MSw3ICsxNzksNyBAQCB2b2lkIFBsYW46OmNvbXBpbGVJblRocmVhZChMb25nTGl2ZWRTdGF0
CiAgICAgICAgIEZUTDo6bG93ZXJERkdUb0xMVk0oc3RhdGUpOwogICAgICAgICBGVEw6OmNvbXBp
bGUoc3RhdGUpOwogICAgICAgICBGVEw6Omxpbmsoc3RhdGUpOwotICAgICAgICByZXR1cm47Cisg
ICAgICAgIHJldHVybiBGVExQYXRoOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoRlRMX0pJVCkK
ICAgICAKQEAgLTE2OSw3ICsxOTcsNyBAQCB2b2lkIFBsYW46OmNvbXBpbGVJblRocmVhZChMb25n
TGl2ZWRTdGF0CiAgICAgICAgIGRhdGFGbG93SklULmxpbmsoKTsKICAgICB9CiAgICAgCi0gICAg
QVNTRVJUKGZpbmFsaXplcik7CisgICAgcmV0dXJuIERGR1BhdGg7CiB9CiAKIGJvb2wgUGxhbjo6
aXNTdGlsbFZhbGlkKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxhbi5oCShyZXZp
c2lvbiAxNTA1MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1BsYW4uaAkod29y
a2luZyBjb3B5KQpAQCAtNzksNiArNzksOSBAQCBzdHJ1Y3QgUGxhbiA6IHB1YmxpYyBUaHJlYWRT
YWZlUmVmQ291bnRlCiAgICAgYm9vbCBpc0NvbXBpbGVkOwogCiBwcml2YXRlOgorICAgIGVudW0g
Q29tcGlsYXRpb25QYXRoIHsgRmFpbFBhdGgsIERGR1BhdGgsIEZUTFBhdGggfTsKKyAgICBDb21w
aWxhdGlvblBhdGggY29tcGlsZUluVGhyZWFkSW1wbChMb25nTGl2ZWRTdGF0ZSYpOworICAgIAog
ICAgIGJvb2wgaXNTdGlsbFZhbGlkKCk7CiAgICAgdm9pZCByZWFsbHlBZGQoKTsKIH07CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGVkVHlwZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFiYnJldmlhdGVkVHlwZXMuaAko
cmV2aXNpb24gMTUwNTIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYmJyZXZp
YXRlZFR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDEwICszNywxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEZUTCB7CiB0eXBlZGVmIExMVk1CYXNpY0Jsb2NrUmVmIExCYXNpY0Js
b2NrOwogdHlwZWRlZiBMTFZNQnVpbGRlclJlZiBMQnVpbGRlcjsKIHR5cGVkZWYgTExWTUNhbGxD
b252IExDYWxsQ29udjsKK3R5cGVkZWYgTExWTUNvbnRleHRSZWYgTENvbnRleHQ7CiB0eXBlZGVm
IExMVk1JbnRQcmVkaWNhdGUgTEludFByZWRpY2F0ZTsKLXR5cGVkZWYgTExWTVJlYWxQcmVkaWNh
dGUgTFJlYWxQcmVkaWNhdGU7CiB0eXBlZGVmIExMVk1MaW5rYWdlIExMaW5rYWdlOwogdHlwZWRl
ZiBMTFZNTW9kdWxlUmVmIExNb2R1bGU7Cit0eXBlZGVmIExMVk1SZWFsUHJlZGljYXRlIExSZWFs
UHJlZGljYXRlOwogdHlwZWRlZiBMTFZNVHlwZVJlZiBMVHlwZTsKIHR5cGVkZWYgTExWTVZhbHVl
UmVmIExWYWx1ZTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYmJyZXZp
YXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYmJy
ZXZpYXRpb25zLmgJKHJldmlzaW9uIDE1MDUyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQWJicmV2aWF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCwzMyArNDQsMzMgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogI2Vycm9yICJUaGUgRlRMIGJhY2tlbmQg
YXNzdW1lcyB0aGF0IHBvaW50ZXJzIGFyZSA2NC1iaXQuIgogI2VuZGlmCiAKLXN0YXRpYyBpbmxp
bmUgTFR5cGUgdm9pZFR5cGUoKSB7IHJldHVybiBMTFZNVm9pZFR5cGUoKTsgfQotc3RhdGljIGlu
bGluZSBMVHlwZSBpbnQxVHlwZSgpIHsgcmV0dXJuIExMVk1JbnQxVHlwZSgpOyB9Ci1zdGF0aWMg
aW5saW5lIExUeXBlIGludDhUeXBlKCkgeyByZXR1cm4gTExWTUludDhUeXBlKCk7IH0KLXN0YXRp
YyBpbmxpbmUgTFR5cGUgaW50MzJUeXBlKCkgeyByZXR1cm4gTExWTUludDMyVHlwZSgpOyB9Ci1z
dGF0aWMgaW5saW5lIExUeXBlIGludDY0VHlwZSgpIHsgcmV0dXJuIExMVk1JbnQ2NFR5cGUoKTsg
fQotc3RhdGljIGlubGluZSBMVHlwZSBpbnRQdHJUeXBlKCkgeyByZXR1cm4gTExWTUludDY0VHlw
ZSgpOyB9Ci1zdGF0aWMgaW5saW5lIExUeXBlIGRvdWJsZVR5cGUoKSB7IHJldHVybiBMTFZNRG91
YmxlVHlwZSgpOyB9CitzdGF0aWMgaW5saW5lIExUeXBlIHZvaWRUeXBlKExDb250ZXh0IGNvbnRl
eHQpIHsgcmV0dXJuIExMVk1Wb2lkVHlwZUluQ29udGV4dChjb250ZXh0KTsgfQorc3RhdGljIGlu
bGluZSBMVHlwZSBpbnQxVHlwZShMQ29udGV4dCBjb250ZXh0KSB7IHJldHVybiBMTFZNSW50MVR5
cGVJbkNvbnRleHQoY29udGV4dCk7IH0KK3N0YXRpYyBpbmxpbmUgTFR5cGUgaW50OFR5cGUoTENv
bnRleHQgY29udGV4dCkgeyByZXR1cm4gTExWTUludDhUeXBlSW5Db250ZXh0KGNvbnRleHQpOyB9
CitzdGF0aWMgaW5saW5lIExUeXBlIGludDMyVHlwZShMQ29udGV4dCBjb250ZXh0KSB7IHJldHVy
biBMTFZNSW50MzJUeXBlSW5Db250ZXh0KGNvbnRleHQpOyB9CitzdGF0aWMgaW5saW5lIExUeXBl
IGludDY0VHlwZShMQ29udGV4dCBjb250ZXh0KSB7IHJldHVybiBMTFZNSW50NjRUeXBlSW5Db250
ZXh0KGNvbnRleHQpOyB9CitzdGF0aWMgaW5saW5lIExUeXBlIGludFB0clR5cGUoTENvbnRleHQg
Y29udGV4dCkgeyByZXR1cm4gTExWTUludDY0VHlwZUluQ29udGV4dChjb250ZXh0KTsgfQorc3Rh
dGljIGlubGluZSBMVHlwZSBkb3VibGVUeXBlKExDb250ZXh0IGNvbnRleHQpIHsgcmV0dXJuIExM
Vk1Eb3VibGVUeXBlSW5Db250ZXh0KGNvbnRleHQpOyB9CiAKIHN0YXRpYyBpbmxpbmUgTFR5cGUg
cG9pbnRlclR5cGUoTFR5cGUgdHlwZSkgeyByZXR1cm4gTExWTVBvaW50ZXJUeXBlKHR5cGUsIDAp
OyB9CiAKIGVudW0gUGFja2luZ01vZGUgeyBOb3RQYWNrZWQsIFBhY2tlZCB9Owotc3RhdGljIGlu
bGluZSBMVHlwZSBzdHJ1Y3RUeXBlKExUeXBlKiBlbGVtZW50VHlwZXMsIHVuc2lnbmVkIGVsZW1l
bnRDb3VudCwgUGFja2luZ01vZGUgcGFja2luZyA9IE5vdFBhY2tlZCkKK3N0YXRpYyBpbmxpbmUg
TFR5cGUgc3RydWN0VHlwZShMQ29udGV4dCBjb250ZXh0LCBMVHlwZSogZWxlbWVudFR5cGVzLCB1
bnNpZ25lZCBlbGVtZW50Q291bnQsIFBhY2tpbmdNb2RlIHBhY2tpbmcgPSBOb3RQYWNrZWQpCiB7
Ci0gICAgcmV0dXJuIExMVk1TdHJ1Y3RUeXBlKGVsZW1lbnRUeXBlcywgZWxlbWVudENvdW50LCBw
YWNraW5nID09IFBhY2tlZCk7CisgICAgcmV0dXJuIExMVk1TdHJ1Y3RUeXBlSW5Db250ZXh0KGNv
bnRleHQsIGVsZW1lbnRUeXBlcywgZWxlbWVudENvdW50LCBwYWNraW5nID09IFBhY2tlZCk7CiB9
Ci1zdGF0aWMgaW5saW5lIExUeXBlIHN0cnVjdFR5cGUoUGFja2luZ01vZGUgcGFja2luZyA9IE5v
dFBhY2tlZCkKK3N0YXRpYyBpbmxpbmUgTFR5cGUgc3RydWN0VHlwZShMQ29udGV4dCBjb250ZXh0
LCBQYWNraW5nTW9kZSBwYWNraW5nID0gTm90UGFja2VkKQogewotICAgIHJldHVybiBzdHJ1Y3RU
eXBlKDAsIDAsIHBhY2tpbmcpOworICAgIHJldHVybiBzdHJ1Y3RUeXBlKGNvbnRleHQsIDAsIDAs
IHBhY2tpbmcpOwogfQotc3RhdGljIGlubGluZSBMVHlwZSBzdHJ1Y3RUeXBlKExUeXBlIGVsZW1l
bnQxLCBQYWNraW5nTW9kZSBwYWNraW5nID0gTm90UGFja2VkKQorc3RhdGljIGlubGluZSBMVHlw
ZSBzdHJ1Y3RUeXBlKExDb250ZXh0IGNvbnRleHQsIExUeXBlIGVsZW1lbnQxLCBQYWNraW5nTW9k
ZSBwYWNraW5nID0gTm90UGFja2VkKQogewotICAgIHJldHVybiBzdHJ1Y3RUeXBlKCZlbGVtZW50
MSwgMSwgcGFja2luZyk7CisgICAgcmV0dXJuIHN0cnVjdFR5cGUoY29udGV4dCwgJmVsZW1lbnQx
LCAxLCBwYWNraW5nKTsKIH0KLXN0YXRpYyBpbmxpbmUgTFR5cGUgc3RydWN0VHlwZShMVHlwZSBl
bGVtZW50MSwgTFR5cGUgZWxlbWVudDIsIFBhY2tpbmdNb2RlIHBhY2tpbmcgPSBOb3RQYWNrZWQp
CitzdGF0aWMgaW5saW5lIExUeXBlIHN0cnVjdFR5cGUoTENvbnRleHQgY29udGV4dCwgTFR5cGUg
ZWxlbWVudDEsIExUeXBlIGVsZW1lbnQyLCBQYWNraW5nTW9kZSBwYWNraW5nID0gTm90UGFja2Vk
KQogewogICAgIExUeXBlIGVsZW1lbnRzW10gPSB7IGVsZW1lbnQxLCBlbGVtZW50MiB9OwotICAg
IHJldHVybiBzdHJ1Y3RUeXBlKGVsZW1lbnRzLCAyLCBwYWNraW5nKTsKKyAgICByZXR1cm4gc3Ry
dWN0VHlwZShjb250ZXh0LCBlbGVtZW50cywgMiwgcGFja2luZyk7CiB9CiAKIGVudW0gVmFyaWFk
aWNpdHkgeyBOb3RWYXJpYWRpYywgVmFyaWFkaWMgfTsKQEAgLTk5LDE2ICs5OSwxNiBAQCBzdGF0
aWMgaW5saW5lIExUeXBlIGZ1bmN0aW9uVHlwZShMVHlwZSByCiAKIHN0YXRpYyBpbmxpbmUgTFR5
cGUgdHlwZU9mKExWYWx1ZSB2YWx1ZSkgeyByZXR1cm4gTExWTVR5cGVPZih2YWx1ZSk7IH0KIAot
c3RhdGljIGlubGluZSB1bnNpZ25lZCBtZEtpbmRJRChjb25zdCBjaGFyKiBzdHJpbmcpIHsgcmV0
dXJuIExMVk1HZXRNREtpbmRJRChzdHJpbmcsIHN0cmxlbihzdHJpbmcpKTsgfQotc3RhdGljIGlu
bGluZSBMVmFsdWUgbWRTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgp
IHsgcmV0dXJuIExMVk1NRFN0cmluZyhzdHJpbmcsIGxlbmd0aCk7IH0KLXN0YXRpYyBpbmxpbmUg
TFZhbHVlIG1kU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZykgeyByZXR1cm4gbWRTdHJpbmcoc3Ry
aW5nLCBzdHJsZW4oc3RyaW5nKSk7IH0KLXN0YXRpYyBpbmxpbmUgTFZhbHVlIG1kTm9kZShMVmFs
dWUqIGFyZ3MsIHVuc2lnbmVkIG51bUFyZ3MpIHsgcmV0dXJuIExMVk1NRE5vZGUoYXJncywgbnVt
QXJncyk7IH0KLXN0YXRpYyBpbmxpbmUgTFZhbHVlIG1kTm9kZSgpIHsgcmV0dXJuIG1kTm9kZSgw
LCAwKTsgfQotc3RhdGljIGlubGluZSBMVmFsdWUgbWROb2RlKExWYWx1ZSBhcmcxKSB7IHJldHVy
biBtZE5vZGUoJmFyZzEsIDEpOyB9Ci1zdGF0aWMgaW5saW5lIExWYWx1ZSBtZE5vZGUoTFZhbHVl
IGFyZzEsIExWYWx1ZSBhcmcyKQorc3RhdGljIGlubGluZSB1bnNpZ25lZCBtZEtpbmRJRChMQ29u
dGV4dCBjb250ZXh0LCBjb25zdCBjaGFyKiBzdHJpbmcpIHsgcmV0dXJuIExMVk1HZXRNREtpbmRJ
REluQ29udGV4dChjb250ZXh0LCBzdHJpbmcsIHN0cmxlbihzdHJpbmcpKTsgfQorc3RhdGljIGlu
bGluZSBMVmFsdWUgbWRTdHJpbmcoTENvbnRleHQgY29udGV4dCwgY29uc3QgY2hhciogc3RyaW5n
LCB1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIExMVk1NRFN0cmluZ0luQ29udGV4dChjb250ZXh0
LCBzdHJpbmcsIGxlbmd0aCk7IH0KK3N0YXRpYyBpbmxpbmUgTFZhbHVlIG1kU3RyaW5nKExDb250
ZXh0IGNvbnRleHQsIGNvbnN0IGNoYXIqIHN0cmluZykgeyByZXR1cm4gbWRTdHJpbmcoY29udGV4
dCwgc3RyaW5nLCBzdHJsZW4oc3RyaW5nKSk7IH0KK3N0YXRpYyBpbmxpbmUgTFZhbHVlIG1kTm9k
ZShMQ29udGV4dCBjb250ZXh0LCBMVmFsdWUqIGFyZ3MsIHVuc2lnbmVkIG51bUFyZ3MpIHsgcmV0
dXJuIExMVk1NRE5vZGVJbkNvbnRleHQoY29udGV4dCwgYXJncywgbnVtQXJncyk7IH0KK3N0YXRp
YyBpbmxpbmUgTFZhbHVlIG1kTm9kZShMQ29udGV4dCBjb250ZXh0KSB7IHJldHVybiBtZE5vZGUo
Y29udGV4dCwgMCwgMCk7IH0KK3N0YXRpYyBpbmxpbmUgTFZhbHVlIG1kTm9kZShMQ29udGV4dCBj
b250ZXh0LCBMVmFsdWUgYXJnMSkgeyByZXR1cm4gbWROb2RlKGNvbnRleHQsICZhcmcxLCAxKTsg
fQorc3RhdGljIGlubGluZSBMVmFsdWUgbWROb2RlKExDb250ZXh0IGNvbnRleHQsIExWYWx1ZSBh
cmcxLCBMVmFsdWUgYXJnMikKIHsKICAgICBMVmFsdWUgYXJnc1tdID0geyBhcmcxLCBhcmcyIH07
Ci0gICAgcmV0dXJuIG1kTm9kZShhcmdzLCAyKTsKKyAgICByZXR1cm4gbWROb2RlKGNvbnRleHQs
IGFyZ3MsIDIpOwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0TWV0YWRhdGEoTFZhbHVlIGlu
c3RydWN0aW9uLCB1bnNpZ25lZCBraW5kLCBMVmFsdWUgbWV0YWRhdGEpIHsgTExWTVNldE1ldGFk
YXRhKGluc3RydWN0aW9uLCBraW5kLCBtZXRhZGF0YSk7IH0KQEAgLTEzMiw4ICsxMzIsOCBAQCBz
dGF0aWMgaW5saW5lIExWYWx1ZSBjb25zdFJlYWwoTFR5cGUgdHlwCiBzdGF0aWMgaW5saW5lIExW
YWx1ZSBjb25zdEludFRvUHRyKExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyByZXR1cm4gTExW
TUNvbnN0SW50VG9QdHIodmFsdWUsIHR5cGUpOyB9CiBzdGF0aWMgaW5saW5lIExWYWx1ZSBjb25z
dEJpdENhc3QoTFZhbHVlIHZhbHVlLCBMVHlwZSB0eXBlKSB7IHJldHVybiBMTFZNQ29uc3RCaXRD
YXN0KHZhbHVlLCB0eXBlKTsgfQogCi1zdGF0aWMgaW5saW5lIExCYXNpY0Jsb2NrIGFwcGVuZEJh
c2ljQmxvY2soTFZhbHVlIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBuYW1lID0gIiIpIHsgcmV0dXJu
IExMVk1BcHBlbmRCYXNpY0Jsb2NrKGZ1bmN0aW9uLCBuYW1lKTsgfQotc3RhdGljIGlubGluZSBM
QmFzaWNCbG9jayBpbnNlcnRCYXNpY0Jsb2NrKExCYXNpY0Jsb2NrIGJlZm9yZUJhc2ljQmxvY2ss
IGNvbnN0IGNoYXIqIG5hbWUgPSAiIikgeyByZXR1cm4gTExWTUluc2VydEJhc2ljQmxvY2soYmVm
b3JlQmFzaWNCbG9jaywgbmFtZSk7IH0KK3N0YXRpYyBpbmxpbmUgTEJhc2ljQmxvY2sgYXBwZW5k
QmFzaWNCbG9jayhMQ29udGV4dCBjb250ZXh0LCBMVmFsdWUgZnVuY3Rpb24sIGNvbnN0IGNoYXIq
IG5hbWUgPSAiIikgeyByZXR1cm4gTExWTUFwcGVuZEJhc2ljQmxvY2tJbkNvbnRleHQoY29udGV4
dCwgZnVuY3Rpb24sIG5hbWUpOyB9CitzdGF0aWMgaW5saW5lIExCYXNpY0Jsb2NrIGluc2VydEJh
c2ljQmxvY2soTENvbnRleHQgY29udGV4dCwgTEJhc2ljQmxvY2sgYmVmb3JlQmFzaWNCbG9jaywg
Y29uc3QgY2hhciogbmFtZSA9ICIiKSB7IHJldHVybiBMTFZNSW5zZXJ0QmFzaWNCbG9ja0luQ29u
dGV4dChjb250ZXh0LCBiZWZvcmVCYXNpY0Jsb2NrLCBuYW1lKTsgfQogCiBzdGF0aWMgaW5saW5l
IExWYWx1ZSBidWlsZFBoaShMQnVpbGRlciBidWlsZGVyLCBMVHlwZSB0eXBlKSB7IHJldHVybiBM
TFZNQnVpbGRQaGkoYnVpbGRlciwgdHlwZSwgIiIpOyB9CiBzdGF0aWMgaW5saW5lIHZvaWQgYWRk
SW5jb21pbmcoTFZhbHVlIHBoaSwgY29uc3QgTFZhbHVlKiB2YWx1ZXMsIGNvbnN0IExCYXNpY0Js
b2NrKiBibG9ja3MsIHVuc2lnbmVkIG51bVByZWRlY2Vzc29ycykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcC5jcHAJKHJldmlzaW9uIDE1MDUyMikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNyArMzksMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwg
ewogCiBMVmFsdWUgQWJzdHJhY3RIZWFwOjp0YmFhTWV0YWRhdGFTbG93KGNvbnN0IEFic3RyYWN0
SGVhcFJlcG9zaXRvcnkmIHJlcG9zaXRvcnkpIGNvbnN0CiB7Ci0gICAgbV90YmFhTWV0YWRhdGEg
PSBtZE5vZGUobWRTdHJpbmcobV9oZWFwTmFtZSksIG1fcGFyZW50LT50YmFhTWV0YWRhdGEocmVw
b3NpdG9yeSkpOworICAgIG1fdGJhYU1ldGFkYXRhID0gbWROb2RlKAorICAgICAgICByZXBvc2l0
b3J5Lm1fY29udGV4dCwKKyAgICAgICAgbWRTdHJpbmcocmVwb3NpdG9yeS5tX2NvbnRleHQsIG1f
aGVhcE5hbWUpLAorICAgICAgICBtX3BhcmVudC0+dGJhYU1ldGFkYXRhKHJlcG9zaXRvcnkpKTsK
ICAgICByZXR1cm4gbV90YmFhTWV0YWRhdGE7CiB9CiAKQEAgLTUwLDcgKzUzLDcgQEAgdm9pZCBB
YnN0cmFjdEhlYXA6OmRlY29yYXRlSW5zdHJ1Y3Rpb24oTAogICAgIHNldE1ldGFkYXRhKGluc3Ry
dWN0aW9uLCByZXBvc2l0b3J5Lm1fdGJhYUtpbmQsIHRiYWFNZXRhZGF0YShyZXBvc2l0b3J5KSk7
CiB9CiAKLUluZGV4ZWRBYnN0cmFjdEhlYXA6OkluZGV4ZWRBYnN0cmFjdEhlYXAoQWJzdHJhY3RI
ZWFwKiBwYXJlbnQsIGNvbnN0IGNoYXIqIGhlYXBOYW1lLCBzaXplX3QgZWxlbWVudFNpemUpCitJ
bmRleGVkQWJzdHJhY3RIZWFwOjpJbmRleGVkQWJzdHJhY3RIZWFwKExDb250ZXh0IGNvbnRleHQs
IEFic3RyYWN0SGVhcCogcGFyZW50LCBjb25zdCBjaGFyKiBoZWFwTmFtZSwgc2l6ZV90IGVsZW1l
bnRTaXplKQogICAgIDogbV9oZWFwRm9yQW55SW5kZXgocGFyZW50LCBoZWFwTmFtZSkKICAgICAs
IG1faGVhcE5hbWVMZW5ndGgoc3RybGVuKGhlYXBOYW1lKSkKICAgICAsIG1fZWxlbWVudFNpemUo
ZWxlbWVudFNpemUpCkBAIC02MiwxNCArNjUsMTQgQEAgSW5kZXhlZEFic3RyYWN0SGVhcDo6SW5k
ZXhlZEFic3RyYWN0SGVhcAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA0OyArK2kpIHsK
ICAgICAgICAgaWYgKCgxIDw8IGkpID09IG1fZWxlbWVudFNpemUpIHsKICAgICAgICAgICAgIGlm
IChpKQotICAgICAgICAgICAgICAgIG1fc2NhbGVUZXJtID0gY29uc3RJbnQoaW50UHRyVHlwZSgp
LCBpLCBaZXJvRXh0ZW5kKTsKKyAgICAgICAgICAgICAgICBtX3NjYWxlVGVybSA9IGNvbnN0SW50
KGludFB0clR5cGUoY29udGV4dCksIGksIFplcm9FeHRlbmQpOwogICAgICAgICAgICAgbV9jYW5T
aGlmdCA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KICAgICAK
ICAgICBpZiAoIW1fY2FuU2hpZnQpCi0gICAgICAgIG1fc2NhbGVUZXJtID0gY29uc3RJbnQoaW50
UHRyVHlwZSgpLCBtX2VsZW1lbnRTaXplLCBaZXJvRXh0ZW5kKTsKKyAgICAgICAgbV9zY2FsZVRl
cm0gPSBjb25zdEludChpbnRQdHJUeXBlKGNvbnRleHQpLCBtX2VsZW1lbnRTaXplLCBaZXJvRXh0
ZW5kKTsKIH0KIAogSW5kZXhlZEFic3RyYWN0SGVhcDo6fkluZGV4ZWRBYnN0cmFjdEhlYXAoKQpA
QCAtMTc0LDggKzE3Nyw5IEBAIHZvaWQgSW5kZXhlZEFic3RyYWN0SGVhcDo6aW5pdGlhbGl6ZShB
YnMKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi1OdW1iZXJlZEFic3Ry
YWN0SGVhcDo6TnVtYmVyZWRBYnN0cmFjdEhlYXAoQWJzdHJhY3RIZWFwKiBoZWFwLCBjb25zdCBj
aGFyKiBoZWFwTmFtZSkKLSAgICA6IG1faW5kZXhlZEhlYXAoaGVhcCwgaGVhcE5hbWUsIDEpCitO
dW1iZXJlZEFic3RyYWN0SGVhcDo6TnVtYmVyZWRBYnN0cmFjdEhlYXAoCisgICAgTENvbnRleHQg
Y29udGV4dCwgQWJzdHJhY3RIZWFwKiBoZWFwLCBjb25zdCBjaGFyKiBoZWFwTmFtZSkKKyAgICA6
IG1faW5kZXhlZEhlYXAoY29udGV4dCwgaGVhcCwgaGVhcE5hbWUsIDEpCiB7CiB9CiAKQEAgLTE4
Myw4ICsxODcsOSBAQCBOdW1iZXJlZEFic3RyYWN0SGVhcDo6fk51bWJlcmVkQWJzdHJhY3RICiB7
CiB9CiAKLUFic29sdXRlQWJzdHJhY3RIZWFwOjpBYnNvbHV0ZUFic3RyYWN0SGVhcChBYnN0cmFj
dEhlYXAqIGhlYXAsIGNvbnN0IGNoYXIqIGhlYXBOYW1lKQotICAgIDogbV9pbmRleGVkSGVhcCho
ZWFwLCBoZWFwTmFtZSwgMSkKK0Fic29sdXRlQWJzdHJhY3RIZWFwOjpBYnNvbHV0ZUFic3RyYWN0
SGVhcCgKKyAgICBMQ29udGV4dCBjb250ZXh0LCBBYnN0cmFjdEhlYXAqIGhlYXAsIGNvbnN0IGNo
YXIqIGhlYXBOYW1lKQorICAgIDogbV9pbmRleGVkSGVhcChjb250ZXh0LCBoZWFwLCBoZWFwTmFt
ZSwgMSkKIHsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFj
dEhlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3Ry
YWN0SGVhcC5oCShyZXZpc2lvbiAxNTA1MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNyArMTM5LDcgQEAgcHJp
dmF0ZToKIAogY2xhc3MgSW5kZXhlZEFic3RyYWN0SGVhcCB7CiBwdWJsaWM6Ci0gICAgSW5kZXhl
ZEFic3RyYWN0SGVhcChBYnN0cmFjdEhlYXAqIHBhcmVudCwgY29uc3QgY2hhciogaGVhcE5hbWUs
IHNpemVfdCBlbGVtZW50U2l6ZSk7CisgICAgSW5kZXhlZEFic3RyYWN0SGVhcChMQ29udGV4dCwg
QWJzdHJhY3RIZWFwKiBwYXJlbnQsIGNvbnN0IGNoYXIqIGhlYXBOYW1lLCBzaXplX3QgZWxlbWVu
dFNpemUpOwogICAgIH5JbmRleGVkQWJzdHJhY3RIZWFwKCk7CiAgICAgCiAgICAgY29uc3QgQWJz
dHJhY3RIZWFwJiBhdEFueUluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9oZWFwRm9yQW55SW5kZXg7
IH0KQEAgLTE5MCw3ICsxOTAsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBOdW1iZXJlZEFic3RyYWN0
SGVhcCB7CiBwdWJsaWM6Ci0gICAgTnVtYmVyZWRBYnN0cmFjdEhlYXAoQWJzdHJhY3RIZWFwKiBw
YXJlbnQsIGNvbnN0IGNoYXIqIGhlYXBOYW1lKTsKKyAgICBOdW1iZXJlZEFic3RyYWN0SGVhcChM
Q29udGV4dCwgQWJzdHJhY3RIZWFwKiBwYXJlbnQsIGNvbnN0IGNoYXIqIGhlYXBOYW1lKTsKICAg
ICB+TnVtYmVyZWRBYnN0cmFjdEhlYXAoKTsKICAgICAKICAgICBjb25zdCBBYnN0cmFjdEhlYXAm
IGF0QW55TnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9pbmRleGVkSGVhcC5hdEFueUluZGV4KCk7
IH0KQEAgLTIwNyw3ICsyMDcsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBBYnNvbHV0ZUFic3RyYWN0
SGVhcCB7CiBwdWJsaWM6Ci0gICAgQWJzb2x1dGVBYnN0cmFjdEhlYXAoQWJzdHJhY3RIZWFwKiBw
YXJlbnQsIGNvbnN0IGNoYXIqIGhlYXBOYW1lKTsKKyAgICBBYnNvbHV0ZUFic3RyYWN0SGVhcChM
Q29udGV4dCwgQWJzdHJhY3RIZWFwKiBwYXJlbnQsIGNvbnN0IGNoYXIqIGhlYXBOYW1lKTsKICAg
ICB+QWJzb2x1dGVBYnN0cmFjdEhlYXAoKTsKICAgICAKICAgICBjb25zdCBBYnN0cmFjdEhlYXAm
IGF0QW55QWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXhlZEhlYXAuYXRBbnlJbmRleCgp
OyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAJKHJldmlzaW9uIDE1MDUyMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDcgKzMyLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewog
Ci1BYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5KCkKK0Fic3Ry
YWN0SGVhcFJlcG9zaXRvcnk6OkFic3RyYWN0SGVhcFJlcG9zaXRvcnkoTENvbnRleHQgY29udGV4
dCkKICAgICA6IHJvb3QoMCwgImpzY1Jvb3QiKQogCiAjZGVmaW5lIEFCU1RSQUNUX0hFQVBfSU5J
VElBTElaQVRJT04obmFtZSkgLCBuYW1lKCZyb290LCAjbmFtZSkKQEAgLTQzLDE4ICs0MywxOSBA
QCBBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpBYnN0cmFjdEhlYXBSZXBvCiAgICAgRk9SX0VBQ0hf
QUJTVFJBQ1RfRklFTEQoQUJTVFJBQ1RfRklFTERfSU5JVElBTElaQVRJT04pCiAjdW5kZWYgQUJT
VFJBQ1RfRklFTERfSU5JVElBTElaQVRJT04KICAgICAKLSNkZWZpbmUgSU5ERVhFRF9BQlNUUkFD
VF9IRUFQX0lOSVRJQUxJWkFUSU9OKG5hbWUsIHNpemUpICwgbmFtZSgmcm9vdCwgI25hbWUsIHNp
emUpCisjZGVmaW5lIElOREVYRURfQUJTVFJBQ1RfSEVBUF9JTklUSUFMSVpBVElPTihuYW1lLCBz
aXplKSAsIG5hbWUoY29udGV4dCwgJnJvb3QsICNuYW1lLCBzaXplKQogICAgIEZPUl9FQUNIX0lO
REVYRURfQUJTVFJBQ1RfSEVBUChJTkRFWEVEX0FCU1RSQUNUX0hFQVBfSU5JVElBTElaQVRJT04p
CiAjdW5kZWYgSU5ERVhFRF9BQlNUUkFDVF9IRUFQX0lOSVRJQUxJWkFUSU9OCiAgICAgCi0jZGVm
aW5lIE5VTUJFUkVEX0FCU1RSQUNUX0hFQVBfSU5JVElBTElaQVRJT04obmFtZSkgLCBuYW1lKCZy
b290LCAjbmFtZSkKKyNkZWZpbmUgTlVNQkVSRURfQUJTVFJBQ1RfSEVBUF9JTklUSUFMSVpBVElP
TihuYW1lKSAsIG5hbWUoY29udGV4dCwgJnJvb3QsICNuYW1lKQogICAgIEZPUl9FQUNIX05VTUJF
UkVEX0FCU1RSQUNUX0hFQVAoTlVNQkVSRURfQUJTVFJBQ1RfSEVBUF9JTklUSUFMSVpBVElPTikK
ICN1bmRlZiBOVU1CRVJFRF9BQlNUUkFDVF9IRUFQX0lOSVRJQUxJWkFUSU9OCiAKLSAgICAsIGFi
c29sdXRlKCZyb290LCAiYWJzb2x1dGUiKQotICAgICwgbV90YmFhS2luZChtZEtpbmRJRCgidGJh
YSIpKQorICAgICwgYWJzb2x1dGUoY29udGV4dCwgJnJvb3QsICJhYnNvbHV0ZSIpCisgICAgLCBt
X2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1fdGJhYUtpbmQobWRLaW5kSUQobV9jb250ZXh0LCAi
dGJhYSIpKQogewotICAgIHJvb3QubV90YmFhTWV0YWRhdGEgPSBtZE5vZGUobWRTdHJpbmcocm9v
dC5tX2hlYXBOYW1lKSk7CisgICAgcm9vdC5tX3RiYWFNZXRhZGF0YSA9IG1kTm9kZShtX2NvbnRl
eHQsIG1kU3RyaW5nKG1fY29udGV4dCwgcm9vdC5tX2hlYXBOYW1lKSk7CiAgICAgCiAgICAgUkVM
RUFTRV9BU1NFUlQobV90YmFhS2luZCk7CiAgICAgUkVMRUFTRV9BU1NFUlQocm9vdC5tX3RiYWFN
ZXRhZGF0YSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAkocmV2aXNpb24gMTUwNTIyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTYxLDcgKzYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogY2xh
c3MgQWJzdHJhY3RIZWFwUmVwb3NpdG9yeSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeSk7CiBwdWJsaWM6Ci0gICAgQWJzdHJhY3RIZWFwUmVwb3NpdG9y
eSgpOworICAgIEFic3RyYWN0SGVhcFJlcG9zaXRvcnkoTENvbnRleHQpOwogICAgIH5BYnN0cmFj
dEhlYXBSZXBvc2l0b3J5KCk7CiAgICAgCiAgICAgQWJzdHJhY3RIZWFwIHJvb3Q7CkBAIC04Nyw2
ICs4Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIEFic3RyYWN0SGVh
cDsKICAgICAKKyAgICBMQ29udGV4dCBtX2NvbnRleHQ7CiAgICAgdW5zaWduZWQgbV90YmFhS2lu
ZDsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZh
bHVlcy5jcHAJKHJldmlzaW9uIDE1MDUyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ29tbW9uVmFsdWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTQgKzMwLDE0IEBACiAK
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIAotQ29tbW9uVmFsdWVzOjpDb21tb25W
YWx1ZXMoKQotICAgIDogdm9pZFR5cGUoRlRMOjp2b2lkVHlwZSgpKQotICAgICwgYm9vbGVhbihp
bnQxVHlwZSgpKQotICAgICwgaW50OChpbnQ4VHlwZSgpKQotICAgICwgaW50MzIoaW50MzJUeXBl
KCkpCi0gICAgLCBpbnQ2NChpbnQ2NFR5cGUoKSkKLSAgICAsIGludFB0cihpbnRQdHJUeXBlKCkp
Ci0gICAgLCBkb3VibGVUeXBlKEZUTDo6ZG91YmxlVHlwZSgpKQorQ29tbW9uVmFsdWVzOjpDb21t
b25WYWx1ZXMoTENvbnRleHQgY29udGV4dCkKKyAgICA6IHZvaWRUeXBlKEZUTDo6dm9pZFR5cGUo
Y29udGV4dCkpCisgICAgLCBib29sZWFuKGludDFUeXBlKGNvbnRleHQpKQorICAgICwgaW50OChp
bnQ4VHlwZShjb250ZXh0KSkKKyAgICAsIGludDMyKGludDMyVHlwZShjb250ZXh0KSkKKyAgICAs
IGludDY0KGludDY0VHlwZShjb250ZXh0KSkKKyAgICAsIGludFB0cihpbnRQdHJUeXBlKGNvbnRl
eHQpKQorICAgICwgZG91YmxlVHlwZShGVEw6OmRvdWJsZVR5cGUoY29udGV4dCkpCiAgICAgLCBy
ZWY4KHBvaW50ZXJUeXBlKGludDgpKQogICAgICwgcmVmMzIocG9pbnRlclR5cGUoaW50MzIpKQog
ICAgICwgcmVmNjQocG9pbnRlclR5cGUoaW50NjQpKQpAQCAtNTYsNiArNTYsNyBAQCBDb21tb25W
YWx1ZXM6OkNvbW1vblZhbHVlcygpCiAgICAgLCBpbnRQdHJFaWdodChjb25zdEludChpbnRQdHIs
IDgsIFNpZ25FeHRlbmQpKQogICAgICwgaW50UHRyUHRyKGNvbnN0SW50KGludFB0ciwgc2l6ZW9m
KHZvaWQqKSwgU2lnbkV4dGVuZCkpCiAgICAgLCBkb3VibGVaZXJvKGNvbnN0UmVhbChkb3VibGVU
eXBlLCAwKSkKKyAgICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9tb2R1bGUoMCkKIHsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAko
cmV2aXNpb24gMTUwNTIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25W
YWx1ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIEZUTCB7CiAKIGNsYXNzIENvbW1vblZhbHVlcyB7CiBwdWJsaWM6Ci0gICAgQ29t
bW9uVmFsdWVzKCk7CisgICAgQ29tbW9uVmFsdWVzKExDb250ZXh0IGNvbnRleHQpOwogICAgIAog
ICAgIHZvaWQgaW5pdGlhbGl6ZShMTW9kdWxlIG1vZHVsZSkKICAgICB7CkBAIC02OSw2ICs2OSw3
IEBAIHB1YmxpYzoKICAgICBjb25zdCBMVmFsdWUgaW50UHRyUHRyOwogICAgIGNvbnN0IExWYWx1
ZSBkb3VibGVaZXJvOwogICAgIAorICAgIExDb250ZXh0IGNvbnN0IG1fY29udGV4dDsKICAgICBM
TW9kdWxlIG1fbW9kdWxlOwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDb21waWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENvbXBpbGUuY3BwCShyZXZpc2lvbiAxNTA1MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbXBpbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRp
YyB1aW50OF90KiBtbUFsbG9jYXRlQ29kZVNlY3Rpb24oCiAgICAgCiAgICAgU3RhdGUmIHN0YXRl
ID0gKnN0YXRpY19jYXN0PFN0YXRlKj4ob3BhcXVlU3RhdGUpOwogICAgIAotICAgIEFTU0VSVChh
bGlnbm1lbnQgPD0gaml0QWxsb2NhdGlvbkdyYW51bGUpOworICAgIFJFTEVBU0VfQVNTRVJUKGFs
aWdubWVudCA8PSBqaXRBbGxvY2F0aW9uR3JhbnVsZSk7CiAgICAgCiAgICAgUmVmUHRyPEV4ZWN1
dGFibGVNZW1vcnlIYW5kbGU+IHJlc3VsdCA9CiAgICAgICAgIHN0YXRlLmdyYXBoLm1fdm0uZXhl
Y3V0YWJsZUFsbG9jYXRvci5hbGxvY2F0ZSgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMSW50cmluc2ljUmVwb3NpdG9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmNwcAkocmV2aXNpb24gMTUwNTIy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExJbnRyaW5zaWNSZXBvc2l0b3J5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAsOCArMzAsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEZUTCB7CiAKLUludHJpbnNpY1JlcG9zaXRvcnk6OkludHJpbnNpY1JlcG9zaXRvcnko
KQotICAgIDogQ29tbW9uVmFsdWVzKCkgLy8gQ2FsbCB0aGlzIGV4cGxpY2l0bHkgdG8gbWFrZSB0
aGUgZm9sbG93aW5nIG1hY3JvIG1hZ2ljIHdvcmsuCitJbnRyaW5zaWNSZXBvc2l0b3J5OjpJbnRy
aW5zaWNSZXBvc2l0b3J5KExDb250ZXh0IGNvbnRleHQpCisgICAgOiBDb21tb25WYWx1ZXMoY29u
dGV4dCkKICNkZWZpbmUgSU5UUklOU0lDX0lOSVRJQUxJWkFUSU9OKG91ck5hbWUsIGxsdm1OYW1l
LCB0eXBlKSAsIG1fIyNvdXJOYW1lKDApCiAgICAgRk9SX0VBQ0hfRlRMX0lOVFJJTlNJQyhJTlRS
SU5TSUNfSU5JVElBTElaQVRJT04pCiAjdW5kZWYgSU5UUklOU0lDX0lOSVRJQUxJWkFUSU9OCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9zaXRvcnkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEludHJpbnNpY1JlcG9z
aXRvcnkuaAkocmV2aXNpb24gMTUwNTIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExJbnRyaW5zaWNSZXBvc2l0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDEzICszNiwxMyBA
QAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogCiAjZGVmaW5lIEZPUl9FQUNIX0ZU
TF9JTlRSSU5TSUMobWFjcm8pIFwKLSAgICBtYWNybyhhZGRXaXRoT3ZlcmZsb3czMiwgImxsdm0u
c2FkZC53aXRoLm92ZXJmbG93LmkzMiIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKGludDMyLCBi
b29sZWFuKSwgaW50MzIsIGludDMyKSkgXAotICAgIG1hY3JvKHN1YldpdGhPdmVyZmxvdzMyLCAi
bGx2bS5zc3ViLndpdGgub3ZlcmZsb3cuaTMyIiwgZnVuY3Rpb25UeXBlKHN0cnVjdFR5cGUoaW50
MzIsIGJvb2xlYW4pLCBpbnQzMiwgaW50MzIpKSBcCi0gICAgbWFjcm8obXVsV2l0aE92ZXJmbG93
MzIsICJsbHZtLnNtdWwud2l0aC5vdmVyZmxvdy5pMzIiLCBmdW5jdGlvblR5cGUoc3RydWN0VHlw
ZShpbnQzMiwgYm9vbGVhbiksIGludDMyLCBpbnQzMikpCisgICAgbWFjcm8oYWRkV2l0aE92ZXJm
bG93MzIsICJsbHZtLnNhZGQud2l0aC5vdmVyZmxvdy5pMzIiLCBmdW5jdGlvblR5cGUoc3RydWN0
VHlwZShtX2NvbnRleHQsIGludDMyLCBib29sZWFuKSwgaW50MzIsIGludDMyKSkgXAorICAgIG1h
Y3JvKHN1YldpdGhPdmVyZmxvdzMyLCAibGx2bS5zc3ViLndpdGgub3ZlcmZsb3cuaTMyIiwgZnVu
Y3Rpb25UeXBlKHN0cnVjdFR5cGUobV9jb250ZXh0LCBpbnQzMiwgYm9vbGVhbiksIGludDMyLCBp
bnQzMikpIFwKKyAgICBtYWNybyhtdWxXaXRoT3ZlcmZsb3czMiwgImxsdm0uc211bC53aXRoLm92
ZXJmbG93LmkzMiIsIGZ1bmN0aW9uVHlwZShzdHJ1Y3RUeXBlKG1fY29udGV4dCwgaW50MzIsIGJv
b2xlYW4pLCBpbnQzMiwgaW50MzIpKQogCiBjbGFzcyBJbnRyaW5zaWNSZXBvc2l0b3J5IDogcHVi
bGljIENvbW1vblZhbHVlcyB7CiBwdWJsaWM6Ci0gICAgSW50cmluc2ljUmVwb3NpdG9yeSgpOwor
ICAgIEludHJpbnNpY1JlcG9zaXRvcnkoTENvbnRleHQpOwogICAgIAogI2RlZmluZSBJTlRSSU5T
SUNfR0VUVEVSKG91ck5hbWUsIGxsdm1OYW1lLCB0eXBlKSBcCiAgICAgTFZhbHVlIG91ck5hbWUj
I0ludHJpbnNpYygpIHsgICAgICAgICAgICAgICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCShyZXZpc2lvbiAxNTA1MjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTksNiArNTksOCBAQCBwdWJsaWM6CiAgICAgTG93ZXJERkdUb0xMVk0oU3Rh
dGUmIHN0YXRlKQogICAgICAgICA6IG1fZ3JhcGgoc3RhdGUuZ3JhcGgpCiAgICAgICAgICwgbV9m
dGxTdGF0ZShzdGF0ZSkKKyAgICAgICAgLCBtX2hlYXBzKHN0YXRlLmNvbnRleHQpCisgICAgICAg
ICwgbV9vdXQoc3RhdGUuY29udGV4dCkKICAgICAgICAgLCBtX2xvY2Fsc0Jvb2xlYW4oT3BlcmFu
ZHNMaWtlLCBzdGF0ZS5ncmFwaC5tX2Jsb2Nrc1swXS0+dmFyaWFibGVzQXRIZWFkKQogICAgICAg
ICAsIG1fbG9jYWxzMzIoT3BlcmFuZHNMaWtlLCBzdGF0ZS5ncmFwaC5tX2Jsb2Nrc1swXS0+dmFy
aWFibGVzQXRIZWFkKQogICAgICAgICAsIG1fbG9jYWxzNjQoT3BlcmFuZHNMaWtlLCBzdGF0ZS5n
cmFwaC5tX2Jsb2Nrc1swXS0+dmFyaWFibGVzQXRIZWFkKQpAQCAtNzMsNyArNzUsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBsb3dlcigpCiAgICAgewogICAgICAgICBDU3RyaW5nIG5hbWUgPSB0b0NT
dHJpbmcoY29kZUJsb2NrKCktPmhhc2goKSk7Ci0gICAgICAgIG1fZnRsU3RhdGUubW9kdWxlID0g
TExWTU1vZHVsZUNyZWF0ZVdpdGhOYW1lKG5hbWUuZGF0YSgpKTsKKyAgICAgICAgbV9mdGxTdGF0
ZS5tb2R1bGUgPQorICAgICAgICAgICAgTExWTU1vZHVsZUNyZWF0ZVdpdGhOYW1lSW5Db250ZXh0
KG5hbWUuZGF0YSgpLCBtX2Z0bFN0YXRlLmNvbnRleHQpOwogICAgICAgICAKICAgICAgICAgbV9m
dGxTdGF0ZS5mdW5jdGlvbiA9IGFkZEZ1bmN0aW9uKAogICAgICAgICAgICAgbV9mdGxTdGF0ZS5t
b2R1bGUsIG5hbWUuZGF0YSgpLCBmdW5jdGlvblR5cGUobV9vdXQuaW50NjQsIG1fb3V0LmludFB0
cikpOwpAQCAtODEsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgICAgICBtX291dC5p
bml0aWFsaXplKG1fZnRsU3RhdGUubW9kdWxlLCBtX2Z0bFN0YXRlLmZ1bmN0aW9uLCBtX2hlYXBz
KTsKICAgICAgICAgCi0gICAgICAgIG1fcHJvbG9ndWUgPSBhcHBlbmRCYXNpY0Jsb2NrKG1fZnRs
U3RhdGUuZnVuY3Rpb24pOworICAgICAgICBtX3Byb2xvZ3VlID0gYXBwZW5kQmFzaWNCbG9jayht
X2Z0bFN0YXRlLmNvbnRleHQsIG1fZnRsU3RhdGUuZnVuY3Rpb24pOwogICAgICAgICBtX291dC5h
cHBlbmRUbyhtX3Byb2xvZ3VlKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IG1fbG9j
YWxzQm9vbGVhbi5zaXplKCk7IGluZGV4LS07KSB7CiAgICAgICAgICAgICBtX2xvY2Fsc0Jvb2xl
YW5baW5kZXhdID0gYnVpbGRBbGxvY2EobV9vdXQubV9idWlsZGVyLCBtX291dC5ib29sZWFuKTsK
QEAgLTkwLDggKzkzLDggQEAgcHVibGljOgogICAgICAgICAgICAgbV9sb2NhbHNEb3VibGVbaW5k
ZXhdID0gYnVpbGRBbGxvY2EobV9vdXQubV9idWlsZGVyLCBtX291dC5kb3VibGVUeXBlKTsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9pbml0aWFsaXphdGlvbiA9IGFwcGVuZEJhc2lj
QmxvY2sobV9mdGxTdGF0ZS5mdW5jdGlvbik7Ci0gICAgICAgIG1fYXJndW1lbnRDaGVja3MgPSBh
cHBlbmRCYXNpY0Jsb2NrKG1fZnRsU3RhdGUuZnVuY3Rpb24pOworICAgICAgICBtX2luaXRpYWxp
emF0aW9uID0gYXBwZW5kQmFzaWNCbG9jayhtX2Z0bFN0YXRlLmNvbnRleHQsIG1fZnRsU3RhdGUu
ZnVuY3Rpb24pOworICAgICAgICBtX2FyZ3VtZW50Q2hlY2tzID0gYXBwZW5kQmFzaWNCbG9jayht
X2Z0bFN0YXRlLmNvbnRleHQsIG1fZnRsU3RhdGUuZnVuY3Rpb24pOwogCiAgICAgICAgIG1fY2Fs
bEZyYW1lID0gbV9vdXQucGFyYW0oMCk7CiAgICAgICAgIG1fdGFnVHlwZU51bWJlciA9IG1fb3V0
LmNvbnN0SW50NjQoVGFnVHlwZU51bWJlcik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTE91dHB1dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPdXRwdXQuY3BwCShyZXZpc2lvbiAxNTA1MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTE91dHB1dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCwxMSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAKLU91dHB1dDo6T3V0cHV0KCkKLSAg
ICA6IG1fZnVuY3Rpb24oMCkKK091dHB1dDo6T3V0cHV0KExDb250ZXh0IGNvbnRleHQpCisgICAg
OiBJbnRyaW5zaWNSZXBvc2l0b3J5KGNvbnRleHQpCisgICAgLCBtX2Z1bmN0aW9uKDApCiAgICAg
LCBtX2hlYXBzKDApCi0gICAgLCBtX2J1aWxkZXIoTExWTUNyZWF0ZUJ1aWxkZXIoKSkKKyAgICAs
IG1fYnVpbGRlcihMTFZNQ3JlYXRlQnVpbGRlckluQ29udGV4dChtX2NvbnRleHQpKQogICAgICwg
bV9ibG9jaygwKQogICAgICwgbV9uZXh0QmxvY2soMCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMT3V0cHV0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExPdXRwdXQuaAkocmV2aXNpb24gMTUwNTIyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExPdXRwdXQuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQCBl
bnVtIFNjYWxlIHsgU2NhbGVPbmUsIFNjYWxlVHdvLCBTY2FsZUZvCiAKIGNsYXNzIE91dHB1dCA6
IHB1YmxpYyBJbnRyaW5zaWNSZXBvc2l0b3J5IHsKIHB1YmxpYzoKLSAgICBPdXRwdXQoKTsKKyAg
ICBPdXRwdXQoTENvbnRleHQpOwogICAgIH5PdXRwdXQoKTsKICAgICAKICAgICB2b2lkIGluaXRp
YWxpemUoTE1vZHVsZSBtb2R1bGUsIExWYWx1ZSBmdW5jdGlvbiwgQWJzdHJhY3RIZWFwUmVwb3Np
dG9yeSYgaGVhcHMpCkBAIC05OSw4ICs5OSw4IEBAIHB1YmxpYzoKICAgICBMQmFzaWNCbG9jayBu
ZXdCbG9jayhjb25zdCBjaGFyKiBuYW1lID0gIiIpCiAgICAgewogICAgICAgICBpZiAoIW1fbmV4
dEJsb2NrKQotICAgICAgICAgICAgcmV0dXJuIGFwcGVuZEJhc2ljQmxvY2sobV9mdW5jdGlvbiwg
bmFtZSk7Ci0gICAgICAgIHJldHVybiBpbnNlcnRCYXNpY0Jsb2NrKG1fbmV4dEJsb2NrLCBuYW1l
KTsKKyAgICAgICAgICAgIHJldHVybiBhcHBlbmRCYXNpY0Jsb2NrKG1fY29udGV4dCwgbV9mdW5j
dGlvbiwgbmFtZSk7CisgICAgICAgIHJldHVybiBpbnNlcnRCYXNpY0Jsb2NrKG1fY29udGV4dCwg
bV9uZXh0QmxvY2ssIG5hbWUpOwogICAgIH0KICAgICAKICAgICBMVmFsdWUgcGFyYW0odW5zaWdu
ZWQgaW5kZXgpIHsgcmV0dXJuIGdldFBhcmFtKG1fZnVuY3Rpb24sIGluZGV4KTsgfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5jcHAJKHJldmlzaW9uIDE1MDUyMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNyw3IEBAIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAKIFN0YXRlOjpTdGF0ZShHcmFw
aCYgZ3JhcGgpCiAgICAgOiBncmFwaChncmFwaCkKKyAgICAsIGNvbnRleHQoTExWTUNvbnRleHRD
cmVhdGUoKSkKICAgICAsIG1vZHVsZSgwKQogICAgICwgZnVuY3Rpb24oMCkKICAgICAsIGppdENv
ZGUoYWRvcHRSZWYobmV3IEpJVENvZGUoKSkpCkBAIC00Niw2ICs0NywxMSBAQCBTdGF0ZTo6U3Rh
dGUoR3JhcGgmIGdyYXBoKQogICAgIGdyYXBoLm1fcGxhbi5maW5hbGl6ZXIgPSBhZG9wdFB0cihm
aW5hbGl6ZXIpOwogfQogCitTdGF0ZTo6flN0YXRlKCkKK3sKKyAgICBMTFZNQ29udGV4dERpc3Bv
c2UoY29udGV4dCk7Cit9CisKIHZvaWQgU3RhdGU6OmR1bXBTdGF0ZShjb25zdCBjaGFyKiB3aGVu
KQogewogICAgIGRhdGFMb2coIkxMVk0gSVIgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKGdy
YXBoLm1fY29kZUJsb2NrLCBGVEw6OkpJVENvZGU6OkZUTEpJVCksICIgIiwgd2hlbiwgIjpcbiIp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMU3RhdGUuaAkocmV2aXNpb24gMTUwNTIy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExTdGF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00NSwxMCArNDUsMTIgQEAgY2xhc3MgU3RhdGUgewogICAgIAogcHVibGljOgogICAgIFN0
YXRlKERGRzo6R3JhcGgmIGdyYXBoKTsKKyAgICB+U3RhdGUoKTsKICAgICAKICAgICAvLyBOb25l
IG9mIHRoZXNlIHRoaW5ncyBpcyBvd25lZCBieSBTdGF0ZS4gSXQgaXMgdGhlIHJlc3BvbnNpYmls
aXR5IG9mCiAgICAgLy8gRlRMIHBoYXNlcyB0byBwcm9wZXJseSBtYW5hZ2UgdGhlIGxpZmVjeWNs
ZSBvZiB0aGUgbW9kdWxlIGFuZCBmdW5jdGlvbi4KICAgICBERkc6OkdyYXBoJiBncmFwaDsKKyAg
ICBMQ29udGV4dCBjb250ZXh0OwogICAgIExNb2R1bGUgbW9kdWxlOwogICAgIExWYWx1ZSBmdW5j
dGlvbjsKICAgICBSZWZQdHI8SklUQ29kZT4gaml0Q29kZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDE1MDUyMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB2KGJvb2wsIHZhbGlkYXRlR3JhcGhBdEVhY2hQaGFz
ZSwgZmFsc2UpIFwKICAgICB2KGJvb2wsIHZlcmJvc2VPU1IsIGZhbHNlKSBcCiAgICAgdihib29s
LCB2ZXJib3NlQ29tcGlsYXRpb25RdWV1ZSwgZmFsc2UpIFwKKyAgICB2KGJvb2wsIHJlcG9ydENv
bXBpbGVUaW1lcywgZmFsc2UpIFwKICAgICBcCiAgICAgdihib29sLCB1c2VFeHBlcmltZW50YWxG
VEwsIGZhbHNlKSBcCiAgICAgdihib29sLCB1c2VGVExUQkFBLCB0cnVlKSBcCg==
</data>
<flag name="review"
          id="224004"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>