<?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>105401</bug_id>
          
          <creation_ts>2012-12-19 01:06:03 -0800</creation_ts>
          <short_desc>DFG speculation checks that take JumpList should consolidate OSRExits</short_desc>
          <delta_ts>2012-12-20 11:16:07 -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>105400</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>794430</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-19 01:06:03 -0800</bug_when>
    <thetext>This will save both code and data structure overhead.  It might also speed up compilation.  And it will make it easier to emit a speculation check without yet knowing how many jumps it will have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>794432</commentid>
    <comment_count>1</comment_count>
      <attachid>180115</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-19 01:12:58 -0800</bug_when>
    <thetext>Created attachment 180115
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795213</commentid>
    <comment_count>2</comment_count>
      <attachid>180284</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-19 23:08:34 -0800</bug_when>
    <thetext>Created attachment 180284
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795221</commentid>
    <comment_count>3</comment_count>
      <attachid>180286</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-19 23:35:24 -0800</bug_when>
    <thetext>Created attachment 180286
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795590</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-20 11:16:07 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/138276</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180115</attachid>
            <date>2012-12-19 01:12:58 -0800</date>
            <delta_ts>2012-12-19 23:08:34 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>multiexit.patch</filename>
            <type>text/plain</type>
            <size>16549</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4MTMwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEyLTEyLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNwZWN1bGF0aW9uIGNoZWNrcyB0aGF0IHRha2UgSnVtcExpc3Qgc2hvdWxkIGNvbnNvbGlk
YXRlIE9TUkV4aXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDU0MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXb3JrIGluIHByb2dyZXNzLgorCisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEp1bXBMaXN0KToKKyAgICAgICAgKiBkZmcvREZHSklU
Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rT1NSRXhp
dHMpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBk
ZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29tcGlsZXI6OmFwcGVuZEV4aXRJbmZvKToKKyAgICAgICAgKEpJVENvbXBpbGVyKToKKyAg
ICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oOgorICAgICAgICAoT1NSRXhp
dENvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRTcGVjdWxhdGlvbkNo
ZWNrKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6UHJvZmlsZXI6OkNvbXBpbGF0aW9uOjphZGRPU1JFeGl0U2l0ZSk6CisgICAgICAg
ICogcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oOgorICAgICAgICAoQ29tcGlsYXRpb24p
OgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdFNpdGUuY3BwOgorICAgICAgICAo
SlNDOjpQcm9maWxlcjo6T1NSRXhpdFNpdGU6OnRvSlMpOgorICAgICAgICAqIHByb2ZpbGVyL1By
b2ZpbGVyT1NSRXhpdFNpdGUuaDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6Ok9TUkV4aXRTaXRl
OjpPU1JFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpPU1JFeGl0U2l0ZTo6Y29k
ZUFkZHJlc3MpOgorICAgICAgICAoT1NSRXhpdFNpdGUpOgorCiAyMDEyLTEyLTE4ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgUHJveGllcyBzaG91bGQgc2V0IElu
dGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2Vt
Ymxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMzgxMjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNTkyLDcgKzU5Miw3IEBAIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIExpbmtC
dWZmZXI7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgVmVjdG9yPEp1bXAsIDE2PiBK
dW1wVmVjdG9yOworICAgICAgICB0eXBlZGVmIFZlY3RvcjxKdW1wLCAyPiBKdW1wVmVjdG9yOwog
ICAgICAgICAKICAgICAgICAgSnVtcExpc3QoKSB7IH0KICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTM4MTI0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDE5ICs1NSwyMyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rT1NSRXhp
dHMoKQogICAgIGlmIChtX2dyYXBoLm1fY29tcGlsYXRpb24pIHsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGNvZGVCbG9jaygpLT5udW1iZXJPZk9TUkV4aXRzKCk7ICsraSkgewog
ICAgICAgICAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5vc3JFeGl0KGkpOwotICAg
ICAgICAgICAgaWYgKGV4aXQubV93YXRjaHBvaW50SW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKQotICAgICAgICAgICAgICAgIG1fZXhpdFNpdGVMYWJlbHMuYXBw
ZW5kKG1fZXhpdENvbXBpbGF0aW9uSW5mb1tpXS5mYWlsdXJlSnVtcCgpLmxhYmVsKCkpOwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1fZXhpdFNpdGVMYWJlbHMuYXBwZW5kKGNv
ZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpLnNvdXJjZUxhYmVs
KCkpOworICAgICAgICAgICAgVmVjdG9yPExhYmVsPiBsYWJlbHM7CisgICAgICAgICAgICBpZiAo
ZXhpdC5tX3dhdGNocG9pbnRJbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpIHsKKyAgICAgICAgICAgICAgICBPU1JFeGl0Q29tcGlsYXRpb25JbmZvJiBpbmZvID0g
bV9leGl0Q29tcGlsYXRpb25JbmZvW2ldOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aiA9IDA7IGogPCBpbmZvLm1fZmFpbHVyZUp1bXBzLmp1bXBzKCkuc2l6ZSgpOyArK2opCisgICAg
ICAgICAgICAgICAgICAgIGxhYmVscy5hcHBlbmQoaW5mby5tX2ZhaWx1cmVKdW1wcy5qdW1wcygp
W2pdLmxhYmVsKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbGFiZWxz
LmFwcGVuZChjb2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KS5z
b3VyY2VMYWJlbCgpKTsKKyAgICAgICAgICAgIG1fZXhpdFNpdGVMYWJlbHMuYXBwZW5kKGxhYmVs
cyk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvZGVCbG9jaygpLT5udW1iZXJPZk9TUkV4aXRzKCk7ICsraSkgewogICAgICAgICBPU1JFeGl0
JiBleGl0ID0gY29kZUJsb2NrKCktPm9zckV4aXQoaSk7Ci0gICAgICAgIEp1bXAmIGZhaWx1cmVK
dW1wID0gbV9leGl0Q29tcGlsYXRpb25JbmZvW2ldLmZhaWx1cmVKdW1wKCk7Ci0gICAgICAgIEFT
U0VSVCghZmFpbHVyZUp1bXAuaXNTZXQoKSA9PSAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCAhPSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKKyAgICAgICAgSnVtcExpc3Qm
IGZhaWx1cmVKdW1wcyA9IG1fZXhpdENvbXBpbGF0aW9uSW5mb1tpXS5tX2ZhaWx1cmVKdW1wczsK
KyAgICAgICAgQVNTRVJUKGZhaWx1cmVKdW1wcy5lbXB0eSgpID09IChleGl0Lm1fd2F0Y2hwb2lu
dEluZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOwogICAgICAg
ICBpZiAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2ln
bmVkPjo6bWF4KCkpCi0gICAgICAgICAgICBmYWlsdXJlSnVtcC5saW5rKHRoaXMpOworICAgICAg
ICAgICAgZmFpbHVyZUp1bXBzLmxpbmsodGhpcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IGNvZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpLnNldERlc3Rp
bmF0aW9uKGxhYmVsKCkpOwogICAgICAgICBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwpA
QCAtMjIxLDggKzIyNSwxMSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxp
bmtCCiAgICAgaWYgKG1fZ3JhcGgubV9jb21waWxhdGlvbikgewogICAgICAgICBBU1NFUlQobV9l
eGl0U2l0ZUxhYmVscy5zaXplKCkgPT0gY29kZUJsb2NrKCktPm51bWJlck9mT1NSRXhpdHMoKSk7
CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2V4aXRTaXRlTGFiZWxzLnNpemUo
KTsgKytpKSB7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fY29tcGlsYXRpb24tPmFkZE9TUkV4aXRT
aXRlKAotICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2V4aXRTaXRlTGFi
ZWxzW2ldKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgIFZlY3RvcjxMYWJlbD4m
IGxhYmVscyA9IG1fZXhpdFNpdGVMYWJlbHNbaV07CisgICAgICAgICAgICBWZWN0b3I8Y29uc3Qg
dm9pZCo+IGFkZHJlc3NlczsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBs
YWJlbHMuc2l6ZSgpOyArK2opCisgICAgICAgICAgICAgICAgYWRkcmVzc2VzLmFwcGVuZChsaW5r
QnVmZmVyLmxvY2F0aW9uT2YobGFiZWxzW2pdKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAg
ICAgICAgIG1fZ3JhcGgubV9jb21waWxhdGlvbi0+YWRkT1NSRXhpdFNpdGUoYWRkcmVzc2VzKTsK
ICAgICAgICAgfQogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlQoIW1fZXhpdFNpdGVMYWJlbHMu
c2l6ZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVy
LmgJKHJldmlzaW9uIDEzODEyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklU
Q29tcGlsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBuYW1lc3BhY2UgREZH
IHsKIAogY2xhc3MgSklUQ29kZUdlbmVyYXRvcjsKIGNsYXNzIE5vZGVUb1JlZ2lzdGVyTWFwOwor
Y2xhc3MgT1NSRXhpdEp1bXBQbGFjZWhvbGRlcjsKIGNsYXNzIFNsb3dQYXRoR2VuZXJhdG9yOwog
Y2xhc3MgU3BlY3VsYXRpdmVKSVQ7CiBjbGFzcyBTcGVjdWxhdGlvblJlY292ZXJ5OwpAQCAtMzQ0
LDcgKzM0NSwxMiBAQCBwdWJsaWM6CiAgICAgU3BlY3VsYXRlZFR5cGUgZ2V0U3BlY3VsYXRpb24o
Tm9kZUluZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gZ2V0U3BlY3VsYXRpb24oZ3JhcGgoKVtub2Rl
SW5kZXhdKTsgfQogICAgIFNwZWN1bGF0ZWRUeXBlIGdldFNwZWN1bGF0aW9uKEVkZ2Ugbm9kZVVz
ZSkgeyByZXR1cm4gZ2V0U3BlY3VsYXRpb24obm9kZVVzZS5pbmRleCgpKTsgfQogCi0gICAgdm9p
ZCBhcHBlbmRFeGl0SnVtcChNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsKSB7IG1fZXhp
dENvbXBpbGF0aW9uSW5mby5hcHBlbmQoT1NSRXhpdENvbXBpbGF0aW9uSW5mbyhqdW1wVG9GYWls
KSk7IH0KKyAgICB2b2lkIGFwcGVuZEV4aXRJbmZvKE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBq
dW1wc1RvRmFpbCA9IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCgpKQorICAgIHsKKyAgICAgICAg
T1NSRXhpdENvbXBpbGF0aW9uSW5mbyBpbmZvOworICAgICAgICBpbmZvLm1fZmFpbHVyZUp1bXBz
ID0ganVtcHNUb0ZhaWw7CisgICAgICAgIG1fZXhpdENvbXBpbGF0aW9uSW5mby5hcHBlbmQoaW5m
byk7CisgICAgfQogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2b2lkKiBhZGRyZXNzT2ZE
b3VibGVDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KQpAQCAtNDIzLDYgKzQyOSw4IEBAIHB1
YmxpYzoKICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE9TUkV4aXRKdW1wUGxh
Y2Vob2xkZXI7CisgICAgCiAgICAgLy8gSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gdG8gY29tcGls
ZS4KICAgICB2b2lkIGNvbXBpbGVFbnRyeSgpOwogICAgIHZvaWQgY29tcGlsZUJvZHkoU3BlY3Vs
YXRpdmVKSVQmKTsKQEAgLTQ2NCw3ICs0NzIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxQcm9w
ZXJ0eUFjY2Vzc1JlY29yZCwgND4gbV9wcm9wZXJ0eUFjY2Vzc2VzOwogICAgIFZlY3RvcjxKU0Nh
bGxSZWNvcmQsIDQ+IG1fanNDYWxsczsKICAgICBWZWN0b3I8T1NSRXhpdENvbXBpbGF0aW9uSW5m
bz4gbV9leGl0Q29tcGlsYXRpb25JbmZvOwotICAgIFZlY3RvcjxMYWJlbD4gbV9leGl0U2l0ZUxh
YmVsczsKKyAgICBWZWN0b3I8VmVjdG9yPExhYmVsPiA+IG1fZXhpdFNpdGVMYWJlbHM7CiAgICAg
dW5zaWduZWQgbV9jdXJyZW50Q29kZU9yaWdpbkluZGV4OwogfTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmgJ
KHJldmlzaW9uIDEzODEyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGF0aW9uSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNyArMzYsOCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIE9TUkV4aXRDb21waWxhdGlv
bkluZm8gewotcHVibGljOgotICAgIE9TUkV4aXRDb21waWxhdGlvbkluZm8oTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgZmFpbHVyZUp1bXApCi0gICAgICAgIDogbV9mYWlsdXJlSnVtcChmYWlsdXJlSnVt
cCkKLSAgICB7Ci0gICAgfQotCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAmIGZhaWx1cmVKdW1w
KCkgeyByZXR1cm4gbV9mYWlsdXJlSnVtcDsgfQotCi1wcml2YXRlOgotICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIG1fZmFpbHVyZUp1bXA7CitzdHJ1Y3QgT1NSRXhpdENvbXBpbGF0aW9uSW5mbyB7
CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IG1fZmFpbHVyZUp1bXBzOwogfTsKIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDEzODEyNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDksNyArMTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhF
eAogICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChh
dChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMp
OwotICAgIG1faml0LmFwcGVuZEV4aXRKdW1wKGp1bXBUb0ZhaWwpOworICAgIG1faml0LmFwcGVu
ZEV4aXRJbmZvKGp1bXBUb0ZhaWwpOwogICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JF
eGl0KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS5tZXRob2RPZkdl
dHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIHRoaXMsIG1fc3RyZWFtLT5zaXplKCkp
KTsKIH0KIApAQCAtMTIxLDEwICsxMjEsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRpb25DaGVjayhFeAogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKEV4
aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4IG5vZGVJ
bmRleCwgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wc1RvRmFpbCkKIHsKKyAg
ICBpZiAoIW1fY29tcGlsZU9rYXkpCisgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoYXQobV9j
b21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKLSAg
ICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXAsIDE2PiBqdW1wVmVjdG9yID0ganVtcHNUb0Zh
aWwuanVtcHMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwganVtcFZlY3Rvci5zaXpl
KCk7ICsraSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291cmNlLCBu
b2RlSW5kZXgsIGp1bXBWZWN0b3JbaV0pOworICAgIG1faml0LmFwcGVuZEV4aXRJbmZvKGp1bXBz
VG9GYWlsKTsKKyAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtp
bmQsIGpzVmFsdWVTb3VyY2UsIG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJv
ZmlsZUZvcihub2RlSW5kZXgpLCB0aGlzLCBtX3N0cmVhbS0+c2l6ZSgpKSk7CiB9CiAKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNv
dXJjZSBqc1ZhbHVlU291cmNlLCBFZGdlIG5vZGVVc2UsIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpK
dW1wTGlzdCYganVtcHNUb0ZhaWwpCkBAIC0xMzksNyArMTQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeAogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKGF0
KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7
CiAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkocmVjb3Zl
cnkpOwotICAgIG1faml0LmFwcGVuZEV4aXRKdW1wKGp1bXBUb0ZhaWwpOworICAgIG1faml0LmFw
cGVuZEV4aXRJbmZvKGp1bXBUb0ZhaWwpOwogICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRP
U1JFeGl0KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS5tZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIHRoaXMsIG1fc3RyZWFtLT5zaXpl
KCksIG1faml0LmNvZGVCbG9jaygpLT5udW1iZXJPZlNwZWN1bGF0aW9uUmVjb3ZlcmllcygpKSk7
CiB9CiAKQEAgLTE2MSw3ICsxNjIsNyBAQCBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50KiBTcGVj
dWxhdGl2ZUpJCiAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICByZXR1cm4gMDsKICAg
ICBBU1NFUlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1
bWVudFR5cGVzKTsKLSAgICBtX2ppdC5hcHBlbmRFeGl0SnVtcChKSVRDb21waWxlcjo6SnVtcCgp
KTsKKyAgICBtX2ppdC5hcHBlbmRFeGl0SW5mbyhKSVRDb21waWxlcjo6SnVtcCgpKTsKICAgICBP
U1JFeGl0JiBleGl0ID0gbV9qaXQuY29kZUJsb2NrKCktPm9zckV4aXQoCiAgICAgICAgIG1faml0
LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0KAogICAgICAgICAgICAgT1NSRXhpdChraW5kLCBq
c1ZhbHVlU291cmNlLApAQCAtMjcwLDkgKzI3MSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmZv
cndhcmRTcGVjdWxhdGlvbkMKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRTcGVjdWxhdGlv
bkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZUlu
ZGV4IG5vZGVJbmRleCwgY29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wc1RvRmFp
bCwgY29uc3QgVmFsdWVSZWNvdmVyeSYgdmFsdWVSZWNvdmVyeSkKIHsKICAgICBBU1NFUlQoYXQo
bV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsK
LSAgICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXAsIDE2PiBqdW1wVmVjdG9yID0ganVtcHNU
b0ZhaWwuanVtcHMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwganVtcFZlY3Rvci5z
aXplKCk7ICsraSkKLSAgICAgICAgZm9yd2FyZFNwZWN1bGF0aW9uQ2hlY2soa2luZCwganNWYWx1
ZVNvdXJjZSwgbm9kZUluZGV4LCBqdW1wVmVjdG9yW2ldLCB2YWx1ZVJlY292ZXJ5KTsKKyAgICBz
cGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVJbmRleCwganVtcHNUb0Zh
aWwpOworICAgIGNvbnZlcnRMYXN0T1NSRXhpdFRvRm9yd2FyZCh2YWx1ZVJlY292ZXJ5KTsKIH0K
IAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBK
U1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2RlSW5kZXgsIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIFNwZWN1bGF0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJDb21waWxhdGlvbi5jcHAJKHJldmlzaW9uIDEzODEyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzQsOSArNzQsOSBAQCBFeGVjdXRpb25Db3VudGVyKiBDb21waWxhdGlvbjo6ZXhlY3V0aW9uCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDb21waWxhdGlvbjo6YWRkT1NSRXhpdFNpdGUo
Y29uc3Qgdm9pZCogY29kZUFkZHJlc3MpCit2b2lkIENvbXBpbGF0aW9uOjphZGRPU1JFeGl0U2l0
ZShjb25zdCBWZWN0b3I8Y29uc3Qgdm9pZCo+JiBjb2RlQWRkcmVzc2VzKQogewotICAgIG1fb3Ny
RXhpdFNpdGVzLmFwcGVuZChPU1JFeGl0U2l0ZShjb2RlQWRkcmVzcykpOworICAgIG1fb3NyRXhp
dFNpdGVzLmFwcGVuZChPU1JFeGl0U2l0ZShjb2RlQWRkcmVzc2VzKSk7CiB9CiAKIE9TUkV4aXQq
IENvbXBpbGF0aW9uOjphZGRPU1JFeGl0KHVuc2lnbmVkIGlkLCBjb25zdCBPcmlnaW5TdGFjayYg
b3JpZ2luU3RhY2ssIEV4aXRLaW5kIGV4aXRLaW5kLCBib29sIGlzV2F0Y2hwb2ludCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGls
YXRpb24uaAkocmV2aXNpb24gMTM4MTI0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBhZGREZXNjcmlwdGlvbihjb25zdCBDb21waWxlZEJ5
dGVjb2RlJik7CiAgICAgRXhlY3V0aW9uQ291bnRlciogZXhlY3V0aW9uQ291bnRlckZvcihjb25z
dCBPcmlnaW5TdGFjayYpOwotICAgIHZvaWQgYWRkT1NSRXhpdFNpdGUoY29uc3Qgdm9pZCogY29k
ZUFkZHJlc3MpOworICAgIHZvaWQgYWRkT1NSRXhpdFNpdGUoY29uc3QgVmVjdG9yPGNvbnN0IHZv
aWQqPiYgY29kZUFkZHJlc3Nlcyk7CiAgICAgT1NSRXhpdCogYWRkT1NSRXhpdCh1bnNpZ25lZCBp
ZCwgY29uc3QgT3JpZ2luU3RhY2smLCBFeGl0S2luZCwgYm9vbCBpc1dhdGNocG9pbnQpOwogICAg
IAogICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXRTaXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0U2l0ZS5jcHAJ
KHJldmlzaW9uIDEzODEyNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlck9TUkV4aXRTaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb2ZpbGVyT1NSRXhpdFNpdGUuaCIKIAorI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTY29wZS5oIgogI2luY2x1ZGUg
IkpTU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CkBAIC0zNCw3
ICszNSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKIAogSlNWYWx1
ZSBPU1JFeGl0U2l0ZTo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGpzU3RyaW5nKGV4ZWMsIHRvU3RyaW5nKFJhd1BvaW50ZXIobV9jb2RlQWRkcmVzcykpKTsKKyAg
ICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NvZGVBZGRyZXNzZXMuc2l6ZSgpOyArK2kpCisgICAg
ICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwganNTdHJpbmcoZXhlYywgdG9TdHJp
bmcoUmF3UG9pbnRlcihtX2NvZGVBZGRyZXNzZXNbaV0pKSkpOworICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpQcm9maWxlcgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdFNpdGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0U2l0ZS5oCShyZXZp
c2lvbiAxMzgxMjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJP
U1JFeGl0U2l0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMiArMjcsMjMgQEAKICNkZWZpbmUg
UHJvZmlsZXJPU1JFeGl0U2l0ZV9oCiAKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKIAog
Y2xhc3MgT1NSRXhpdFNpdGUgewogcHVibGljOgotICAgIGV4cGxpY2l0IE9TUkV4aXRTaXRlKGNv
bnN0IHZvaWQqIGNvZGVBZGRyZXNzKQotICAgICAgICA6IG1fY29kZUFkZHJlc3MoY29kZUFkZHJl
c3MpCisgICAgZXhwbGljaXQgT1NSRXhpdFNpdGUoY29uc3QgVmVjdG9yPGNvbnN0IHZvaWQqPiYg
Y29kZUFkZHJlc3NlcykKKyAgICAgICAgOiBtX2NvZGVBZGRyZXNzZXMoY29kZUFkZHJlc3NlcykK
ICAgICB7CiAgICAgfQogICAgIAotICAgIGNvbnN0IHZvaWQqIGNvZGVBZGRyZXNzKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlQWRkcmVzczsgfQorICAgIGNvbnN0IFZlY3Rvcjxjb25zdCB2b2lkKj4m
IGNvZGVBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQWRkcmVzc2VzOyB9CiAgICAgCiAg
ICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGNvbnN0
IHZvaWQqIG1fY29kZUFkZHJlc3M7CisgICAgVmVjdG9yPGNvbnN0IHZvaWQqPiBtX2NvZGVBZGRy
ZXNzZXM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UHJvZmlsZXIKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzODEz
MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDEyLTEyLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgREZH
IHNwZWN1bGF0aW9uIGNoZWNrcyB0aGF0IHRha2UgSnVtcExpc3Qgc2hvdWxkIGNvbnNvbGlkYXRl
IE9TUkV4aXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDU0MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgdGhlIHByb2ZpbGVyIHRvIHVuZGVyc3RhbmQgdGhhdCBhbiBPU1IgZXhpdCBtYXkg
aGF2ZSBtdWx0aXBsZQorICAgICAgICBjYW5kaWRhdGUgZXhpdCBzaXRlcy4KKworICAgICAgICAq
IFNjcmlwdHMvZGlzcGxheS1wcm9maWxlci1vdXRwdXQ6CisKIDIwMTItMTItMTggIElseWEgVGlr
aG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJv
bGxpbmcgb3V0IHIxMzgwNjEuCkluZGV4OiBUb29scy9TY3JpcHRzL2Rpc3BsYXktcHJvZmlsZXIt
b3V0cHV0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvZGlzcGxheS1wcm9maWxlci1vdXRw
dXQJKHJldmlzaW9uIDEzODEyNCkKKysrIFRvb2xzL1NjcmlwdHMvZGlzcGxheS1wcm9maWxlci1v
dXRwdXQJKHdvcmtpbmcgY29weSkKQEAgLTMwOCwxMiArMzA4LDEyIEBAIGNsYXNzIEV4ZWN1dGlv
bkNvdW50ZXIKIGVuZAogCiBjbGFzcyBPU1JFeGl0Ci0gICAgYXR0cl9yZWFkZXIgOmNvbXBpbGF0
aW9uLCA6b3JpZ2luLCA6Y29kZUFkZHJlc3MsIDpleGl0S2luZCwgOmlzV2F0Y2hwb2ludCwgOmNv
dW50CisgICAgYXR0cl9yZWFkZXIgOmNvbXBpbGF0aW9uLCA6b3JpZ2luLCA6Y29kZUFkZHJlc3Nl
cywgOmV4aXRLaW5kLCA6aXNXYXRjaHBvaW50LCA6Y291bnQKICAgICAKLSAgICBkZWYgaW5pdGlh
bGl6ZShjb21waWxhdGlvbiwgb3JpZ2luLCBjb2RlQWRkcmVzcywgZXhpdEtpbmQsIGlzV2F0Y2hw
b2ludCwgY291bnQpCisgICAgZGVmIGluaXRpYWxpemUoY29tcGlsYXRpb24sIG9yaWdpbiwgY29k
ZUFkZHJlc3NlcywgZXhpdEtpbmQsIGlzV2F0Y2hwb2ludCwgY291bnQpCiAgICAgICAgIEBjb21w
aWxhdGlvbiA9IGNvbXBpbGF0aW9uCiAgICAgICAgIEBvcmlnaW4gPSBvcmlnaW4KLSAgICAgICAg
QGNvZGVBZGRyZXNzID0gY29kZUFkZHJlc3MKKyAgICAgICAgQGNvZGVBZGRyZXNzZXMgPSBjb2Rl
QWRkcmVzc2VzCiAgICAgICAgIEBleGl0S2luZCA9IGV4aXRLaW5kCiAgICAgICAgIEBpc1dhdGNo
cG9pbnQgPSBpc1dhdGNocG9pbnQKICAgICAgICAgQGNvdW50ID0gY291bnQKQEAgLTM1OCwxMCAr
MzU4LDE2IEBAIGNsYXNzIENvbXBpbGF0aW9uCiAgICAgICAgIGpzb25bIm9zckV4aXRzIl0uZWFj
aCB7CiAgICAgICAgICAgICB8IHN1Ykpzb24gfAogICAgICAgICAgICAgb3NyRXhpdCA9IE9TUkV4
aXQubmV3KHNlbGYsIG9yaWdpblN0YWNrRnJvbUpTT04oc3ViSnNvblsib3JpZ2luIl0pLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25bIm9zckV4aXRTaXRlcyJdW3N1Ykpz
b25bImlkIl1dLmhleCwgc3ViSnNvblsiZXhpdEtpbmQiXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdWJKc29uWyJpc1dhdGNocG9pbnQiXSwgc3ViSnNvblsiY291bnQiXSkK
LSAgICAgICAgICAgIG9zckV4aXRzW29zckV4aXQuY29kZUFkZHJlc3NdID0gW10gdW5sZXNzIG9z
ckV4aXRzW29zckV4aXQuY29kZUFkZHJlc3NdCi0gICAgICAgICAgICBvc3JFeGl0c1tvc3JFeGl0
LmNvZGVBZGRyZXNzXSA8PCBvc3JFeGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAganNvblsib3NyRXhpdFNpdGVzIl1bc3ViSnNvblsiaWQiXV0ubWFwIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB2YWx1ZSB8CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlLmhleAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0sIHN1Ykpzb25bImV4aXRLaW5kIl0sIHN1Ykpzb25bImlzV2F0Y2hwb2ludCJdLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ykpzb25bImNvdW50Il0pCisgICAg
ICAgICAgICBvc3JFeGl0LmNvZGVBZGRyZXNzZXMuZWFjaCB7CisgICAgICAgICAgICAgICAgfCBj
b2RlQWRkcmVzcyB8CisgICAgICAgICAgICAgICAgb3NyRXhpdHNbY29kZUFkZHJlc3NdID0gW10g
dW5sZXNzIG9zckV4aXRzW2NvZGVBZGRyZXNzXQorICAgICAgICAgICAgICAgIG9zckV4aXRzW2Nv
ZGVBZGRyZXNzXSA8PCBvc3JFeGl0CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBvc3JFeGl0
Lm9yaWdpblstMV0ub3NyRXhpdHMgPDwgb3NyRXhpdAogICAgICAgICB9CiAgICAgICAgIEBwcm9m
aWxlZEJ5dGVjb2RlcyA9IFtdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180284</attachid>
            <date>2012-12-19 23:08:34 -0800</date>
            <delta_ts>2012-12-19 23:35:24 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>multiexit.patch</filename>
            <type>text/plain</type>
            <size>16509</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4MjA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDEyLTEyLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNwZWN1bGF0aW9uIGNoZWNrcyB0aGF0IHRha2UgSnVtcExpc3Qgc2hvdWxkIGNvbnNvbGlk
YXRlIE9TUkV4aXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDU0MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXb3JrIGluIHByb2dyZXNzLgorCisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFj
cm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEp1bXBMaXN0KToKKyAgICAgICAgKiBkZmcvREZHSklU
Q29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rT1NSRXhp
dHMpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBk
ZmcvREZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6
SklUQ29tcGlsZXI6OmFwcGVuZEV4aXRJbmZvKToKKyAgICAgICAgKEpJVENvbXBpbGVyKToKKyAg
ICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGF0aW9uSW5mby5oOgorICAgICAgICAoT1NSRXhp
dENvbXBpbGF0aW9uSW5mbyk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uV2F0Y2hwb2ludCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRTcGVjdWxhdGlvbkNo
ZWNrKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6UHJvZmlsZXI6OkNvbXBpbGF0aW9uOjphZGRPU1JFeGl0U2l0ZSk6CisgICAgICAg
ICogcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oOgorICAgICAgICAoQ29tcGlsYXRpb24p
OgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdFNpdGUuY3BwOgorICAgICAgICAo
SlNDOjpQcm9maWxlcjo6T1NSRXhpdFNpdGU6OnRvSlMpOgorICAgICAgICAqIHByb2ZpbGVyL1By
b2ZpbGVyT1NSRXhpdFNpdGUuaDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6Ok9TUkV4aXRTaXRl
OjpPU1JFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpPU1JFeGl0U2l0ZTo6Y29k
ZUFkZHJlc3MpOgorICAgICAgICAoT1NSRXhpdFNpdGUpOgorCiAyMDEyLTEyLTE5ICBPbGl2ZXIg
SHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHNvbWUgaW5jb3JyZWN0IHRl
c3RzIGluIHRlc3RhcGkuYwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDEzODIwNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTIsNyArNTkyLDcgQEAgcHVibGljOgogICAgICAgICBm
cmllbmQgY2xhc3MgTGlua0J1ZmZlcjsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgdHlwZWRlZiBW
ZWN0b3I8SnVtcCwgMTY+IEp1bXBWZWN0b3I7CisgICAgICAgIHR5cGVkZWYgVmVjdG9yPEp1bXAs
IDI+IEp1bXBWZWN0b3I7CiAgICAgICAgIAogICAgICAgICBKdW1wTGlzdCgpIHsgfQogICAgICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3Bw
CShyZXZpc2lvbiAxMzgyMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENv
bXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTkgKzU1LDIzIEBAIHZvaWQgSklUQ29t
cGlsZXI6OmxpbmtPU1JFeGl0cygpCiAgICAgaWYgKG1fZ3JhcGgubV9jb21waWxhdGlvbikgewog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrKCktPm51bWJlck9mT1NS
RXhpdHMoKTsgKytpKSB7CiAgICAgICAgICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrKCkt
Pm9zckV4aXQoaSk7Ci0gICAgICAgICAgICBpZiAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCA9PSBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpCi0gICAgICAgICAgICAgICAgbV9l
eGl0U2l0ZUxhYmVscy5hcHBlbmQobV9leGl0Q29tcGlsYXRpb25JbmZvW2ldLmZhaWx1cmVKdW1w
KCkubGFiZWwoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV9leGl0U2l0
ZUxhYmVscy5hcHBlbmQoY29kZUJsb2NrKCktPndhdGNocG9pbnQoZXhpdC5tX3dhdGNocG9pbnRJ
bmRleCkuc291cmNlTGFiZWwoKSk7CisgICAgICAgICAgICBWZWN0b3I8TGFiZWw+IGxhYmVsczsK
KyAgICAgICAgICAgIGlmIChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID09IHN0ZDo6bnVtZXJpY19s
aW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgeworICAgICAgICAgICAgICAgIE9TUkV4aXRDb21waWxh
dGlvbkluZm8mIGluZm8gPSBtX2V4aXRDb21waWxhdGlvbkluZm9baV07CisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IGluZm8ubV9mYWlsdXJlSnVtcHMuanVtcHMoKS5z
aXplKCk7ICsraikKKyAgICAgICAgICAgICAgICAgICAgbGFiZWxzLmFwcGVuZChpbmZvLm1fZmFp
bHVyZUp1bXBzLmp1bXBzKClbal0ubGFiZWwoKSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgICAgICBsYWJlbHMuYXBwZW5kKGNvZGVCbG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93
YXRjaHBvaW50SW5kZXgpLnNvdXJjZUxhYmVsKCkpOworICAgICAgICAgICAgbV9leGl0U2l0ZUxh
YmVscy5hcHBlbmQobGFiZWxzKTsKICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrKCktPm51bWJlck9mT1NSRXhpdHMoKTsgKytpKSB7
CiAgICAgICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2soKS0+b3NyRXhpdChpKTsKLSAgICAg
ICAgSnVtcCYgZmFpbHVyZUp1bXAgPSBtX2V4aXRDb21waWxhdGlvbkluZm9baV0uZmFpbHVyZUp1
bXAoKTsKLSAgICAgICAgQVNTRVJUKCFmYWlsdXJlSnVtcC5pc1NldCgpID09IChleGl0Lm1fd2F0
Y2hwb2ludEluZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOwor
ICAgICAgICBKdW1wTGlzdCYgZmFpbHVyZUp1bXBzID0gbV9leGl0Q29tcGlsYXRpb25JbmZvW2ld
Lm1fZmFpbHVyZUp1bXBzOworICAgICAgICBBU1NFUlQoZmFpbHVyZUp1bXBzLmVtcHR5KCkgPT0g
KGV4aXQubV93YXRjaHBvaW50SW5kZXggIT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46
Om1heCgpKSk7CiAgICAgICAgIGlmIChleGl0Lm1fd2F0Y2hwb2ludEluZGV4ID09IHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICAgICAgICAgIGZhaWx1cmVKdW1wLmxp
bmsodGhpcyk7CisgICAgICAgICAgICBmYWlsdXJlSnVtcHMubGluayh0aGlzKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgY29kZUJsb2NrKCktPndhdGNocG9pbnQoZXhpdC5tX3dhdGNocG9p
bnRJbmRleCkuc2V0RGVzdGluYXRpb24obGFiZWwoKSk7CiAgICAgICAgIGppdEFzc2VydEhhc1Zh
bGlkQ2FsbEZyYW1lKCk7CkBAIC0yMjEsOCArMjI1LDExIEBAIHZvaWQgSklUQ29tcGlsZXI6Omxp
bmsoTGlua0J1ZmZlciYgbGlua0IKICAgICBpZiAobV9ncmFwaC5tX2NvbXBpbGF0aW9uKSB7CiAg
ICAgICAgIEFTU0VSVChtX2V4aXRTaXRlTGFiZWxzLnNpemUoKSA9PSBjb2RlQmxvY2soKS0+bnVt
YmVyT2ZPU1JFeGl0cygpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZXhp
dFNpdGVMYWJlbHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIG1fZ3JhcGgubV9jb21waWxh
dGlvbi0+YWRkT1NSRXhpdFNpdGUoCi0gICAgICAgICAgICAgICAgbGlua0J1ZmZlci5sb2NhdGlv
bk9mKG1fZXhpdFNpdGVMYWJlbHNbaV0pLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworICAgICAgICAg
ICAgVmVjdG9yPExhYmVsPiYgbGFiZWxzID0gbV9leGl0U2l0ZUxhYmVsc1tpXTsKKyAgICAgICAg
ICAgIFZlY3Rvcjxjb25zdCB2b2lkKj4gYWRkcmVzc2VzOworICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBqID0gMDsgaiA8IGxhYmVscy5zaXplKCk7ICsraikKKyAgICAgICAgICAgICAgICBhZGRy
ZXNzZXMuYXBwZW5kKGxpbmtCdWZmZXIubG9jYXRpb25PZihsYWJlbHNbal0pLmV4ZWN1dGFibGVB
ZGRyZXNzKCkpOworICAgICAgICAgICAgbV9ncmFwaC5tX2NvbXBpbGF0aW9uLT5hZGRPU1JFeGl0
U2l0ZShhZGRyZXNzZXMpOwogICAgICAgICB9CiAgICAgfSBlbHNlCiAgICAgICAgIEFTU0VSVCgh
bV9leGl0U2l0ZUxhYmVscy5zaXplKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTM4MjA2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3
IEBAIG5hbWVzcGFjZSBERkcgewogCiBjbGFzcyBKSVRDb2RlR2VuZXJhdG9yOwogY2xhc3MgTm9k
ZVRvUmVnaXN0ZXJNYXA7CitjbGFzcyBPU1JFeGl0SnVtcFBsYWNlaG9sZGVyOwogY2xhc3MgU2xv
d1BhdGhHZW5lcmF0b3I7CiBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKIGNsYXNzIFNwZWN1bGF0aW9u
UmVjb3Zlcnk7CkBAIC0zNDQsNyArMzQ1LDEyIEBAIHB1YmxpYzoKICAgICBTcGVjdWxhdGVkVHlw
ZSBnZXRTcGVjdWxhdGlvbihOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBnZXRTcGVjdWxh
dGlvbihncmFwaCgpW25vZGVJbmRleF0pOyB9CiAgICAgU3BlY3VsYXRlZFR5cGUgZ2V0U3BlY3Vs
YXRpb24oRWRnZSBub2RlVXNlKSB7IHJldHVybiBnZXRTcGVjdWxhdGlvbihub2RlVXNlLmluZGV4
KCkpOyB9CiAKLSAgICB2b2lkIGFwcGVuZEV4aXRKdW1wKE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1
bXBUb0ZhaWwpIHsgbV9leGl0Q29tcGlsYXRpb25JbmZvLmFwcGVuZChPU1JFeGl0Q29tcGlsYXRp
b25JbmZvKGp1bXBUb0ZhaWwpKTsgfQorICAgIHZvaWQgYXBwZW5kRXhpdEluZm8oTWFjcm9Bc3Nl
bWJsZXI6Okp1bXBMaXN0IGp1bXBzVG9GYWlsID0gTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0KCkp
CisgICAgeworICAgICAgICBPU1JFeGl0Q29tcGlsYXRpb25JbmZvIGluZm87CisgICAgICAgIGlu
Zm8ubV9mYWlsdXJlSnVtcHMgPSBqdW1wc1RvRmFpbDsKKyAgICAgICAgbV9leGl0Q29tcGlsYXRp
b25JbmZvLmFwcGVuZChpbmZvKTsKKyAgICB9CiAKICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAg
IHZvaWQqIGFkZHJlc3NPZkRvdWJsZUNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpCkBAIC00
MjMsNiArNDI5LDggQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgT1NSRXhpdEp1bXBQbGFjZWhvbGRlcjsKKyAgICAKICAgICAvLyBJbnRlcm5hbCBpbXBsZW1l
bnRhdGlvbiB0byBjb21waWxlLgogICAgIHZvaWQgY29tcGlsZUVudHJ5KCk7CiAgICAgdm9pZCBj
b21waWxlQm9keShTcGVjdWxhdGl2ZUpJVCYpOwpAQCAtNDY0LDcgKzQ3Miw3IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPFByb3BlcnR5QWNjZXNzUmVjb3JkLCA0PiBtX3Byb3BlcnR5QWNjZXNzZXM7
CiAgICAgVmVjdG9yPEpTQ2FsbFJlY29yZCwgND4gbV9qc0NhbGxzOwogICAgIFZlY3RvcjxPU1JF
eGl0Q29tcGlsYXRpb25JbmZvPiBtX2V4aXRDb21waWxhdGlvbkluZm87Ci0gICAgVmVjdG9yPExh
YmVsPiBtX2V4aXRTaXRlTGFiZWxzOworICAgIFZlY3RvcjxWZWN0b3I8TGFiZWw+ID4gbV9leGl0
U2l0ZUxhYmVsczsKICAgICB1bnNpZ25lZCBtX2N1cnJlbnRDb2RlT3JpZ2luSW5kZXg7CiB9Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxhdGlvbklu
Zm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRD
b21waWxhdGlvbkluZm8uaAkocmV2aXNpb24gMTM4MjA2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDE3ICszNiw4IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotY2xhc3Mg
T1NSRXhpdENvbXBpbGF0aW9uSW5mbyB7Ci1wdWJsaWM6Ci0gICAgT1NSRXhpdENvbXBpbGF0aW9u
SW5mbyhNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWlsdXJlSnVtcCkKLSAgICAgICAgOiBtX2ZhaWx1
cmVKdW1wKGZhaWx1cmVKdW1wKQotICAgIHsKLSAgICB9Ci0KLSAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCYgZmFpbHVyZUp1bXAoKSB7IHJldHVybiBtX2ZhaWx1cmVKdW1wOyB9Ci0KLXByaXZhdGU6
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbV9mYWlsdXJlSnVtcDsKK3N0cnVjdCBPU1JFeGl0
Q29tcGlsYXRpb25JbmZvIHsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgbV9mYWlsdXJl
SnVtcHM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTM4
MjA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpz
cGVjdWxhdGlvbkNoZWNrKEV4CiAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICByZXR1
cm47CiAgICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNr
aW5nQXJndW1lbnRUeXBlcyk7Ci0gICAgbV9qaXQuYXBwZW5kRXhpdEp1bXAoanVtcFRvRmFpbCk7
CisgICAgbV9qaXQuYXBwZW5kRXhpdEluZm8oanVtcFRvRmFpbCk7CiAgICAgbV9qaXQuY29kZUJs
b2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChraW5kLCBqc1ZhbHVlU291cmNlLCBtX2ppdC5n
cmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwgdGhpcywg
bV9zdHJlYW0tPnNpemUoKSkpOwogfQogCkBAIC0xMjEsMTAgKzEyMSwxMSBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKEV4CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNw
ZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNl
LCBOb2RlSW5kZXggbm9kZUluZGV4LCBjb25zdCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIGp1
bXBzVG9GYWlsKQogeworICAgIGlmICghbV9jb21waWxlT2theSkKKyAgICAgICAgcmV0dXJuOwog
ICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0Fy
Z3VtZW50VHlwZXMpOwotICAgIFZlY3RvcjxNYWNyb0Fzc2VtYmxlcjo6SnVtcCwgMTY+IGp1bXBW
ZWN0b3IgPSBqdW1wc1RvRmFpbC5qdW1wcygpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBqdW1wVmVjdG9yLnNpemUoKTsgKytpKQotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKGtpbmQs
IGpzVmFsdWVTb3VyY2UsIG5vZGVJbmRleCwganVtcFZlY3RvcltpXSk7CisgICAgbV9qaXQuYXBw
ZW5kRXhpdEluZm8oanVtcHNUb0ZhaWwpOworICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRP
U1JFeGl0KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS5tZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIHRoaXMsIG1fc3RyZWFtLT5zaXpl
KCkpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeGl0S2lu
ZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIEVkZ2Ugbm9kZVVzZSwgY29uc3Qg
TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wc1RvRmFpbCkKQEAgLTEzOSw3ICsxNDAsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKEV4CiAgICAgICAgIHJldHVy
bjsKICAgICBBU1NFUlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tp
bmdBcmd1bWVudFR5cGVzKTsKICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kU3BlY3VsYXRp
b25SZWNvdmVyeShyZWNvdmVyeSk7Ci0gICAgbV9qaXQuYXBwZW5kRXhpdEp1bXAoanVtcFRvRmFp
bCk7CisgICAgbV9qaXQuYXBwZW5kRXhpdEluZm8oanVtcFRvRmFpbCk7CiAgICAgbV9qaXQuY29k
ZUJsb2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChraW5kLCBqc1ZhbHVlU291cmNlLCBtX2pp
dC5ncmFwaCgpLm1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGVGb3Iobm9kZUluZGV4KSwgdGhp
cywgbV9zdHJlYW0tPnNpemUoKSwgbV9qaXQuY29kZUJsb2NrKCktPm51bWJlck9mU3BlY3VsYXRp
b25SZWNvdmVyaWVzKCkpKTsKIH0KIApAQCAtMTYxLDcgKzE2Miw3IEBAIEp1bXBSZXBsYWNlbWVu
dFdhdGNocG9pbnQqIFNwZWN1bGF0aXZlSkkKICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8
IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOwotICAgIG1faml0LmFwcGVuZEV4aXRKdW1wKEpJ
VENvbXBpbGVyOjpKdW1wKCkpOworICAgIG1faml0LmFwcGVuZEV4aXRJbmZvKEpJVENvbXBpbGVy
OjpKdW1wTGlzdCgpKTsKICAgICBPU1JFeGl0JiBleGl0ID0gbV9qaXQuY29kZUJsb2NrKCktPm9z
ckV4aXQoCiAgICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0KAogICAgICAg
ICAgICAgT1NSRXhpdChraW5kLCBqc1ZhbHVlU291cmNlLApAQCAtMjcwLDkgKzI3MSw4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmZvcndhcmRTcGVjdWxhdGlvbkMKIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmZvcndhcmRTcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5kIGtpbmQsIEpTVmFsdWVTb3VyY2Ug
anNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4IG5vZGVJbmRleCwgY29uc3QgTWFjcm9Bc3NlbWJsZXI6
Okp1bXBMaXN0JiBqdW1wc1RvRmFpbCwgY29uc3QgVmFsdWVSZWNvdmVyeSYgdmFsdWVSZWNvdmVy
eSkKIHsKICAgICBBU1NFUlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hl
Y2tpbmdBcmd1bWVudFR5cGVzKTsKLSAgICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXAsIDE2
PiBqdW1wVmVjdG9yID0ganVtcHNUb0ZhaWwuanVtcHMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwganVtcFZlY3Rvci5zaXplKCk7ICsraSkKLSAgICAgICAgZm9yd2FyZFNwZWN1bGF0
aW9uQ2hlY2soa2luZCwganNWYWx1ZVNvdXJjZSwgbm9kZUluZGV4LCBqdW1wVmVjdG9yW2ldLCB2
YWx1ZVJlY292ZXJ5KTsKKyAgICBzcGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVTb3VyY2Us
IG5vZGVJbmRleCwganVtcHNUb0ZhaWwpOworICAgIGNvbnZlcnRMYXN0T1NSRXhpdFRvRm9yd2Fy
ZCh2YWx1ZVJlY292ZXJ5KTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25D
aGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRl
eCBub2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwsIFNwZWN1bGF0aW9u
RGlyZWN0aW9uIGRpcmVjdGlvbikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAJKHJldmlzaW9uIDEzODIwNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzQsOSArNzQsOSBAQCBFeGVjdXRpb25Db3VudGVyKiBDb21w
aWxhdGlvbjo6ZXhlY3V0aW9uCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDb21waWxh
dGlvbjo6YWRkT1NSRXhpdFNpdGUoY29uc3Qgdm9pZCogY29kZUFkZHJlc3MpCit2b2lkIENvbXBp
bGF0aW9uOjphZGRPU1JFeGl0U2l0ZShjb25zdCBWZWN0b3I8Y29uc3Qgdm9pZCo+JiBjb2RlQWRk
cmVzc2VzKQogewotICAgIG1fb3NyRXhpdFNpdGVzLmFwcGVuZChPU1JFeGl0U2l0ZShjb2RlQWRk
cmVzcykpOworICAgIG1fb3NyRXhpdFNpdGVzLmFwcGVuZChPU1JFeGl0U2l0ZShjb2RlQWRkcmVz
c2VzKSk7CiB9CiAKIE9TUkV4aXQqIENvbXBpbGF0aW9uOjphZGRPU1JFeGl0KHVuc2lnbmVkIGlk
LCBjb25zdCBPcmlnaW5TdGFjayYgb3JpZ2luU3RhY2ssIEV4aXRLaW5kIGV4aXRLaW5kLCBib29s
IGlzV2F0Y2hwb2ludCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlckNvbXBpbGF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uaAkocmV2aXNpb24gMTM4MjA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBhZGREZXNjcmlw
dGlvbihjb25zdCBDb21waWxlZEJ5dGVjb2RlJik7CiAgICAgRXhlY3V0aW9uQ291bnRlciogZXhl
Y3V0aW9uQ291bnRlckZvcihjb25zdCBPcmlnaW5TdGFjayYpOwotICAgIHZvaWQgYWRkT1NSRXhp
dFNpdGUoY29uc3Qgdm9pZCogY29kZUFkZHJlc3MpOworICAgIHZvaWQgYWRkT1NSRXhpdFNpdGUo
Y29uc3QgVmVjdG9yPGNvbnN0IHZvaWQqPiYgY29kZUFkZHJlc3Nlcyk7CiAgICAgT1NSRXhpdCog
YWRkT1NSRXhpdCh1bnNpZ25lZCBpZCwgY29uc3QgT3JpZ2luU3RhY2smLCBFeGl0S2luZCwgYm9v
bCBpc1dhdGNocG9pbnQpOwogICAgIAogICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25z
dDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXRT
aXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJPU1JFeGl0U2l0ZS5jcHAJKHJldmlzaW9uIDEzODIwNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXRTaXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb2ZpbGVy
T1NSRXhpdFNpdGUuaCIKIAorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNTY29wZS5oIgogI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1By
aW50U3RyZWFtLmg+CkBAIC0zNCw3ICszNSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IFByb2ZpbGVyIHsKIAogSlNWYWx1ZSBPU1JFeGl0U2l0ZTo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHRvU3RyaW5nKFJhd1BvaW50ZXIo
bV9jb2RlQWRkcmVzcykpKTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFy
cmF5KGV4ZWMsIDApOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NvZGVBZGRyZXNz
ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwg
anNTdHJpbmcoZXhlYywgdG9TdHJpbmcoUmF3UG9pbnRlcihtX2NvZGVBZGRyZXNzZXNbaV0pKSkp
OworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpQcm9maWxl
cgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdFNp
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJPU1JFeGl0U2l0ZS5oCShyZXZpc2lvbiAxMzgyMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0U2l0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNywy
MiArMjcsMjMgQEAKICNkZWZpbmUgUHJvZmlsZXJPU1JFeGl0U2l0ZV9oCiAKICNpbmNsdWRlICJK
U1ZhbHVlLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIFByb2ZpbGVyIHsKIAogY2xhc3MgT1NSRXhpdFNpdGUgewogcHVibGljOgotICAgIGV4
cGxpY2l0IE9TUkV4aXRTaXRlKGNvbnN0IHZvaWQqIGNvZGVBZGRyZXNzKQotICAgICAgICA6IG1f
Y29kZUFkZHJlc3MoY29kZUFkZHJlc3MpCisgICAgZXhwbGljaXQgT1NSRXhpdFNpdGUoY29uc3Qg
VmVjdG9yPGNvbnN0IHZvaWQqPiYgY29kZUFkZHJlc3NlcykKKyAgICAgICAgOiBtX2NvZGVBZGRy
ZXNzZXMoY29kZUFkZHJlc3NlcykKICAgICB7CiAgICAgfQogICAgIAotICAgIGNvbnN0IHZvaWQq
IGNvZGVBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlQWRkcmVzczsgfQorICAgIGNvbnN0
IFZlY3Rvcjxjb25zdCB2b2lkKj4mIGNvZGVBZGRyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9jb2Rl
QWRkcmVzc2VzOyB9CiAgICAgCiAgICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0Owog
CiBwcml2YXRlOgotICAgIGNvbnN0IHZvaWQqIG1fY29kZUFkZHJlc3M7CisgICAgVmVjdG9yPGNv
bnN0IHZvaWQqPiBtX2NvZGVBZGRyZXNzZXM7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
UHJvZmlsZXIKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDEzODIwNikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEyLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgREZHIHNwZWN1bGF0aW9uIGNoZWNrcyB0aGF0IHRha2UgSnVtcExp
c3Qgc2hvdWxkIGNvbnNvbGlkYXRlIE9TUkV4aXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU0MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdGhlIHByb2ZpbGVyIHRvIHVuZGVyc3RhbmQg
dGhhdCBhbiBPU1IgZXhpdCBtYXkgaGF2ZSBtdWx0aXBsZQorICAgICAgICBjYW5kaWRhdGUgZXhp
dCBzaXRlcy4KKworICAgICAgICAqIFNjcmlwdHMvZGlzcGxheS1wcm9maWxlci1vdXRwdXQ6CisK
IDIwMTItMTItMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UGVyZlRlc3QucGFyc2Vfb3V0cHV0IGRvZXMgdG9vIG11Y2gKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
ZGlzcGxheS1wcm9maWxlci1vdXRwdXQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9kaXNw
bGF5LXByb2ZpbGVyLW91dHB1dAkocmV2aXNpb24gMTM4MjA2KQorKysgVG9vbHMvU2NyaXB0cy9k
aXNwbGF5LXByb2ZpbGVyLW91dHB1dAkod29ya2luZyBjb3B5KQpAQCAtMzA4LDEyICszMDgsMTIg
QEAgY2xhc3MgRXhlY3V0aW9uQ291bnRlcgogZW5kCiAKIGNsYXNzIE9TUkV4aXQKLSAgICBhdHRy
X3JlYWRlciA6Y29tcGlsYXRpb24sIDpvcmlnaW4sIDpjb2RlQWRkcmVzcywgOmV4aXRLaW5kLCA6
aXNXYXRjaHBvaW50LCA6Y291bnQKKyAgICBhdHRyX3JlYWRlciA6Y29tcGlsYXRpb24sIDpvcmln
aW4sIDpjb2RlQWRkcmVzc2VzLCA6ZXhpdEtpbmQsIDppc1dhdGNocG9pbnQsIDpjb3VudAogICAg
IAotICAgIGRlZiBpbml0aWFsaXplKGNvbXBpbGF0aW9uLCBvcmlnaW4sIGNvZGVBZGRyZXNzLCBl
eGl0S2luZCwgaXNXYXRjaHBvaW50LCBjb3VudCkKKyAgICBkZWYgaW5pdGlhbGl6ZShjb21waWxh
dGlvbiwgb3JpZ2luLCBjb2RlQWRkcmVzc2VzLCBleGl0S2luZCwgaXNXYXRjaHBvaW50LCBjb3Vu
dCkKICAgICAgICAgQGNvbXBpbGF0aW9uID0gY29tcGlsYXRpb24KICAgICAgICAgQG9yaWdpbiA9
IG9yaWdpbgotICAgICAgICBAY29kZUFkZHJlc3MgPSBjb2RlQWRkcmVzcworICAgICAgICBAY29k
ZUFkZHJlc3NlcyA9IGNvZGVBZGRyZXNzZXMKICAgICAgICAgQGV4aXRLaW5kID0gZXhpdEtpbmQK
ICAgICAgICAgQGlzV2F0Y2hwb2ludCA9IGlzV2F0Y2hwb2ludAogICAgICAgICBAY291bnQgPSBj
b3VudApAQCAtMzU4LDEwICszNTgsMTYgQEAgY2xhc3MgQ29tcGlsYXRpb24KICAgICAgICAganNv
blsib3NyRXhpdHMiXS5lYWNoIHsKICAgICAgICAgICAgIHwgc3ViSnNvbiB8CiAgICAgICAgICAg
ICBvc3JFeGl0ID0gT1NSRXhpdC5uZXcoc2VsZiwgb3JpZ2luU3RhY2tGcm9tSlNPTihzdWJKc29u
WyJvcmlnaW4iXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNvblsib3Ny
RXhpdFNpdGVzIl1bc3ViSnNvblsiaWQiXV0uaGV4LCBzdWJKc29uWyJleGl0S2luZCJdLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ykpzb25bImlzV2F0Y2hwb2ludCJdLCBz
dWJKc29uWyJjb3VudCJdKQotICAgICAgICAgICAgb3NyRXhpdHNbb3NyRXhpdC5jb2RlQWRkcmVz
c10gPSBbXSB1bmxlc3Mgb3NyRXhpdHNbb3NyRXhpdC5jb2RlQWRkcmVzc10KLSAgICAgICAgICAg
IG9zckV4aXRzW29zckV4aXQuY29kZUFkZHJlc3NdIDw8IG9zckV4aXQKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBqc29uWyJvc3JFeGl0U2l0ZXMiXVtzdWJKc29uWyJpZCJdXS5t
YXAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHZhbHVlIHwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuaGV4CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwgc3ViSnNvblsiZXhpdEtpbmQiXSwgc3ViSnNvblsi
aXNXYXRjaHBvaW50Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViSnNv
blsiY291bnQiXSkKKyAgICAgICAgICAgIG9zckV4aXQuY29kZUFkZHJlc3Nlcy5lYWNoIHsKKyAg
ICAgICAgICAgICAgICB8IGNvZGVBZGRyZXNzIHwKKyAgICAgICAgICAgICAgICBvc3JFeGl0c1tj
b2RlQWRkcmVzc10gPSBbXSB1bmxlc3Mgb3NyRXhpdHNbY29kZUFkZHJlc3NdCisgICAgICAgICAg
ICAgICAgb3NyRXhpdHNbY29kZUFkZHJlc3NdIDw8IG9zckV4aXQKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIG9zckV4aXQub3JpZ2luWy0xXS5vc3JFeGl0cyA8PCBvc3JFeGl0CiAgICAgICAg
IH0KICAgICAgICAgQHByb2ZpbGVkQnl0ZWNvZGVzID0gW10K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180286</attachid>
            <date>2012-12-19 23:35:24 -0800</date>
            <delta_ts>2012-12-20 11:02:25 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>multiexit.patch</filename>
            <type>text/plain</type>
            <size>16942</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM4MjA2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDEyLTEyLTE5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNwZWN1bGF0aW9uIGNoZWNrcyB0aGF0IHRha2UgSnVtcExpc3Qgc2hvdWxkIGNvbnNvbGlk
YXRlIE9TUkV4aXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDU0MDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDaGFuZ2UgT1NSRXhpdENvbXBpbGF0aW9uSW5mbyB0byBhbHdheXMgY29udGFpbiBhIEp1
bXBMaXN0LCBhbmQgY2hhbmdlIEp1bXBMaXN0CisgICAgICAgIHRvIGJlIG1vcmUgY29tcGFjdC4g
VGhpcyB3YXksIGEgc3BlY3VsYXRpb25DaGVjayB0aGF0IHRha2VzIGEgSnVtcExpc3Qgb25seSBo
YXMKKyAgICAgICAgdG8gZW1pdCBvbmUgT1NSRXhpdCBzdHJ1Y3R1cmUsIGFuZCBvbmUgT1NSRXhp
dCBsYW5kaW5nIHBhZC4KKyAgICAgICAgCisgICAgICAgIFRoZSBkb3duc2lkZSBpcyB0aGF0IHdl
IGdldCBsZXNzIHByZWNpc2UgaW5mb3JtYXRpb24gYWJvdXQgKndoZXJlKiB3ZSBleGl0ZWQKKyAg
ICAgICAgZnJvbS4gU28sIHRoaXMgYWxzbyBpbmNsdWRlcyBjaGFuZ2VzIHRvIHRoZSBwcm9maWxl
ciB0byBiZSBtb3JlIHJlbGF4ZWQgYWJvdXQKKyAgICAgICAgd2hhdCBhbiBFeGl0U2l0ZSBpcy4K
KworICAgICAgICAqIGFzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmg6CisgICAgICAg
IChKdW1wTGlzdCk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGlua09TUkV4aXRzKToKKyAgICAgICAgKEpTQzo6REZH
OjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVyLmg6Cisg
ICAgICAgIChERkcpOgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjphcHBlbmRFeGl0
SW5mbyk6CisgICAgICAgIChKSVRDb21waWxlcik6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxhdGlvbkluZm8uaDoKKyAgICAgICAgKE9TUkV4aXRDb21waWxhdGlvbkluZm8pOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2spOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGlvbldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpmb3J3YXJkU3BlY3VsYXRpb25DaGVjayk6CisgICAgICAgICogcHJvZmls
ZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpDb21w
aWxhdGlvbjo6YWRkT1NSRXhpdFNpdGUpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29t
cGlsYXRpb24uaDoKKyAgICAgICAgKENvbXBpbGF0aW9uKToKKyAgICAgICAgKiBwcm9maWxlci9Q
cm9maWxlck9TUkV4aXRTaXRlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6Ok9TUkV4aXRT
aXRlOjp0b0pTKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlck9TUkV4aXRTaXRlLmg6Cisg
ICAgICAgIChKU0M6OlByb2ZpbGVyOjpPU1JFeGl0U2l0ZTo6T1NSRXhpdFNpdGUpOgorICAgICAg
ICAoSlNDOjpQcm9maWxlcjo6T1NSRXhpdFNpdGU6OmNvZGVBZGRyZXNzKToKKyAgICAgICAgKE9T
UkV4aXRTaXRlKToKKwogMjAxMi0xMi0xOSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIEZpeCBzb21lIGluY29ycmVjdCB0ZXN0cyBpbiB0ZXN0YXBpLmMKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJzdHJhY3RN
YWNyb0Fzc2VtYmxlci5oCShyZXZpc2lvbiAxMzgyMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
NTkyLDcgKzU5Miw3IEBAIHB1YmxpYzoKICAgICAgICAgZnJpZW5kIGNsYXNzIExpbmtCdWZmZXI7
CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHR5cGVkZWYgVmVjdG9yPEp1bXAsIDE2PiBKdW1wVmVj
dG9yOworICAgICAgICB0eXBlZGVmIFZlY3RvcjxKdW1wLCAyPiBKdW1wVmVjdG9yOwogICAgICAg
ICAKICAgICAgICAgSnVtcExpc3QoKSB7IH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTM4MjA2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDE5ICs1NSwyMyBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rT1NSRXhpdHMoKQog
ICAgIGlmIChtX2dyYXBoLm1fY29tcGlsYXRpb24pIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGNvZGVCbG9jaygpLT5udW1iZXJPZk9TUkV4aXRzKCk7ICsraSkgewogICAgICAg
ICAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jaygpLT5vc3JFeGl0KGkpOwotICAgICAgICAg
ICAgaWYgKGV4aXQubV93YXRjaHBvaW50SW5kZXggPT0gc3RkOjpudW1lcmljX2xpbWl0czx1bnNp
Z25lZD46Om1heCgpKQotICAgICAgICAgICAgICAgIG1fZXhpdFNpdGVMYWJlbHMuYXBwZW5kKG1f
ZXhpdENvbXBpbGF0aW9uSW5mb1tpXS5mYWlsdXJlSnVtcCgpLmxhYmVsKCkpOwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIG1fZXhpdFNpdGVMYWJlbHMuYXBwZW5kKGNvZGVCbG9j
aygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpLnNvdXJjZUxhYmVsKCkpOwor
ICAgICAgICAgICAgVmVjdG9yPExhYmVsPiBsYWJlbHM7CisgICAgICAgICAgICBpZiAoZXhpdC5t
X3dhdGNocG9pbnRJbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
IHsKKyAgICAgICAgICAgICAgICBPU1JFeGl0Q29tcGlsYXRpb25JbmZvJiBpbmZvID0gbV9leGl0
Q29tcGlsYXRpb25JbmZvW2ldOworICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7
IGogPCBpbmZvLm1fZmFpbHVyZUp1bXBzLmp1bXBzKCkuc2l6ZSgpOyArK2opCisgICAgICAgICAg
ICAgICAgICAgIGxhYmVscy5hcHBlbmQoaW5mby5tX2ZhaWx1cmVKdW1wcy5qdW1wcygpW2pdLmxh
YmVsKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgbGFiZWxzLmFwcGVu
ZChjb2RlQmxvY2soKS0+d2F0Y2hwb2ludChleGl0Lm1fd2F0Y2hwb2ludEluZGV4KS5zb3VyY2VM
YWJlbCgpKTsKKyAgICAgICAgICAgIG1fZXhpdFNpdGVMYWJlbHMuYXBwZW5kKGxhYmVscyk7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVC
bG9jaygpLT5udW1iZXJPZk9TUkV4aXRzKCk7ICsraSkgewogICAgICAgICBPU1JFeGl0JiBleGl0
ID0gY29kZUJsb2NrKCktPm9zckV4aXQoaSk7Ci0gICAgICAgIEp1bXAmIGZhaWx1cmVKdW1wID0g
bV9leGl0Q29tcGlsYXRpb25JbmZvW2ldLmZhaWx1cmVKdW1wKCk7Ci0gICAgICAgIEFTU0VSVCgh
ZmFpbHVyZUp1bXAuaXNTZXQoKSA9PSAoZXhpdC5tX3dhdGNocG9pbnRJbmRleCAhPSBzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpKTsKKyAgICAgICAgSnVtcExpc3QmIGZhaWx1
cmVKdW1wcyA9IG1fZXhpdENvbXBpbGF0aW9uSW5mb1tpXS5tX2ZhaWx1cmVKdW1wczsKKyAgICAg
ICAgQVNTRVJUKGZhaWx1cmVKdW1wcy5lbXB0eSgpID09IChleGl0Lm1fd2F0Y2hwb2ludEluZGV4
ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkpOwogICAgICAgICBpZiAo
ZXhpdC5tX3dhdGNocG9pbnRJbmRleCA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6
bWF4KCkpCi0gICAgICAgICAgICBmYWlsdXJlSnVtcC5saW5rKHRoaXMpOworICAgICAgICAgICAg
ZmFpbHVyZUp1bXBzLmxpbmsodGhpcyk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvZGVC
bG9jaygpLT53YXRjaHBvaW50KGV4aXQubV93YXRjaHBvaW50SW5kZXgpLnNldERlc3RpbmF0aW9u
KGxhYmVsKCkpOwogICAgICAgICBqaXRBc3NlcnRIYXNWYWxpZENhbGxGcmFtZSgpOwpAQCAtMjIx
LDggKzIyNSwxMSBAQCB2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxpbmtCCiAg
ICAgaWYgKG1fZ3JhcGgubV9jb21waWxhdGlvbikgewogICAgICAgICBBU1NFUlQobV9leGl0U2l0
ZUxhYmVscy5zaXplKCkgPT0gY29kZUJsb2NrKCktPm51bWJlck9mT1NSRXhpdHMoKSk7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2V4aXRTaXRlTGFiZWxzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgICAgICBtX2dyYXBoLm1fY29tcGlsYXRpb24tPmFkZE9TUkV4aXRTaXRlKAot
ICAgICAgICAgICAgICAgIGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2V4aXRTaXRlTGFiZWxzW2ld
KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAgIFZlY3RvcjxMYWJlbD4mIGxhYmVs
cyA9IG1fZXhpdFNpdGVMYWJlbHNbaV07CisgICAgICAgICAgICBWZWN0b3I8Y29uc3Qgdm9pZCo+
IGFkZHJlc3NlczsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsYWJlbHMu
c2l6ZSgpOyArK2opCisgICAgICAgICAgICAgICAgYWRkcmVzc2VzLmFwcGVuZChsaW5rQnVmZmVy
LmxvY2F0aW9uT2YobGFiZWxzW2pdKS5leGVjdXRhYmxlQWRkcmVzcygpKTsKKyAgICAgICAgICAg
IG1fZ3JhcGgubV9jb21waWxhdGlvbi0+YWRkT1NSRXhpdFNpdGUoYWRkcmVzc2VzKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZQogICAgICAgICBBU1NFUlQoIW1fZXhpdFNpdGVMYWJlbHMuc2l6ZSgp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHJl
dmlzaW9uIDEzODIwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGls
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBAQCBuYW1lc3BhY2UgREZHIHsKIAog
Y2xhc3MgSklUQ29kZUdlbmVyYXRvcjsKIGNsYXNzIE5vZGVUb1JlZ2lzdGVyTWFwOworY2xhc3Mg
T1NSRXhpdEp1bXBQbGFjZWhvbGRlcjsKIGNsYXNzIFNsb3dQYXRoR2VuZXJhdG9yOwogY2xhc3Mg
U3BlY3VsYXRpdmVKSVQ7CiBjbGFzcyBTcGVjdWxhdGlvblJlY292ZXJ5OwpAQCAtMzQ0LDcgKzM0
NSwxMiBAQCBwdWJsaWM6CiAgICAgU3BlY3VsYXRlZFR5cGUgZ2V0U3BlY3VsYXRpb24oTm9kZUlu
ZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gZ2V0U3BlY3VsYXRpb24oZ3JhcGgoKVtub2RlSW5kZXhd
KTsgfQogICAgIFNwZWN1bGF0ZWRUeXBlIGdldFNwZWN1bGF0aW9uKEVkZ2Ugbm9kZVVzZSkgeyBy
ZXR1cm4gZ2V0U3BlY3VsYXRpb24obm9kZVVzZS5pbmRleCgpKTsgfQogCi0gICAgdm9pZCBhcHBl
bmRFeGl0SnVtcChNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsKSB7IG1fZXhpdENvbXBp
bGF0aW9uSW5mby5hcHBlbmQoT1NSRXhpdENvbXBpbGF0aW9uSW5mbyhqdW1wVG9GYWlsKSk7IH0K
KyAgICB2b2lkIGFwcGVuZEV4aXRJbmZvKE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBqdW1wc1Rv
RmFpbCA9IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCgpKQorICAgIHsKKyAgICAgICAgT1NSRXhp
dENvbXBpbGF0aW9uSW5mbyBpbmZvOworICAgICAgICBpbmZvLm1fZmFpbHVyZUp1bXBzID0ganVt
cHNUb0ZhaWw7CisgICAgICAgIG1fZXhpdENvbXBpbGF0aW9uSW5mby5hcHBlbmQoaW5mbyk7Cisg
ICAgfQogCiAjaWYgVVNFKEpTVkFMVUUzMl82NCkKICAgICB2b2lkKiBhZGRyZXNzT2ZEb3VibGVD
b25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KQpAQCAtNDIzLDYgKzQyOSw4IEBAIHB1YmxpYzoK
ICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIE9TUkV4aXRKdW1wUGxhY2Vob2xk
ZXI7CisgICAgCiAgICAgLy8gSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gdG8gY29tcGlsZS4KICAg
ICB2b2lkIGNvbXBpbGVFbnRyeSgpOwogICAgIHZvaWQgY29tcGlsZUJvZHkoU3BlY3VsYXRpdmVK
SVQmKTsKQEAgLTQ2NCw3ICs0NzIsNyBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxQcm9wZXJ0eUFj
Y2Vzc1JlY29yZCwgND4gbV9wcm9wZXJ0eUFjY2Vzc2VzOwogICAgIFZlY3RvcjxKU0NhbGxSZWNv
cmQsIDQ+IG1fanNDYWxsczsKICAgICBWZWN0b3I8T1NSRXhpdENvbXBpbGF0aW9uSW5mbz4gbV9l
eGl0Q29tcGlsYXRpb25JbmZvOwotICAgIFZlY3RvcjxMYWJlbD4gbV9leGl0U2l0ZUxhYmVsczsK
KyAgICBWZWN0b3I8VmVjdG9yPExhYmVsPiA+IG1fZXhpdFNpdGVMYWJlbHM7CiAgICAgdW5zaWdu
ZWQgbV9jdXJyZW50Q29kZU9yaWdpbkluZGV4OwogfTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsYXRpb25JbmZvLmgJKHJldmlz
aW9uIDEzODIwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGF0aW9uSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiwxNyArMzYsOCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLWNsYXNzIE9TUkV4aXRDb21waWxhdGlvbkluZm8g
ewotcHVibGljOgotICAgIE9TUkV4aXRDb21waWxhdGlvbkluZm8oTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgZmFpbHVyZUp1bXApCi0gICAgICAgIDogbV9mYWlsdXJlSnVtcChmYWlsdXJlSnVtcCkKLSAg
ICB7Ci0gICAgfQotCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAmIGZhaWx1cmVKdW1wKCkgeyBy
ZXR1cm4gbV9mYWlsdXJlSnVtcDsgfQotCi1wcml2YXRlOgotICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIG1fZmFpbHVyZUp1bXA7CitzdHJ1Y3QgT1NSRXhpdENvbXBpbGF0aW9uSW5mbyB7CisgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IG1fZmFpbHVyZUp1bXBzOwogfTsKIAogfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDEzODIwNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDks
NyArMTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeAogICAg
IGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChhdChtX2Nv
bXBpbGVJbmRleCkuY2FuRXhpdCgpIHx8IG1faXNDaGVja2luZ0FyZ3VtZW50VHlwZXMpOwotICAg
IG1faml0LmFwcGVuZEV4aXRKdW1wKGp1bXBUb0ZhaWwpOworICAgIG1faml0LmFwcGVuZEV4aXRJ
bmZvKGp1bXBUb0ZhaWwpOwogICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0KE9T
UkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS5tZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIHRoaXMsIG1fc3RyZWFtLT5zaXplKCkpKTsKIH0K
IApAQCAtMTIxLDEwICsxMjEsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRpb25D
aGVjayhFeAogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGlvbkNoZWNrKEV4aXRLaW5k
IGtpbmQsIEpTVmFsdWVTb3VyY2UganNWYWx1ZVNvdXJjZSwgTm9kZUluZGV4IG5vZGVJbmRleCwg
Y29uc3QgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0JiBqdW1wc1RvRmFpbCkKIHsKKyAgICBpZiAo
IW1fY29tcGlsZU9rYXkpCisgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQoYXQobV9jb21waWxl
SW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5cGVzKTsKLSAgICBWZWN0
b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXAsIDE2PiBqdW1wVmVjdG9yID0ganVtcHNUb0ZhaWwuanVt
cHMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwganVtcFZlY3Rvci5zaXplKCk7ICsr
aSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291cmNlLCBub2RlSW5k
ZXgsIGp1bXBWZWN0b3JbaV0pOworICAgIG1faml0LmFwcGVuZEV4aXRJbmZvKGp1bXBzVG9GYWls
KTsKKyAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChPU1JFeGl0KGtpbmQsIGpz
VmFsdWVTb3VyY2UsIG1faml0LmdyYXBoKCkubWV0aG9kT2ZHZXR0aW5nQVZhbHVlUHJvZmlsZUZv
cihub2RlSW5kZXgpLCB0aGlzLCBtX3N0cmVhbS0+c2l6ZSgpKSk7CiB9CiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBq
c1ZhbHVlU291cmNlLCBFZGdlIG5vZGVVc2UsIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlz
dCYganVtcHNUb0ZhaWwpCkBAIC0xMzksNyArMTQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
c3BlY3VsYXRpb25DaGVjayhFeAogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJUKGF0KG1fY29t
cGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7CiAgICAg
bV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZFNwZWN1bGF0aW9uUmVjb3ZlcnkocmVjb3ZlcnkpOwot
ICAgIG1faml0LmFwcGVuZEV4aXRKdW1wKGp1bXBUb0ZhaWwpOworICAgIG1faml0LmFwcGVuZEV4
aXRJbmZvKGp1bXBUb0ZhaWwpOwogICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBlbmRPU1JFeGl0
KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQuZ3JhcGgoKS5tZXRob2RPZkdldHRp
bmdBVmFsdWVQcm9maWxlRm9yKG5vZGVJbmRleCksIHRoaXMsIG1fc3RyZWFtLT5zaXplKCksIG1f
aml0LmNvZGVCbG9jaygpLT5udW1iZXJPZlNwZWN1bGF0aW9uUmVjb3ZlcmllcygpKSk7CiB9CiAK
QEAgLTE2MSw3ICsxNjIsNyBAQCBKdW1wUmVwbGFjZW1lbnRXYXRjaHBvaW50KiBTcGVjdWxhdGl2
ZUpJCiAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICByZXR1cm4gMDsKICAgICBBU1NF
UlQoYXQobV9jb21waWxlSW5kZXgpLmNhbkV4aXQoKSB8fCBtX2lzQ2hlY2tpbmdBcmd1bWVudFR5
cGVzKTsKLSAgICBtX2ppdC5hcHBlbmRFeGl0SnVtcChKSVRDb21waWxlcjo6SnVtcCgpKTsKKyAg
ICBtX2ppdC5hcHBlbmRFeGl0SW5mbyhKSVRDb21waWxlcjo6SnVtcExpc3QoKSk7CiAgICAgT1NS
RXhpdCYgZXhpdCA9IG1faml0LmNvZGVCbG9jaygpLT5vc3JFeGl0KAogICAgICAgICBtX2ppdC5j
b2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdCgKICAgICAgICAgICAgIE9TUkV4aXQoa2luZCwganNW
YWx1ZVNvdXJjZSwKQEAgLTI3MCw5ICsyNzEsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpmb3J3
YXJkU3BlY3VsYXRpb25DCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpmb3J3YXJkU3BlY3VsYXRpb25D
aGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRl
eCBub2RlSW5kZXgsIGNvbnN0IE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYganVtcHNUb0ZhaWws
IGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHZhbHVlUmVjb3ZlcnkpCiB7CiAgICAgQVNTRVJUKGF0KG1f
Y29tcGlsZUluZGV4KS5jYW5FeGl0KCkgfHwgbV9pc0NoZWNraW5nQXJndW1lbnRUeXBlcyk7Ci0g
ICAgVmVjdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wLCAxNj4ganVtcFZlY3RvciA9IGp1bXBzVG9G
YWlsLmp1bXBzKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGp1bXBWZWN0b3Iuc2l6
ZSgpOyArK2kpCi0gICAgICAgIGZvcndhcmRTcGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVT
b3VyY2UsIG5vZGVJbmRleCwganVtcFZlY3RvcltpXSwgdmFsdWVSZWNvdmVyeSk7CisgICAgc3Bl
Y3VsYXRpb25DaGVjayhraW5kLCBqc1ZhbHVlU291cmNlLCBub2RlSW5kZXgsIGp1bXBzVG9GYWls
KTsKKyAgICBjb252ZXJ0TGFzdE9TUkV4aXRUb0ZvcndhcmQodmFsdWVSZWNvdmVyeSk7CiB9CiAK
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNW
YWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4LCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBqdW1wVG9GYWlsLCBTcGVjdWxhdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
Q29tcGlsYXRpb24uY3BwCShyZXZpc2lvbiAxMzgyMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0
LDkgKzc0LDkgQEAgRXhlY3V0aW9uQ291bnRlciogQ29tcGlsYXRpb246OmV4ZWN1dGlvbgogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ29tcGlsYXRpb246OmFkZE9TUkV4aXRTaXRlKGNv
bnN0IHZvaWQqIGNvZGVBZGRyZXNzKQordm9pZCBDb21waWxhdGlvbjo6YWRkT1NSRXhpdFNpdGUo
Y29uc3QgVmVjdG9yPGNvbnN0IHZvaWQqPiYgY29kZUFkZHJlc3NlcykKIHsKLSAgICBtX29zckV4
aXRTaXRlcy5hcHBlbmQoT1NSRXhpdFNpdGUoY29kZUFkZHJlc3MpKTsKKyAgICBtX29zckV4aXRT
aXRlcy5hcHBlbmQoT1NSRXhpdFNpdGUoY29kZUFkZHJlc3NlcykpOwogfQogCiBPU1JFeGl0KiBD
b21waWxhdGlvbjo6YWRkT1NSRXhpdCh1bnNpZ25lZCBpZCwgY29uc3QgT3JpZ2luU3RhY2smIG9y
aWdpblN0YWNrLCBFeGl0S2luZCBleGl0S2luZCwgYm9vbCBpc1dhdGNocG9pbnQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0
aW9uLmgJKHJldmlzaW9uIDEzODIwNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckNvbXBpbGF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAg
cHVibGljOgogICAgIAogICAgIHZvaWQgYWRkRGVzY3JpcHRpb24oY29uc3QgQ29tcGlsZWRCeXRl
Y29kZSYpOwogICAgIEV4ZWN1dGlvbkNvdW50ZXIqIGV4ZWN1dGlvbkNvdW50ZXJGb3IoY29uc3Qg
T3JpZ2luU3RhY2smKTsKLSAgICB2b2lkIGFkZE9TUkV4aXRTaXRlKGNvbnN0IHZvaWQqIGNvZGVB
ZGRyZXNzKTsKKyAgICB2b2lkIGFkZE9TUkV4aXRTaXRlKGNvbnN0IFZlY3Rvcjxjb25zdCB2b2lk
Kj4mIGNvZGVBZGRyZXNzZXMpOwogICAgIE9TUkV4aXQqIGFkZE9TUkV4aXQodW5zaWduZWQgaWQs
IGNvbnN0IE9yaWdpblN0YWNrJiwgRXhpdEtpbmQsIGJvb2wgaXNXYXRjaHBvaW50KTsKICAgICAK
ICAgICBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0U2l0ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdFNpdGUuY3BwCShy
ZXZpc2lvbiAxMzgyMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJPU1JFeGl0U2l0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm9maWxlck9TUkV4aXRTaXRlLmgiCiAKKyNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkpTU2NvcGUuaCIKICNpbmNsdWRlICJK
U1N0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgpAQCAtMzQsNyAr
MzUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxlciB7CiAKIEpTVmFsdWUg
T1NSRXhpdFNpdGU6OnRvSlMoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogewotICAgIHJldHVybiBq
c1N0cmluZyhleGVjLCB0b1N0cmluZyhSYXdQb2ludGVyKG1fY29kZUFkZHJlc3MpKSk7CisgICAg
SlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9jb2RlQWRkcmVzc2VzLnNpemUoKTsgKytpKQorICAgICAg
ICByZXN1bHQtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIGpzU3RyaW5nKGV4ZWMsIHRvU3RyaW5n
KFJhd1BvaW50ZXIobV9jb2RlQWRkcmVzc2VzW2ldKSkpKTsKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UHJvZmlsZXIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXRTaXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdFNpdGUuaAkocmV2aXNp
b24gMTM4MjA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NS
RXhpdFNpdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjIgKzI3LDIzIEBACiAjZGVmaW5lIFBy
b2ZpbGVyT1NSRXhpdFNpdGVfaAogCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxlciB7CiAKIGNs
YXNzIE9TUkV4aXRTaXRlIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBPU1JFeGl0U2l0ZShjb25z
dCB2b2lkKiBjb2RlQWRkcmVzcykKLSAgICAgICAgOiBtX2NvZGVBZGRyZXNzKGNvZGVBZGRyZXNz
KQorICAgIGV4cGxpY2l0IE9TUkV4aXRTaXRlKGNvbnN0IFZlY3Rvcjxjb25zdCB2b2lkKj4mIGNv
ZGVBZGRyZXNzZXMpCisgICAgICAgIDogbV9jb2RlQWRkcmVzc2VzKGNvZGVBZGRyZXNzZXMpCiAg
ICAgewogICAgIH0KICAgICAKLSAgICBjb25zdCB2b2lkKiBjb2RlQWRkcmVzcygpIGNvbnN0IHsg
cmV0dXJuIG1fY29kZUFkZHJlc3M7IH0KKyAgICBjb25zdCBWZWN0b3I8Y29uc3Qgdm9pZCo+JiBj
b2RlQWRkcmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fY29kZUFkZHJlc3NlczsgfQogICAgIAogICAg
IEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBjb25zdCB2
b2lkKiBtX2NvZGVBZGRyZXNzOworICAgIFZlY3Rvcjxjb25zdCB2b2lkKj4gbV9jb2RlQWRkcmVz
c2VzOwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlByb2ZpbGVyCkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzgyMDYp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0xMi0xOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIERGRyBz
cGVjdWxhdGlvbiBjaGVja3MgdGhhdCB0YWtlIEp1bXBMaXN0IHNob3VsZCBjb25zb2xpZGF0ZSBP
U1JFeGl0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA1NDAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VXBkYXRlIHRoZSBwcm9maWxlciB0byB1bmRlcnN0YW5kIHRoYXQgYW4gT1NSIGV4aXQgbWF5IGhh
dmUgbXVsdGlwbGUKKyAgICAgICAgY2FuZGlkYXRlIGV4aXQgc2l0ZXMuCisKKyAgICAgICAgKiBT
Y3JpcHRzL2Rpc3BsYXktcHJvZmlsZXItb3V0cHV0OgorCiAyMDEyLTEyLTE5ICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFBlcmZUZXN0LnBhcnNlX291dHB1dCBk
b2VzIHRvbyBtdWNoCkluZGV4OiBUb29scy9TY3JpcHRzL2Rpc3BsYXktcHJvZmlsZXItb3V0cHV0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvZGlzcGxheS1wcm9maWxlci1vdXRwdXQJKHJl
dmlzaW9uIDEzODIwNikKKysrIFRvb2xzL1NjcmlwdHMvZGlzcGxheS1wcm9maWxlci1vdXRwdXQJ
KHdvcmtpbmcgY29weSkKQEAgLTMwOCwxMiArMzA4LDEyIEBAIGNsYXNzIEV4ZWN1dGlvbkNvdW50
ZXIKIGVuZAogCiBjbGFzcyBPU1JFeGl0Ci0gICAgYXR0cl9yZWFkZXIgOmNvbXBpbGF0aW9uLCA6
b3JpZ2luLCA6Y29kZUFkZHJlc3MsIDpleGl0S2luZCwgOmlzV2F0Y2hwb2ludCwgOmNvdW50Cisg
ICAgYXR0cl9yZWFkZXIgOmNvbXBpbGF0aW9uLCA6b3JpZ2luLCA6Y29kZUFkZHJlc3NlcywgOmV4
aXRLaW5kLCA6aXNXYXRjaHBvaW50LCA6Y291bnQKICAgICAKLSAgICBkZWYgaW5pdGlhbGl6ZShj
b21waWxhdGlvbiwgb3JpZ2luLCBjb2RlQWRkcmVzcywgZXhpdEtpbmQsIGlzV2F0Y2hwb2ludCwg
Y291bnQpCisgICAgZGVmIGluaXRpYWxpemUoY29tcGlsYXRpb24sIG9yaWdpbiwgY29kZUFkZHJl
c3NlcywgZXhpdEtpbmQsIGlzV2F0Y2hwb2ludCwgY291bnQpCiAgICAgICAgIEBjb21waWxhdGlv
biA9IGNvbXBpbGF0aW9uCiAgICAgICAgIEBvcmlnaW4gPSBvcmlnaW4KLSAgICAgICAgQGNvZGVB
ZGRyZXNzID0gY29kZUFkZHJlc3MKKyAgICAgICAgQGNvZGVBZGRyZXNzZXMgPSBjb2RlQWRkcmVz
c2VzCiAgICAgICAgIEBleGl0S2luZCA9IGV4aXRLaW5kCiAgICAgICAgIEBpc1dhdGNocG9pbnQg
PSBpc1dhdGNocG9pbnQKICAgICAgICAgQGNvdW50ID0gY291bnQKQEAgLTM1OCwxMCArMzU4LDE2
IEBAIGNsYXNzIENvbXBpbGF0aW9uCiAgICAgICAgIGpzb25bIm9zckV4aXRzIl0uZWFjaCB7CiAg
ICAgICAgICAgICB8IHN1Ykpzb24gfAogICAgICAgICAgICAgb3NyRXhpdCA9IE9TUkV4aXQubmV3
KHNlbGYsIG9yaWdpblN0YWNrRnJvbUpTT04oc3ViSnNvblsib3JpZ2luIl0pLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGpzb25bIm9zckV4aXRTaXRlcyJdW3N1Ykpzb25bImlk
Il1dLmhleCwgc3ViSnNvblsiZXhpdEtpbmQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdWJKc29uWyJpc1dhdGNocG9pbnQiXSwgc3ViSnNvblsiY291bnQiXSkKLSAgICAg
ICAgICAgIG9zckV4aXRzW29zckV4aXQuY29kZUFkZHJlc3NdID0gW10gdW5sZXNzIG9zckV4aXRz
W29zckV4aXQuY29kZUFkZHJlc3NdCi0gICAgICAgICAgICBvc3JFeGl0c1tvc3JFeGl0LmNvZGVB
ZGRyZXNzXSA8PCBvc3JFeGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganNv
blsib3NyRXhpdFNpdGVzIl1bc3ViSnNvblsiaWQiXV0ubWFwIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCB2YWx1ZSB8CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlLmhleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IH0sIHN1Ykpzb25bImV4aXRLaW5kIl0sIHN1Ykpzb25bImlzV2F0Y2hwb2ludCJdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Ykpzb25bImNvdW50Il0pCisgICAgICAgICAg
ICBvc3JFeGl0LmNvZGVBZGRyZXNzZXMuZWFjaCB7CisgICAgICAgICAgICAgICAgfCBjb2RlQWRk
cmVzcyB8CisgICAgICAgICAgICAgICAgb3NyRXhpdHNbY29kZUFkZHJlc3NdID0gW10gdW5sZXNz
IG9zckV4aXRzW2NvZGVBZGRyZXNzXQorICAgICAgICAgICAgICAgIG9zckV4aXRzW2NvZGVBZGRy
ZXNzXSA8PCBvc3JFeGl0CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBvc3JFeGl0Lm9yaWdp
blstMV0ub3NyRXhpdHMgPDwgb3NyRXhpdAogICAgICAgICB9CiAgICAgICAgIEBwcm9maWxlZEJ5
dGVjb2RlcyA9IFtdCg==
</data>
<flag name="review"
          id="197505"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>