<?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>119758</bug_id>
          
          <creation_ts>2013-08-13 10:36:26 -0700</creation_ts>
          <short_desc>[sh4] Prepare baseline JIT for DFG_JIT implementation for sh4 architecture.</short_desc>
          <delta_ts>2013-08-14 02:10:24 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>119737</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Brianceau">jbriance</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>916786</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-08-13 10:36:26 -0700</bug_when>
    <thetext>Prepare baseline JIT for DFG_JIT implementation for sh4 architecture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916797</commentid>
    <comment_count>1</comment_count>
      <attachid>208653</attachid>
    <who name="Julien Brianceau">jbriance</who>
    <bug_when>2013-08-13 10:51:23 -0700</bug_when>
    <thetext>Created attachment 208653
Prepare baseline JIT for DFG_JIT implementation for sh4 architecture.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916833</commentid>
    <comment_count>2</comment_count>
      <attachid>208653</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-13 11:58:07 -0700</bug_when>
    <thetext>Comment on attachment 208653
Prepare baseline JIT for DFG_JIT implementation for sh4 architecture.

Clearing flags on attachment: 208653

Committed r154016: &lt;http://trac.webkit.org/changeset/154016&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916834</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-13 11:58:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208653</attachid>
            <date>2013-08-13 10:51:23 -0700</date>
            <delta_ts>2013-08-13 11:58:07 -0700</delta_ts>
            <desc>Prepare baseline JIT for DFG_JIT implementation for sh4 architecture.</desc>
            <filename>bug-119758.patch</filename>
            <type>text/plain</type>
            <size>47275</size>
            <attacher name="Julien Brianceau">jbriance</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTU0MDA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDEzLTA4LTEzICBKdWxpZW4gQnJpYW5jZWF1ICA8amJyaWFuY2VhdUBuZHMuY29tPgorCisg
ICAgICAgIFtzaDRdIFByZXBhcmUgYmFzZWxpbmUgSklUIGZvciBERkdfSklUIGltcGxlbWVudGF0
aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE5
NzU4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBh
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaDoKKyAgICAgICAgICAgIC0gSW50cm9kdWNlIGEg
bG9hZEVmZmVjdGl2ZUFkZHJlc3MgZnVuY3Rpb24gdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi4K
KyAgICAgICAgICAgIC0gQWRkIEFTU0VSVHMgYW5kIGNsZWFuIGNvZGUuCisgICAgICAgICogYXNz
ZW1ibGVyL1NINEFzc2VtYmxlci5oOgorICAgICAgICAgICAgLSBQcmVwYXJlIERGR19KSVQgaW1w
bGVtZW50YXRpb24uCisgICAgICAgICAgICAtIEFkZCBBU1NFUlRzLgorICAgICAgICAqIGppdC9K
SVRTdHVicy5jcHA6CisgICAgICAgICAgICAtIEFkZCBTSDQgc3BlY2lmaWMgY2FsbCBmb3IgYXNz
ZXJ0aW9ucy4KKyAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKKyAgICAgICAgICAgIC0gQ29zbWV0
aWMgY2hhbmdlLgorICAgICAgICAqIGppdC9KSVRTdHVic1NINC5oOgorICAgICAgICAgICAgLSBV
c2UgY29uc3RhbnRzIHRvIGJlIG1vcmUgZmxleGlibGUgd2l0aCBzaDQgSklUIHN0YWNrIGZyYW1l
LgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAgICAgLSBDb3NtZXRp
YyBjaGFuZ2UuCisKIDIwMTMtMDgtMTMgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmpl
bnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXggQysrMTEgYnVpbGQgd2l0aCBnY2Mg
NC40IGFuZCA0LjUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJTSDQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyU0g0LmgJKHJldmlzaW9uIDE1Mzk5OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuaAkod29ya2luZyBjb3B5KQpA
QCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBTSDRBc3NlbWJsZXI6OkZQUmVn
aXN0ZXJJRCBGUFJlZ2lzdGVySUQ7CiAKICAgICBzdGF0aWMgY29uc3QgU2NhbGUgU2NhbGVQdHIg
PSBUaW1lc0ZvdXI7Ci0gICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmc2NyYXRjaCA9IFNI
NFJlZ2lzdGVyczo6ZnIxMDsKKyAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZzY3JhdGNo
ID0gU0g0UmVnaXN0ZXJzOjpkcjEwOwogICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHN0YWNr
UG9pbnRlclJlZ2lzdGVyID0gU0g0UmVnaXN0ZXJzOjpzcDsKICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCBsaW5rUmVnaXN0ZXIgPSBTSDRSZWdpc3RlcnM6OnByOwogICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIHNjcmF0Y2hSZWczID0gU0g0UmVnaXN0ZXJzOjpyMTM7CkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29sIGlzQ29tcGFjdFB0ckFsaWduZWRBZGRy
ZXNzT2Zmc2V0KHB0cmRpZmZfdCB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiAodmFsdWUg
Pj0gMCkgJiYgKHZhbHVlIDw9IE1heGltdW1Db21wYWN0UHRyQWxpZ25lZEFkZHJlc3NPZmZzZXQp
OworICAgICAgICByZXR1cm4gKHZhbHVlID49IDApICYmICh2YWx1ZSA8PSBNYXhpbXVtQ29tcGFj
dFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KSAmJiAoISh2YWx1ZSAmIDMpKTsKICAgICB9CiAKICAg
ICBlbnVtIFJlbGF0aW9uYWxDb25kaXRpb24gewpAQCAtMTI2LDggKzEyNiw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdmxSZWdSZWcoc3JjLCBkZXN0KTsKKyAgICAgICAgbW92ZShzcmMsIGRl
c3QpOwogICAgICAgICBhZGQzMihpbW0sIGRlc3QpOwogICAgIH0KIApAQCAtMTY2LDYgKzE2NSwx
MSBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CisgICAgICAgIGlmICghaW1tLm1fdmFsdWUpIHsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdkltbTgoMCwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKwogICAgICAgICBpZiAoKGltbS5tX3ZhbHVlIDw9IDI1NSkgJiYgKGltbS5tX3ZhbHVl
ID49IDApICYmIChkZXN0ID09IFNINFJlZ2lzdGVyczo6cjApKSB7CiAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5hbmRsSW1tOHIoaW1tLm1fdmFsdWUsIGRlc3QpOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMjE2LDkgKzIyMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0
ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBzaGlmdGFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKLSAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAgICAgICAgICAgbW92ZShzcmMsIGRlc3Qp
OwotCisgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKICAgICAgICAgbHNoaWZ0MzIoc2hpZnRhbW91
bnQsIGRlc3QpOwogICAgIH0KIApAQCAtMjMwLDEyICsyMzIsMTUgQEAgcHVibGljOgogCiAgICAg
dm9pZCBtdWwzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKLSAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKLSAg
ICAgICAgbW92ZShpbW0sIHNjcik7Ci0gICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAg
ICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAgbXVsMzIoc2NyLCBkZXN0KTsKLSAgICAgICAg
cmVsZWFzZVNjcmF0Y2goc2NyKTsKKyAgICAgICAgaWYgKHNyYyA9PSBkZXN0KSB7CisgICAgICAg
ICAgICBSZWdpc3RlcklEIGltbXZhbCA9IGNsYWltU2NyYXRjaCgpOworICAgICAgICAgICAgbW92
ZShpbW0sIGltbXZhbCk7CisgICAgICAgICAgICBtdWwzMihpbW12YWwsIGRlc3QpOworICAgICAg
ICAgICAgcmVsZWFzZVNjcmF0Y2goaW1tdmFsKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIG1vdmUoaW1tLCBkZXN0KTsKKyAgICAgICAgICAgIG11bDMyKHNyYywgZGVzdCk7CisgICAg
ICAgIH0KICAgICB9CiAKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKQEAgLTMxOSw4ICszMjQsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHJzaGlmdDMyKFJl
Z2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewot
ICAgICAgICBpZiAoc3JjICE9IGRlc3QpCi0gICAgICAgICAgICBtb3ZlKHNyYywgZGVzdCk7Cisg
ICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKICAgICAgICAgcnNoaWZ0MzIoaW1tLCBkZXN0KTsKICAg
ICB9CiAKQEAgLTMzNyw3ICszNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZ2lzdGVySUQgcmVz
dWx0ID0gY2xhaW1TY3JhdGNoKCk7CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZyA9IGNs
YWltU2NyYXRjaCgpOwogCi0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChyZWludGVy
cHJldF9jYXN0PHVpbnQzMl90PihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZyk7CisgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZyk7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcoc2NyYXRjaFJlZywgcmVzdWx0KTsKIAogICAgICAgICBp
ZiAobV9hc3NlbWJsZXIuaXNJbW1lZGlhdGUoLWltbS5tX3ZhbHVlKSkKQEAgLTM2MCw3ICszNjQs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFJlZ2lzdGVySUQgcmVzdWx0ID0gY2xhaW1TY3JhdGNoKCk7
CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyYXRjaFJlZyA9IGNsYWltU2NyYXRjaCgpOwogCi0gICAg
ICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChyZWludGVycHJldF9jYXN0PHVpbnQzMl90Pihh
ZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZyk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihh
ZGRyZXNzLm1fcHRyKSwgc2NyYXRjaFJlZyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1S
ZWcoc2NyYXRjaFJlZywgcmVzdWx0KTsKIAogICAgICAgICBpZiAobV9hc3NlbWJsZXIuaXNJbW1l
ZGlhdGUoaW1tLm1fdmFsdWUpKQpAQCAtMzgxLDIzICszODUsMjEgQEAgcHVibGljOgogICAgICAg
ICBSZWdpc3RlcklEIHNjcjIgPSBjbGFpbVNjcmF0Y2goKTsKIAogICAgICAgICAvLyBBZGQgMzIt
Yml0IExTQiBmaXJzdC4KLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDMyX3Q+KGFkZHJlc3MubV9wdHIpLCBzY3IxKTsKLSAgICAgICAgbV9hc3Nl
bWJsZXIubW92bE1lbVJlZyhzY3IxLCBzY3IxKTsgLy8gc2NyMSA9IDMyLWJpdCBMU0Igb2YgaW50
NjQgQCBhZGRyZXNzCisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzLm1fcHRyKSwg
c2NyYXRjaFJlZzMpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKHNjcmF0Y2hSZWcz
LCBzY3IxKTsgLy8gc2NyMSA9IDMyLWJpdCBMU0Igb2YgaW50NjQgQCBhZGRyZXNzCiAgICAgICAg
IG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChpbW0ubV92YWx1ZSwgc2NyMik7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmNscnQoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkY2xSZWdSZWcoc2NyMSwg
c2NyMik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChyZWludGVycHJldF9jYXN0
PHVpbnQzMl90PihhZGRyZXNzLm1fcHRyKSwgc2NyMSk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1v
dmxSZWdNZW0oc2NyMiwgc2NyMSk7IC8vIFVwZGF0ZSBhZGRyZXNzIHdpdGggMzItYml0IExTQiBy
ZXN1bHQuCisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxSZWdNZW0oc2NyMiwgc2NyYXRjaFJlZzMp
OyAvLyBVcGRhdGUgYWRkcmVzcyB3aXRoIDMyLWJpdCBMU0IgcmVzdWx0LgogCiAgICAgICAgIC8v
IFRoZW4gYWRkIDMyLWJpdCBNU0IuCi0gICAgICAgIG1fYXNzZW1ibGVyLmFkZGxJbW04cig0LCBz
Y3IxKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhzY3IxLCBzY3IxKTsgLy8gc2Ny
MSA9IDMyLWJpdCBNU0Igb2YgaW50NjQgQCBhZGRyZXNzCisgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZGxJbW04cig0LCBzY3JhdGNoUmVnMyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWco
c2NyYXRjaFJlZzMsIHNjcjEpOyAvLyBzY3IxID0gMzItYml0IE1TQiBvZiBpbnQ2NCBAIGFkZHJl
c3MKICAgICAgICAgbV9hc3NlbWJsZXIubW92dChzY3IyKTsKICAgICAgICAgaWYgKGltbS5tX3Zh
bHVlIDwgMCkKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxJbW04cigtMSwgc2NyMik7IC8v
IFNpZ24gZXh0ZW5kIGltbSB2YWx1ZSBpZiBuZWVkZWQuCiAgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZHZsUmVnUmVnKHNjcjIsIHNjcjEpOwotICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQo
cmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oYWRkcmVzcy5tX3B0cikgKyA0LCBzY3IyKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIubW92bFJlZ01lbShzY3IxLCBzY3IyKTsgLy8gVXBkYXRlIChhZGRy
ZXNzICsgNCkgd2l0aCAzMi1iaXQgTVNCIHJlc3VsdC4KKyAgICAgICAgbV9hc3NlbWJsZXIubW92
bFJlZ01lbShzY3IxLCBzY3JhdGNoUmVnMyk7IC8vIFVwZGF0ZSAoYWRkcmVzcyArIDQpIHdpdGgg
MzItYml0IE1TQiByZXN1bHQuCiAKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyMik7CiAgICAg
ICAgIHJlbGVhc2VTY3JhdGNoKHNjcjEpOwpAQCAtNDU3LDYgKzQ1OSwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoKChjb25kID09IEVx
dWFsKSB8fCAoY29uZCA9PSBOb3RFcXVhbCkpICYmICFpbW0pIHsKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnRlc3RsUmVnUmVnKGRzdCwgZHN0KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7CiAgICAgICAg
IG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChpbW0sIHNjcik7CiAgICAgICAgIG1fYXNzZW1ibGVy
LmNtcGxSZWdSZWcoc2NyLCBkc3QsIFNINENvbmRpdGlvbihjb25kKSk7CkBAIC00OTAsMjAgKzQ5
NywxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXN0SW1tKGludCBpbW0sIGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3Jh
dGNoKCk7Ci0gICAgICAgIFJlZ2lzdGVySUQgc2NyMSA9IGNsYWltU2NyYXRjaCgpOworICAgICAg
ICBsb2FkMzIoYmFzZSwgb2Zmc2V0LCBzY3IpOwogCi0gICAgICAgIGlmICgob2Zmc2V0IDwgMCkg
fHwgKG9mZnNldCA+PSA2NCkpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFu
dChvZmZzZXQsIHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRsUmVnUmVnKGJhc2Us
IHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKHNjciwgc2NyKTsKLSAg
ICAgICAgfSBlbHNlIGlmIChvZmZzZXQpCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVt
UmVnKG9mZnNldCA+PiAyLCBiYXNlLCBzY3IpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X2Fzc2VtYmxlci5tb3ZsTWVtUmVnKGJhc2UsIHNjcik7Ci0gICAgICAgIGlmIChtX2Fzc2VtYmxl
ci5pc0ltbWVkaWF0ZShpbW0pKQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92SW1tOChpbW0s
IHNjcjEpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3Rh
bnQoaW1tLCBzY3IxKTsKKyAgICAgICAgUmVnaXN0ZXJJRCBzY3IxID0gY2xhaW1TY3JhdGNoKCk7
CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbTMyKGltbSksIHNjcjEpOwogCiAgICAgICAgIG1fYXNz
ZW1ibGVyLnRlc3RsUmVnUmVnKHNjciwgc2NyMSk7CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNj
cik7CkBAIC01NTEsNDEgKzU0OCwzNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbXBhcmUzMihp
bnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlbGF0aW9uYWxDb25kaXRpb24g
Y29uZCkKICAgICB7Ci0gICAgICAgIGlmICghb2Zmc2V0KSB7Ci0gICAgICAgICAgICBSZWdpc3Rl
cklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICAgICAgUmVnaXN0ZXJJRCBzY3IxID0g
Y2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsTWVtUmVnKGJhc2Us
IHNjcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoaW1tLCBzY3IxKTsK
LSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxSZWdSZWcoc2NyMSwgc2NyLCBTSDRDb25kaXRp
b24oY29uZCkpOwotICAgICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyMSk7Ci0gICAgICAgICAg
ICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKChvZmZzZXQgPCAwKSB8fCAob2Zmc2V0ID49IDY0KSkgewotICAgICAgICAg
ICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgICAgIFJlZ2lzdGVy
SUQgc2NyMSA9IGNsYWltU2NyYXRjaCgpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9hZENv
bnN0YW50KG9mZnNldCwgc2NyKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxSZWdSZWco
YmFzZSwgc2NyKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcoc2NyLCBzY3Ip
OwotICAgICAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KGltbSwgc2NyMSk7Ci0gICAg
ICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKHNjcjEsIHNjciwgU0g0Q29uZGl0aW9uKGNv
bmQpKTsKLSAgICAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcjEpOwotICAgICAgICAgICAgcmVs
ZWFzZVNjcmF0Y2goc2NyKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCiAgICAg
ICAgIFJlZ2lzdGVySUQgc2NyID0gY2xhaW1TY3JhdGNoKCk7CisgICAgICAgIGxvYWQzMihiYXNl
LCBvZmZzZXQsIHNjcik7CisKICAgICAgICAgUmVnaXN0ZXJJRCBzY3IxID0gY2xhaW1TY3JhdGNo
KCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcob2Zmc2V0ID4+IDIsIGJhc2UsIHNj
cik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChpbW0sIHNjcjEpOworICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW0zMihpbW0pLCBzY3IxKTsKKwogICAgICAgICBtX2Fzc2VtYmxlci5j
bXBsUmVnUmVnKHNjcjEsIHNjciwgU0g0Q29uZGl0aW9uKGNvbmQpKTsKKwogICAgICAgICByZWxl
YXNlU2NyYXRjaChzY3IxKTsKICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKICAgICB9CiAK
ICAgICAvLyBNZW1vcnkgYWNjZXNzIG9wZXJhdGlvbgogCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IGxvYWRFZmZlY3RpdmVBZGRyZXNzKEJhc2VJbmRleCBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3Qs
IGludCBleHRyYW9mZnNldCA9IDApCisgICAgeworICAgICAgICBpZiAoZGVzdCA9PSBhZGRyZXNz
LmJhc2UpIHsKKyAgICAgICAgICAgIFJlZ2lzdGVySUQgc2NhbGVkSW5kZXggPSBjbGFpbVNjcmF0
Y2goKTsKKyAgICAgICAgICAgIG1vdmUoYWRkcmVzcy5pbmRleCwgc2NhbGVkSW5kZXgpOworICAg
ICAgICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBzY2FsZWRJbmRl
eCk7CisgICAgICAgICAgICBhZGQzMihzY2FsZWRJbmRleCwgZGVzdCk7CisgICAgICAgICAgICBy
ZWxlYXNlU2NyYXRjaChzY2FsZWRJbmRleCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICBtb3ZlKGFkZHJlc3MuaW5kZXgsIGRlc3QpOworICAgICAgICAgICAgbHNoaWZ0MzIoVHJ1c3Rl
ZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBkZXN0KTsKKyAgICAgICAgICAgIGFkZDMyKGFkZHJlc3Mu
YmFzZSwgZGVzdCk7CisgICAgICAgIH0KKworICAgICAgICBhZGQzMihUcnVzdGVkSW1tMzIoYWRk
cmVzcy5vZmZzZXQgKyBleHRyYW9mZnNldCksIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgbG9h
ZDMyKEltcGxpY2l0QWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBsb2FkMzIoYWRkcmVzcy5iYXNlLCBhZGRyZXNzLm9mZnNldCwgZGVzdCk7CkBAIC02MzQs
NyArNjI3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkMzIoY29uc3Qgdm9pZCogYWRkcmVz
cywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0
YW50KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGNvbnN0X2Nhc3Q8dm9pZCo+KGFkZHJlc3Mp
KSwgZGVzdCk7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNzKSwgZGVzdCk7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcoZGVzdCwgZGVzdCk7CiAgICAgfQogCkBAIC03
MzMsMTUgKzcyNiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBsb2FkMTZVbmFsaWduZWQoQmFzZUlu
ZGV4IGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIFJlZ2lzdGVySUQg
c2NyID0gY2xhaW1TY3JhdGNoKCk7Ci0gICAgICAgIFJlZ2lzdGVySUQgc2NyMSA9IGNsYWltU2Ny
YXRjaCgpOwotCi0gICAgICAgIG1vdmUoYWRkcmVzcy5pbmRleCwgc2NyKTsKLSAgICAgICAgbHNo
aWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBzY3IpOwogCi0gICAgICAgIGlmIChh
ZGRyZXNzLm9mZnNldCkKLSAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9m
ZnNldCksIHNjcik7CisgICAgICAgIGxvYWRFZmZlY3RpdmVBZGRyZXNzKGFkZHJlc3MsIHNjcik7
CiAKLSAgICAgICAgYWRkMzIoYWRkcmVzcy5iYXNlLCBzY3IpOworICAgICAgICBSZWdpc3RlcklE
IHNjcjEgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAgbG9hZDhQb3N0SW5jKHNjciwgc2NyMSk7
CiAgICAgICAgIGxvYWQ4KHNjciwgZGVzdCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNobGxJbW04
cig4LCBkZXN0KTsKQEAgLTc4MCw5ICs3NjgsNyBAQCBwdWJsaWM6CiAKICAgICAgICAgbW92ZShh
ZGRyZXNzLmluZGV4LCBzY3IpOwogICAgICAgICBsc2hpZnQzMihUcnVzdGVkSW1tMzIoYWRkcmVz
cy5zY2FsZSksIHNjcik7Ci0KLSAgICAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0KQotICAgICAgICAg
ICAgYWRkMzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgc2NyKTsKKyAgICAgICAgYWRk
MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgc2NyKTsKIAogICAgICAgICBpZiAoYWRk
cmVzcy5iYXNlID09IFNINFJlZ2lzdGVyczo6cjApCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5t
b3Z3UjBtcihzY3IsIGRlc3QpOwpAQCAtODE0LDEwICs4MDAsMTEgQEAgcHVibGljOgogCiAgICAg
dm9pZCBzdG9yZTgoVHJ1c3RlZEltbTMyIGltbSwgdm9pZCogYWRkcmVzcykKICAgICB7Ci0gICAg
ICAgIFJlZ2lzdGVySUQgc3JjdmFsID0gY2xhaW1TY3JhdGNoKCk7CisgICAgICAgIEFTU0VSVCgo
aW1tLm1fdmFsdWUgPj0gLTEyOCkgJiYgKGltbS5tX3ZhbHVlIDw9IDEyNykpOwogICAgICAgICBS
ZWdpc3RlcklEIGRzdHB0ciA9IGNsYWltU2NyYXRjaCgpOworICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYWRkcmVzcyksIGRzdHB0cik7CisgICAgICAgIFJlZ2lzdGVySUQgc3JjdmFsID0gY2xh
aW1TY3JhdGNoKCk7CiAgICAgICAgIG1vdmUoaW1tLCBzcmN2YWwpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5sb2FkQ29uc3RhbnQocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oYWRkcmVzcyksIGRz
dHB0cik7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmJSZWdNZW0oc3JjdmFsLCBkc3RwdHIpOwog
ICAgICAgICByZWxlYXNlU2NyYXRjaChkc3RwdHIpOwogICAgICAgICByZWxlYXNlU2NyYXRjaChz
cmN2YWwpOwpAQCAtODk0LDcgKzg4MSw3IEBAIHB1YmxpYzoKICAgICAgICAgUmVnaXN0ZXJJRCBz
Y3IgPSBjbGFpbVNjcmF0Y2goKTsKICAgICAgICAgUmVnaXN0ZXJJRCBzY3IxID0gY2xhaW1TY3Jh
dGNoKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChpbW0ubV92YWx1ZSwgc2Ny
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3Q+KGFkZHJlc3MpLCBzY3IxKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJl
c3MpLCBzY3IxKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92bFJlZ01lbShzY3IsIHNjcjEpOwog
ICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwogICAgICAgICByZWxlYXNlU2NyYXRjaChzY3Ix
KTsKQEAgLTkwMyw3ICs4OTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVy
SUQgc3JjLCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBj
bGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDMyX3Q+KGFkZHJlc3MpLCBzY3IpOworICAgICAgICBtb3ZlKFRydXN0ZWRJ
bW1QdHIoYWRkcmVzcyksIHNjcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxSZWdNZW0oc3Jj
LCBzY3IpOwogICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwogICAgIH0KQEAgLTkzMyw4ICs5
MjAsNyBAQCBwdWJsaWM6CiAgICAgRGF0YUxhYmVsQ29tcGFjdCBsb2FkMzJXaXRoQ29tcGFjdEFk
ZHJlc3NPZmZzZXRQYXRjaChBZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIERhdGFMYWJlbENvbXBhY3QgZGF0YUxhYmVsKHRoaXMpOwotICAgICAgICBBU1NF
UlQoYWRkcmVzcy5vZmZzZXQgPD0gTWF4aW11bUNvbXBhY3RQdHJBbGlnbmVkQWRkcmVzc09mZnNl
dCk7Ci0gICAgICAgIEFTU0VSVChhZGRyZXNzLm9mZnNldCA+PSAwKTsKKyAgICAgICAgQVNTRVJU
KGlzQ29tcGFjdFB0ckFsaWduZWRBZGRyZXNzT2Zmc2V0KGFkZHJlc3Mub2Zmc2V0KSk7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWdDb21wYWN0KGFkZHJlc3Mub2Zmc2V0ID4+IDIsIGFk
ZHJlc3MuYmFzZSwgZGVzdCk7CiAgICAgICAgIHJldHVybiBkYXRhTGFiZWw7CiAgICAgfQpAQCAt
OTY3LDkgKzk1Myw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3RzZnB1bFJlZyhk
ZXN0Mik7CiAgICAgfQogCi0gICAgdm9pZCBtb3ZlSW50c1RvRG91YmxlKFJlZ2lzdGVySUQgc3Jj
MSwgUmVnaXN0ZXJJRCBzcmMyLCBGUFJlZ2lzdGVySUQgZGVzdCwgRlBSZWdpc3RlcklEIHNjcmF0
Y2gpCisgICAgdm9pZCBtb3ZlSW50c1RvRG91YmxlKFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJ
RCBzcmMyLCBGUFJlZ2lzdGVySUQgZGVzdCwgRlBSZWdpc3RlcklEKQogICAgIHsKLSAgICAgICAg
VU5VU0VEX1BBUkFNKHNjcmF0Y2gpOwogICAgICAgICBtX2Fzc2VtYmxlci5sZHNybWZwdWwoc3Jj
MSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmZzdHNmcHVsKChGUFJlZ2lzdGVySUQpKGRlc3QgKyAx
KSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmxkc3JtZnB1bChzcmMyKTsKQEAgLTk4OCwxMSArOTcz
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0
Y2goKTsKIAotICAgICAgICBtb3ZlKGFkZHJlc3MuaW5kZXgsIHNjcik7Ci0gICAgICAgIGxzaGlm
dDMyKFRydXN0ZWRJbW0zMihhZGRyZXNzLnNjYWxlKSwgc2NyKTsKLSAgICAgICAgYWRkMzIoYWRk
cmVzcy5iYXNlLCBzY3IpOwotICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQpCi0gICAgICAgICAg
ICBhZGQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQpLCBzY3IpOworICAgICAgICBsb2Fk
RWZmZWN0aXZlQWRkcmVzcyhhZGRyZXNzLCBzY3IpOwogCiAgICAgICAgIG1fYXNzZW1ibGVyLmZt
b3ZzUmVhZHJtKHNjciwgZGVzdCk7CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CkBAIC0x
MDAyLDExICs5ODMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBSZWdpc3RlcklEIHNjciA9
IGNsYWltU2NyYXRjaCgpOwogCi0gICAgICAgIG1vdmUoYWRkcmVzcy5pbmRleCwgc2NyKTsKLSAg
ICAgICAgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Muc2NhbGUpLCBzY3IpOwotICAgICAg
ICBhZGQzMihhZGRyZXNzLmJhc2UsIHNjcik7Ci0gICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCkK
LSAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0zMihhZGRyZXNzLm9mZnNldCksIHNjcik7Cisg
ICAgICAgIGxvYWRFZmZlY3RpdmVBZGRyZXNzKGFkZHJlc3MsIHNjcik7CiAKICAgICAgICAgbV9h
c3NlbWJsZXIuZm1vdnNSZWFkcm1pbmMoc2NyLCAoRlBSZWdpc3RlcklEKShkZXN0ICsgMSkpOwog
ICAgICAgICBtX2Fzc2VtYmxlci5mbW92c1JlYWRybShzY3IsIGRlc3QpOwpAQCAtMTAzNSw3ICsx
MDEyLDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9hZERvdWJsZShjb25zdCB2b2lkKiBhZGRyZXNz
LCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0gY2xh
aW1TY3JhdGNoKCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFudChyZWludGVycHJl
dF9jYXN0PHVpbnQzMl90PihhZGRyZXNzKSwgc2NyKTsKKyAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGFkZHJlc3MpLCBzY3IpOwogICAgICAgICBtX2Fzc2VtYmxlci5mbW92c1JlYWRybWluYyhz
Y3IsIChGUFJlZ2lzdGVySUQpKGRlc3QgKyAxKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmZtb3Zz
UmVhZHJtKHNjciwgZGVzdCk7CiAgICAgICAgIHJlbGVhc2VTY3JhdGNoKHNjcik7CkBAIC0xMDQ0
LDE1ICsxMDIxLDggQEAgcHVibGljOgogICAgIHZvaWQgc3RvcmVGbG9hdChGUFJlZ2lzdGVySUQg
c3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAgICAgIFJlZ2lzdGVySUQgc2NyID0g
Y2xhaW1TY3JhdGNoKCk7Ci0KLSAgICAgICAgbW92ZShhZGRyZXNzLmluZGV4LCBzY3IpOwotICAg
ICAgICBsc2hpZnQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5zY2FsZSksIHNjcik7Ci0gICAgICAg
IGFkZDMyKGFkZHJlc3MuYmFzZSwgc2NyKTsKLSAgICAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0KQot
ICAgICAgICAgICAgYWRkMzIoVHJ1c3RlZEltbTMyKGFkZHJlc3Mub2Zmc2V0KSwgc2NyKTsKLQor
ICAgICAgICBsb2FkRWZmZWN0aXZlQWRkcmVzcyhhZGRyZXNzLCBzY3IpOwogICAgICAgICBtX2Fz
c2VtYmxlci5mbW92c1dyaXRlcm0oc3JjLCBzY3IpOwotCiAgICAgICAgIHJlbGVhc2VTY3JhdGNo
KHNjcik7CiAgICAgfQogCkBAIC0xMDcwLDEwICsxMDQwLDcgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2goKTsKIAotICAgICAgICBtb3ZlKGFk
ZHJlc3MuaW5kZXgsIHNjcik7Ci0gICAgICAgIGxzaGlmdDMyKFRydXN0ZWRJbW0zMihhZGRyZXNz
LnNjYWxlKSwgc2NyKTsKLSAgICAgICAgYWRkMzIoYWRkcmVzcy5iYXNlLCBzY3IpOwotICAgICAg
ICBhZGQzMihUcnVzdGVkSW1tMzIoYWRkcmVzcy5vZmZzZXQgKyA4KSwgc2NyKTsKKyAgICAgICAg
bG9hZEVmZmVjdGl2ZUFkZHJlc3MoYWRkcmVzcywgc2NyLCA4KTsKIAogICAgICAgICBtX2Fzc2Vt
Ymxlci5mbW92c1dyaXRlcm5kZWMoc3JjLCBzY3IpOwogICAgICAgICBtX2Fzc2VtYmxlci5mbW92
c1dyaXRlcm5kZWMoKEZQUmVnaXN0ZXJJRCkoc3JjICsgMSksIHNjcik7CkBAIC0xMTc5LDEyICsx
MTQ2LDcgQEAgcHVibGljOgogICAgICAgICBpZiAoZGVzdCAhPSBTSDRSZWdpc3RlcnM6OnIwKQog
ICAgICAgICAgICAgbW92ZShTSDRSZWdpc3RlcnM6OnIwLCBzY3IxKTsKIAotICAgICAgICBtb3Zl
KGFkZHJlc3MuaW5kZXgsIHNjcik7Ci0gICAgICAgIGxzaGlmdDMyKFRydXN0ZWRJbW0zMihhZGRy
ZXNzLnNjYWxlKSwgc2NyKTsKLSAgICAgICAgYWRkMzIoYWRkcmVzcy5iYXNlLCBzY3IpOwotCi0g
ICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCkKLSAgICAgICAgICAgIGFkZDMyKFRydXN0ZWRJbW0z
MihhZGRyZXNzLm9mZnNldCksIHNjcik7CisgICAgICAgIGxvYWRFZmZlY3RpdmVBZGRyZXNzKGFk
ZHJlc3MsIHNjcik7CiAKICAgICAgICAgbV9hc3NlbWJsZXIuZW5zdXJlU3BhY2UobV9hc3NlbWJs
ZXIubWF4SW5zdHJ1Y3Rpb25TaXplICsgNTgsIHNpemVvZih1aW50MzJfdCkpOwogICAgICAgICBt
b3ZlKHNjciwgU0g0UmVnaXN0ZXJzOjpyMCk7CkBAIC0xNDMwLDggKzEzOTIsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNpZ25FeHRlbmQzMlRvUHRyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewotICAgICAgICBpZiAoc3JjICE9IGRlc3QpCi0gICAgICAgICAgICBtb3Zl
KHNyYywgZGVzdCk7CisgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1w
IGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJ
bW0zMiByaWdodCkKQEAgLTE0NTQsMTUgKzE0MTUsMzIgQEAgcHVibGljOgogICAgIGVudW0gQnJh
bmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCwgQnJhbmNoSWZUcnVuY2F0
ZVN1Y2Nlc3NmdWwgfTsKICAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hU
eXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKICAgICB7CisgICAgICAgIEp1bXAgcmVzdWx0
OworICAgICAgICB0cnVuY2F0ZURvdWJsZVRvSW50MzIoc3JjLCBkZXN0KTsKKyAgICAgICAgUmVn
aXN0ZXJJRCBpbnRzY3IgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubG9h
ZENvbnN0YW50KDB4N2ZmZmZmZmYsIGludHNjcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmNtcGxS
ZWdSZWcoZGVzdCwgaW50c2NyLCBTSDRDb25kaXRpb24oRXF1YWwpKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuZW5zdXJlU3BhY2UobV9hc3NlbWJsZXIubWF4SW5zdHJ1Y3Rpb25TaXplICsgMTIsIHNp
emVvZih1aW50MzJfdCkpOworICAgICAgICBpZiAoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5j
YXRlRmFpbGVkKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5icmFuY2goQlRfT1BDT0RFLCAy
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxJbW04cigxLCBpbnRzY3IpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhkZXN0LCBpbnRzY3IsIFNINENvbmRpdGlvbihF
cXVhbCkpOworICAgICAgICAgICAgcmVzdWx0ID0gYnJhbmNoVHJ1ZSgpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgSnVtcCBvdXQgPSBKdW1wKG1fYXNzZW1ibGVyLmplKCksIFNINEFz
c2VtYmxlcjo6SnVtcE5lYXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKDEs
IGludHNjcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBsUmVnUmVnKGRlc3QsIGludHNj
ciwgU0g0Q29uZGl0aW9uKEVxdWFsKSk7CisgICAgICAgICAgICByZXN1bHQgPSBicmFuY2hGYWxz
ZSgpOworICAgICAgICAgICAgb3V0LmxpbmsodGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmVs
ZWFzZVNjcmF0Y2goaW50c2NyKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICB2b2lkIHRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5mdHJjZHJtZnB1bChzcmMpOwogICAg
ICAgICBtX2Fzc2VtYmxlci5zdHNmcHVsUmVnKGRlc3QpOwotICAgICAgICBtX2Fzc2VtYmxlci5s
b2FkQ29uc3RhbnQoMHg3ZmZmZmZmZiwgc2NyYXRjaFJlZzMpOwotICAgICAgICBtX2Fzc2VtYmxl
ci5jbXBsUmVnUmVnKGRlc3QsIHNjcmF0Y2hSZWczLCBTSDRDb25kaXRpb24oRXF1YWwpKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIuZW5zdXJlU3BhY2UobV9hc3NlbWJsZXIubWF4SW5zdHJ1Y3Rpb25T
aXplICsgMTQsIHNpemVvZih1aW50MzJfdCkpOwotICAgICAgICBtX2Fzc2VtYmxlci5icmFuY2go
QlRfT1BDT0RFLCAyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkbEltbThyKDEsIHNjcmF0Y2hS
ZWczKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhkZXN0LCBzY3JhdGNoUmVnMywg
U0g0Q29uZGl0aW9uKEVxdWFsKSk7Ci0gICAgICAgIHJldHVybiAoYnJhbmNoVHlwZSA9PSBCcmFu
Y2hJZlRydW5jYXRlRmFpbGVkKSA/IGJyYW5jaFRydWUoKSA6IGJyYW5jaEZhbHNlKCk7CiAgICAg
fQogCiAgICAgLy8gU3RhY2sgbWFuaXB1bGF0aW9uIG9wZXJhdGlvbnMKQEAgLTE2MzMsNyArMTYx
MSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFJlZ2lzdGVySUQgYWRkcmVzc1RlbXBSZWdp
c3RlciA9IGNsYWltU2NyYXRjaCgpOwogCi0gICAgICAgIG1fYXNzZW1ibGVyLmxvYWRDb25zdGFu
dChyZWludGVycHJldF9jYXN0PHVpbnQzMl90PihsZWZ0Lm1fcHRyKSwgYWRkcmVzc1RlbXBSZWdp
c3Rlcik7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihsZWZ0Lm1fcHRyKSwgYWRkcmVzc1Rl
bXBSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcoYWRkcmVzc1RlbXBS
ZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CiAgICAgICAgIGNvbXBhcmUzMihyaWdodC5t
X3ZhbHVlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBjb25kKTsKICAgICAgICAgcmVsZWFzZVNjcmF0
Y2goYWRkcmVzc1RlbXBSZWdpc3Rlcik7CkBAIC0xNjQ2LDIxICsxNjI0LDE4IEBAIHB1YmxpYzoK
ICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVm
dCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgQVNTRVJUKCEocmlnaHQubV92
YWx1ZSAmIDB4RkZGRkZGMDApKTsKLSAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0
Y2goKTsKKyAgICAgICAgUmVnaXN0ZXJJRCBsZWZ0dG1wID0gY2xhaW1TY3JhdGNoKCk7CiAKLSAg
ICAgICAgbW92ZShsZWZ0LmluZGV4LCBzY3IpOwotICAgICAgICBsc2hpZnQzMihUcnVzdGVkSW1t
MzIobGVmdC5zY2FsZSksIHNjcik7CisgICAgICAgIGxvYWRFZmZlY3RpdmVBZGRyZXNzKGxlZnQs
IGxlZnR0bXApOwogCi0gICAgICAgIGlmIChsZWZ0Lm9mZnNldCkKLSAgICAgICAgICAgIGFkZDMy
KFRydXN0ZWRJbW0zMihsZWZ0Lm9mZnNldCksIHNjcik7Ci0gICAgICAgIGFkZDMyKGxlZnQuYmFz
ZSwgc2NyKTsKLSAgICAgICAgbG9hZDgoc2NyLCBzY3IpOwotICAgICAgICBSZWdpc3RlcklEIHNj
cjEgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJp
Z2h0Lm1fdmFsdWUsIHNjcjEpOwotICAgICAgICByZWxlYXNlU2NyYXRjaChzY3IpOwotICAgICAg
ICByZWxlYXNlU2NyYXRjaChzY3IxKTsKKyAgICAgICAgbG9hZDgobGVmdHRtcCwgbGVmdHRtcCk7
CisgICAgICAgIFJlZ2lzdGVySUQgcmlnaHR0bXAgPSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIubG9hZENvbnN0YW50KHJpZ2h0Lm1fdmFsdWUsIHJpZ2h0dG1wKTsKIAotICAg
ICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgc2NyLCBzY3IxKTsKKyAgICAgICAgSnVtcCByZXN1
bHQgPSBicmFuY2gzMihjb25kLCBsZWZ0dG1wLCByaWdodHRtcCk7CisgICAgICAgIHJlbGVhc2VT
Y3JhdGNoKGxlZnR0bXApOworICAgICAgICByZWxlYXNlU2NyYXRjaChyaWdodHRtcCk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgcmVnLCBSZWdpc3RlcklEIG1hc2spCkBAIC0xNzA0
LDYgKzE2NzksOCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25k
aXRpb24gY29uZCwgQmFzZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3Rl
ZEltbTMyKC0xKSkKICAgICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29u
ZCA9PSBOb25aZXJvKSk7CisKICAgICAgICAgUmVnaXN0ZXJJRCBzY3IgPSBjbGFpbVNjcmF0Y2go
KTsKIAogICAgICAgICBtb3ZlKGFkZHJlc3MuaW5kZXgsIHNjcik7CkBAIC0xNzM2LDE3ICsxNzEz
LDggQEAgcHVibGljOgogICAgIHZvaWQganVtcChBZGRyZXNzIGFkZHJlc3MpCiAgICAgewogICAg
ICAgICBSZWdpc3RlcklEIHNjciA9IGNsYWltU2NyYXRjaCgpOwotCi0gICAgICAgIGlmICgoYWRk
cmVzcy5vZmZzZXQgPCAwKSB8fCAoYWRkcmVzcy5vZmZzZXQgPj0gNjQpKSB7Ci0gICAgICAgICAg
ICBtX2Fzc2VtYmxlci5sb2FkQ29uc3RhbnQoYWRkcmVzcy5vZmZzZXQsIHNjcik7Ci0gICAgICAg
ICAgICBtX2Fzc2VtYmxlci5hZGRsUmVnUmVnKGFkZHJlc3MuYmFzZSwgc2NyKTsKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcoc2NyLCBzY3IpOwotICAgICAgICB9IGVsc2UgaWYg
KGFkZHJlc3Mub2Zmc2V0KQotICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhhZGRy
ZXNzLm9mZnNldCA+PiAyLCBhZGRyZXNzLmJhc2UsIHNjcik7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmxNZW1SZWcoYWRkcmVzcy5iYXNlLCBzY3IpOworICAgICAg
ICBsb2FkMzIoYWRkcmVzcywgc2NyKTsKICAgICAgICAgbV9hc3NlbWJsZXIuam1wUmVnKHNjcik7
Ci0KICAgICAgICAgcmVsZWFzZVNjcmF0Y2goc2NyKTsKICAgICB9CiAKQEAgLTE3NjEsNDEgKzE3
MjksMzMgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUoKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgewotICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkbFJlZ1JlZyhzcmMsIGRlc3QpOwotICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVz
dCBpcyBuZWdhdGl2ZQotICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wcHooZGVzdCk7Ci0gICAg
ICAgICAgICByZXR1cm4gYnJhbmNoRmFsc2UoKTsKLSAgICAgICAgfQorICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRsUmVnUmVnKHNyYywgZGVzdCk7CiAKLSAgICAgICAgaWYgKGNvbmQgPT0gUG9zaXRp
dmVPclplcm8pIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGxSZWdSZWcoc3JjLCBkZXN0
KTsKKyAgICAgICAgaWYgKChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclpl
cm8pKSB7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBweihkZXN0KTsKLSAgICAgICAgICAg
IHJldHVybiBicmFuY2hUcnVlKCk7CisgICAgICAgICAgICByZXR1cm4gKGNvbmQgPT0gU2lnbmVk
KSA/IGJyYW5jaEZhbHNlKCkgOiBicmFuY2hUcnVlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBt
X2Fzc2VtYmxlci5hZGRsUmVnUmVnKHNyYywgZGVzdCk7CiAgICAgICAgIGNvbXBhcmUzMigwLCBk
ZXN0LCBFcXVhbCk7Ci0KLSAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgLy8gTm90RXF1YWwK
LSAgICAgICAgICAgIHJldHVybiBicmFuY2hGYWxzZSgpOwotICAgICAgICByZXR1cm4gYnJhbmNo
VHJ1ZSgpOworICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFuY2hGYWxzZSgp
IDogYnJhbmNoVHJ1ZSgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAo
Y29uZCA9PSBQb3NpdGl2ZU9yWmVybykgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9u
WmVybykpOwogCi0gICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnMyk7Ci0gICAgICAgIHJldHVy
biBicmFuY2hBZGQzMihjb25kLCBzY3JhdGNoUmVnMywgZGVzdCk7CisgICAgICAgIFJlZ2lzdGVy
SUQgaW1tdmFsID0gY2xhaW1TY3JhdGNoKCk7CisgICAgICAgIG1vdmUoaW1tLCBpbW12YWwpOwor
ICAgICAgICBKdW1wIHJlc3VsdCA9IGJyYW5jaEFkZDMyKGNvbmQsIGltbXZhbCwgZGVzdCk7Cisg
ICAgICAgIHJlbGVhc2VTY3JhdGNoKGltbXZhbCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29u
ZCA9PSBQb3NpdGl2ZU9yWmVybykgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVy
bykpOwogCi0gICAgICAgIGlmIChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAgIG1vdmUoc3JjLCBk
ZXN0KTsKKyAgICAgICAgbW92ZShzcmMsIGRlc3QpOwogCiAgICAgICAgIGlmIChjb25kID09IE92
ZXJmbG93KSB7CiAgICAgICAgICAgICBtb3ZlKGltbSwgc2NyYXRjaFJlZzMpOwpAQCAtMTgwNSwy
MSArMTc2NSwxMyBAQCBwdWJsaWM6CiAKICAgICAgICAgYWRkMzIoaW1tLCBkZXN0KTsKIAotICAg
ICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgaWYgKChjb25kID09IFNpZ25lZCkg
fHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pKSB7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5j
bXBweihkZXN0KTsKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hGYWxzZSgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pIHsKLSAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmNtcHB6KGRlc3QpOwotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFRydWUoKTsK
KyAgICAgICAgICAgIHJldHVybiAoY29uZCA9PSBTaWduZWQpID8gYnJhbmNoRmFsc2UoKSA6IGJy
YW5jaFRydWUoKTsKICAgICAgICAgfQogCiAgICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBFcXVh
bCk7Ci0KLSAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgLy8gTm90RXF1YWwKLSAgICAgICAg
ICAgIHJldHVybiBicmFuY2hGYWxzZSgpOwotICAgICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgpOwor
ICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVybykgPyBicmFuY2hGYWxzZSgpIDogYnJhbmNo
VHJ1ZSgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQpAQCAtMTgzMCwyMyAr
MTc4MiwxOSBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnMyk7CiAgICAg
ICAgIFJlZ2lzdGVySUQgZGVzdHB0ciA9IGNsYWltU2NyYXRjaCgpOwogICAgICAgICBSZWdpc3Rl
cklEIGRlc3R2YWwgPSBjbGFpbVNjcmF0Y2goKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubG9hZENv
bnN0YW50KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGRlc3QubV9wdHIpLCBkZXN0cHRyKTsK
KyAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGRlc3QubV9wdHIpLCBkZXN0cHRyKTsKICAgICAg
ICAgbV9hc3NlbWJsZXIubW92bE1lbVJlZyhkZXN0cHRyLCBkZXN0dmFsKTsKICAgICAgICAgaWYg
KGNvbmQgPT0gT3ZlcmZsb3cpIHsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHZsUmVnUmVn
KHNjcmF0Y2hSZWczLCBkZXN0dmFsKTsKICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRsUmVnUmVnKHNjcmF0Y2hS
ZWczLCBkZXN0dmFsKTsKLSAgICAgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAg
ICAgICAgaWYgKChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pKSB7
CiAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wcHooZGVzdHZhbCk7Ci0gICAgICAgICAg
ICAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmQgPT0gUG9z
aXRpdmVPclplcm8pIHsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBweihkZXN0dmFs
KTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSB0cnVlOworICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IChjb25kID09IFBvc2l0aXZlT3JaZXJvKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92SW1tOCgwLCBzY3JhdGNoUmVnMyk7Ci0gICAgICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuY21wbFJlZ1JlZyhzY3JhdGNoUmVnMywgZGVzdHZhbCwgU0g0
Q29uZGl0aW9uKGNvbmQpKTsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSAoY29uZCA9PSBaZXJv
KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci50ZXN0bFJlZ1JlZyhkZXN0dmFsLCBkZXN0
dmFsKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAoY29uZCAhPSBOb25aZXJvKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZsUmVnTWVtKGRlc3R2
YWwsIGRlc3RwdHIpOwpAQCAtMTg3NCwzMCArMTgyMiwyOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm4gYnJhbmNoRmFsc2UoKTsKICAgICAgICAgfQogCi0gICAgICAgIG1fYXNzZW1ibGVy
LmltdWxsUmVnUmVnKHNyYywgZGVzdCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0c21hY2woZGVz
dCk7CisgICAgICAgIG11bDMyKHNyYywgZGVzdCk7CisKICAgICAgICAgaWYgKGNvbmQgPT0gU2ln
bmVkKSB7Ci0gICAgICAgICAgICAvLyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlCiAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5jbXBweihkZXN0KTsKICAgICAgICAgICAgIHJldHVybiBicmFuY2hG
YWxzZSgpOwogICAgICAgICB9CiAKICAgICAgICAgY29tcGFyZTMyKDAsIGRlc3QsIHN0YXRpY19j
YXN0PFJlbGF0aW9uYWxDb25kaXRpb24+KGNvbmQpKTsKLQotICAgICAgICBpZiAoY29uZCA9PSBO
b25aZXJvKSAvLyBOb3RFcXVhbAotICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZhbHNlKCk7Ci0g
ICAgICAgIHJldHVybiBicmFuY2hUcnVlKCk7CisgICAgICAgIHJldHVybiAoY29uZCA9PSBOb25a
ZXJvKSA/IGJyYW5jaEZhbHNlKCkgOiBicmFuY2hUcnVlKCk7CiAgICAgfQogCiAgICAgSnVtcCBi
cmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9
PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29u
ZCA9PSBOb25aZXJvKSk7CiAKLSAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2hSZWczKTsKLSAgICAg
ICAgaWYgKHNyYyAhPSBkZXN0KQotICAgICAgICAgICAgbW92ZShzcmMsIGRlc3QpOworICAgICAg
ICBpZiAoc3JjID09IGRlc3QpIHsKKyAgICAgICAgICAgIG1vdmUoaW1tLCBzY3JhdGNoUmVnMyk7
CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgc2NyYXRjaFJlZzMsIGRlc3Qp
OworICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIHNjcmF0Y2hS
ZWczLCBkZXN0KTsKKyAgICAgICAgbW92ZShpbW0sIGRlc3QpOworICAgICAgICByZXR1cm4gYnJh
bmNoTXVsMzIoY29uZCwgc3JjLCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFN1YjMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtMTkwOSw3OCArMTg1NSw5MiBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gYnJhbmNo
VHJ1ZSgpOwogICAgICAgICB9CiAKKyAgICAgICAgc3ViMzIoc3JjLCBkZXN0KTsKKwogICAgICAg
ICBpZiAoY29uZCA9PSBTaWduZWQpIHsKLSAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMg
bmVnYXRpdmUKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmxSZWdSZWcoc3JjLCBkZXN0KTsK
LSAgICAgICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBMZXNzVGhhbik7Ci0gICAgICAgICAgICBy
ZXR1cm4gYnJhbmNoVHJ1ZSgpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuY21wcHooZGVzdCk7
CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRmFsc2UoKTsKICAgICAgICAgfQogCi0gICAgICAg
IHN1YjMyKHNyYywgZGVzdCk7CiAgICAgICAgIGNvbXBhcmUzMigwLCBkZXN0LCBzdGF0aWNfY2Fz
dDxSZWxhdGlvbmFsQ29uZGl0aW9uPihjb25kKSk7Ci0KLSAgICAgICAgaWYgKGNvbmQgPT0gTm9u
WmVybykgLy8gTm90RXF1YWwKLSAgICAgICAgICAgIHJldHVybiBicmFuY2hGYWxzZSgpOwotICAg
ICAgICByZXR1cm4gYnJhbmNoVHJ1ZSgpOworICAgICAgICByZXR1cm4gKGNvbmQgPT0gTm9uWmVy
bykgPyBicmFuY2hGYWxzZSgpIDogYnJhbmNoVHJ1ZSgpOwogICAgIH0KIAogICAgIEp1bXAgYnJh
bmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNv
bmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CiAK
LSAgICAgICAgbW92ZShpbW0sIHNjcmF0Y2hSZWczKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFN1
YjMyKGNvbmQsIHNjcmF0Y2hSZWczLCBkZXN0KTsKKyAgICAgICAgUmVnaXN0ZXJJRCBpbW12YWwg
PSBjbGFpbVNjcmF0Y2goKTsKKyAgICAgICAgbW92ZShpbW0sIGltbXZhbCk7CisgICAgICAgIEp1
bXAgcmVzdWx0ID0gYnJhbmNoU3ViMzIoY29uZCwgaW1tdmFsLCBkZXN0KTsKKyAgICAgICAgcmVs
ZWFzZVNjcmF0Y2goaW1tdmFsKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAg
ICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywg
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShp
bW0sIHNjcmF0Y2hSZWczKTsKLSAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQotICAgICAgICAgICAg
bW92ZShzcmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgc2NyYXRj
aFJlZzMsIGRlc3QpOworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25k
ID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworCisg
ICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQs
IGltbSwgZGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIGlmIChzcmMxICE9IGRlc3QpCisgICAgICAgIEFTU0VSVCgoY29u
ZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAo
Y29uZCA9PSBOb25aZXJvKSk7CisKKyAgICAgICAgaWYgKHNyYzIgIT0gZGVzdCkgewogICAgICAg
ICAgICAgbW92ZShzcmMxLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQs
IHNyYzIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIHNyYzIs
IGRlc3QpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAg
ICAgICAgICAgIFJlZ2lzdGVySUQgdG1wdmFsID0gY2xhaW1TY3JhdGNoKCk7CisgICAgICAgICAg
ICBtb3ZlKHNyYzEsIHRtcHZhbCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJ2bFJlZ1Jl
ZyhzcmMyLCB0bXB2YWwpOworICAgICAgICAgICAgbW92ZSh0bXB2YWwsIGRlc3QpOworICAgICAg
ICAgICAgcmVsZWFzZVNjcmF0Y2godG1wdmFsKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hU
cnVlKCk7CisgICAgICAgIH0KKworICAgICAgICBSZWdpc3RlcklEIHRtcHZhbCA9IGNsYWltU2Ny
YXRjaCgpOworICAgICAgICBtb3ZlKHNyYzEsIHRtcHZhbCk7CisgICAgICAgIHN1YjMyKHNyYzIs
IHRtcHZhbCk7CisgICAgICAgIG1vdmUodG1wdmFsLCBkZXN0KTsKKyAgICAgICAgcmVsZWFzZVNj
cmF0Y2godG1wdmFsKTsKKworICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmNtcHB6KGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEZh
bHNlKCk7CisgICAgICAgIH0KKworICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGljX2Nh
c3Q8UmVsYXRpb25hbENvbmRpdGlvbj4oY29uZCkpOworICAgICAgICByZXR1cm4gKGNvbmQgPT0g
Tm9uWmVybykgPyBicmFuY2hGYWxzZSgpIDogYnJhbmNoVHJ1ZSgpOwogICAgIH0KIAogICAgIEp1
bXAgYnJhbmNoT3IzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBTaWduZWQpIHx8IChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKIAorICAgICAgICBvcjMyKHNyYywg
ZGVzdCk7CisKICAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7Ci0gICAgICAgICAgICBvcjMy
KHNyYywgZGVzdCk7Ci0gICAgICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGljX2Nhc3Q8
UmVsYXRpb25hbENvbmRpdGlvbj4oTGVzc1RoYW4pKTsKLSAgICAgICAgICAgIHJldHVybiBicmFu
Y2hUcnVlKCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5jbXBweihkZXN0KTsKKyAgICAgICAg
ICAgIHJldHVybiBicmFuY2hGYWxzZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgb3IzMihzcmMs
IGRlc3QpOwogICAgICAgICBjb21wYXJlMzIoMCwgZGVzdCwgc3RhdGljX2Nhc3Q8UmVsYXRpb25h
bENvbmRpdGlvbj4oY29uZCkpOwotCi0gICAgICAgIGlmIChjb25kID09IE5vblplcm8pIC8vIE5v
dEVxdWFsCi0gICAgICAgICAgICByZXR1cm4gYnJhbmNoRmFsc2UoKTsKLSAgICAgICAgcmV0dXJu
IGJyYW5jaFRydWUoKTsKKyAgICAgICAgcmV0dXJuIChjb25kID09IE5vblplcm8pID8gYnJhbmNo
RmFsc2UoKSA6IGJyYW5jaFRydWUoKTsKICAgICB9CiAKLSAgICB2b2lkIGJyYW5jaENvbnZlcnRE
b3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3Qm
IGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklEIGZwVGVtcCwgYm9vbCBuZWdaZXJvQ2hlY2sgPSB0
cnVlKQorICAgIHZvaWQgYnJhbmNoQ29udmVydERvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0LCBKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBGUFJlZ2lzdGVySUQs
IGJvb2wgbmVnWmVyb0NoZWNrID0gdHJ1ZSkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmZ0
cmNkcm1mcHVsKHNyYyk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnN0c2ZwdWxSZWcoZGVzdCk7Cisg
ICAgICAgIHRydW5jYXRlRG91YmxlVG9JbnQzMihzcmMsIGRlc3QpOwogICAgICAgICBjb252ZXJ0
SW50MzJUb0RvdWJsZShkZXN0LCBmc2NyYXRjaCk7CiAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBl
bmQoYnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsT3JVbm9yZGVyZWQsIGZzY3JhdGNoLCBzcmMp
KTsKIAotICAgICAgICBpZiAobmVnWmVyb0NoZWNrKSB7Ci0gICAgICAgICAgICBpZiAoZGVzdCA9
PSBTSDRSZWdpc3RlcnM6OnIwKQotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmNtcEVxSW1t
UjAoMCwgZGVzdCk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5tb3ZJbW04KDAsIHNjcmF0Y2hSZWczKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5jbXBsUmVnUmVnKHNjcmF0Y2hSZWczLCBkZXN0LCBTSDRDb25kaXRpb24oRXF1YWwpKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoYnJhbmNoVHJ1ZSgp
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAobmVnWmVyb0NoZWNrKQorICAgICAgICAgICAgZmFp
bHVyZUNhc2VzLmFwcGVuZChicmFuY2gzMihFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKSk7
CiAgICAgfQogCiAgICAgdm9pZCBuZWczMihSZWdpc3RlcklEIGRzdCkKQEAgLTIwMTcsOSArMTk3
Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVz
dGVkSW1tMzIgc2hpZnRhbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGlm
IChzcmMgIT0gZGVzdCkKLSAgICAgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLQorICAgICAgICBt
b3ZlKHNyYywgZGVzdCk7CiAgICAgICAgIHVyc2hpZnQzMihzaGlmdGFtb3VudCwgZGVzdCk7CiAg
ICAgfQogCkBAIC0yMDQ4LDYgKzIwMDYsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGJyZWFrcG9p
bnQoKQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZW5zdXJlU3BhY2UobV9hc3NlbWJsZXIu
bWF4SW5zdHJ1Y3Rpb25TaXplICsgMik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJrcHQoKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgfQpAQCAtMjE0OSw5ICsyMTA4LDkgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbGFiZWwubGFiZWxBdE9mZnNldCgwKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wUmVwbGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaChD
b2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklELCB2b2lkKiBpbml0
aWFsVmFsdWUpCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFJlcGxhY2VtZW50VG9CcmFuY2hQ
dHJXaXRoUGF0Y2goQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgUmVnaXN0ZXJJ
RCByZCwgdm9pZCogaW5pdGlhbFZhbHVlKQogICAgIHsKLSAgICAgICAgU0g0QXNzZW1ibGVyOjpy
ZXZlcnRKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGluaXRpYWxWYWx1ZSk7
CisgICAgICAgIFNINEFzc2VtYmxlcjo6cmV2ZXJ0SnVtcFRvTW92ZShpbnN0cnVjdGlvblN0YXJ0
LmRhdGFMb2NhdGlvbigpLCByZCwgcmVpbnRlcnByZXRfY2FzdDxpbnQ+KGluaXRpYWxWYWx1ZSkp
OwogICAgIH0KIAogICAgIHN0YXRpYyBDb2RlTG9jYXRpb25MYWJlbCBzdGFydE9mUGF0Y2hhYmxl
QnJhbmNoUHRyV2l0aFBhdGNoT25BZGRyZXNzKENvZGVMb2NhdGlvbkRhdGFMYWJlbFB0cikKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaAko
cmV2aXNpb24gMTUzOTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRB
c3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzM3LDggKzMzNyw4IEBAIHB1YmxpYzoKICAg
ICB9OwogCiAgICAgU0g0QXNzZW1ibGVyKCkKKyAgICAgICAgOiBtX2NsYWltc2NyYXRjaFJlZygw
eDApCiAgICAgewotICAgICAgICBtX2NsYWltc2NyYXRjaFJlZyA9IDB4MDsKICAgICB9CiAKICAg
ICAvLyBTSDQgY29uZGl0aW9uIGNvZGVzCkBAIC0xMTg5LDE0ICsxMTg5LDYgQEAgcHVibGljOgog
ICAgICAgICBvbmVTaG9ydE9wKG9wYyk7CiAgICAgfQogCi0gICAgdm9pZCBtb3ZsSW1tOHIoaW50
IGltbTgsIFJlZ2lzdGVySUQgZHN0KQotICAgIHsKLSAgICAgICAgQVNTRVJUKChpbW04IDw9IDEy
NykgJiYgKGltbTggPj0gLTEyOCkpOwotCi0gICAgICAgIHVpbnQxNl90IG9wYyA9IGdldE9wY29k
ZUdyb3VwMyhNT1ZJTU1fT1BDT0RFLCBkc3QsIGltbTgpOwotICAgICAgICBvbmVTaG9ydE9wKG9w
Yyk7Ci0gICAgfQotCiAgICAgdm9pZCBsb2FkQ29uc3RhbnQodWludDMyX3QgY29uc3RhbnQsIFJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgaWYgKCgoaW50KWNvbnN0YW50IDw9IDB4N2Yp
ICYmICgoaW50KWNvbnN0YW50ID49IC0weDgwKSkgewpAQCAtMTMzMSwxMiArMTMyMywxNCBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcyhpbnQgb2Zm
c2V0LCB1aW50MTZfdCogaW5zdHJ1Y3Rpb25QdHIsIHVpbnQzMl90IG5ld0FkZHJlc3MpCiAgICAg
eworICAgICAgICBBU1NFUlQoKGluc3RydWN0aW9uUHRyWzBdICYgMHhmMDAwKSA9PSBNT1ZMX1JF
QURfT0ZGUENfT1BDT0RFKTsKICAgICAgICAgdWludDMyX3QgYWRkcmVzcyA9IChvZmZzZXQgPDwg
MikgKyAoKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KGluc3RydWN0aW9uUHRyKSArIDQpICYo
fjB4MykpOwogICAgICAgICAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGFkZHJlc3MpID0g
bmV3QWRkcmVzczsKICAgICB9CiAKICAgICBzdGF0aWMgdWludDMyX3QgcmVhZFBDcmVsYXRpdmVB
ZGRyZXNzKGludCBvZmZzZXQsIHVpbnQxNl90KiBpbnN0cnVjdGlvblB0cikKICAgICB7CisgICAg
ICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAweGYwMDApID09IE1PVkxfUkVBRF9PRkZQ
Q19PUENPREUpOwogICAgICAgICB1aW50MzJfdCBhZGRyZXNzID0gKG9mZnNldCA8PCAyKSArICgo
cmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oaW5zdHJ1Y3Rpb25QdHIpICsgNCkgJih+MHgzKSk7
CiAgICAgICAgIHJldHVybiAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCo+KGFkZHJlc3MpOwog
ICAgIH0KQEAgLTEzNzQsMTcgKzEzNjgsOSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBicmFmIEBy
ZWcgICAgICAgIGJyYWYgQHJlZwogICAgICAgICAgICAgbm9wICAgICAgICAgICAgICBub3AKICAg
ICAgICAgICovCi0gICAgICAgIEFTU0VSVCgoKihpbnN0cnVjdGlvblB0ciArIDEpICYgQlJBRl9P
UENPREUpID09IEJSQUZfT1BDT0RFKTsKLQotICAgICAgICBvZmZzZXRCaXRzIC09IDQ7Ci0gICAg
ICAgIGlmIChvZmZzZXRCaXRzID49IC00MDk2ICYmIG9mZnNldEJpdHMgPD0gNDA5NCkgewotICAg
ICAgICAgICAgKmluc3RydWN0aW9uUHRyID0gZ2V0T3Bjb2RlR3JvdXA2KEJSQV9PUENPREUsIG9m
ZnNldEJpdHMgPj4gMSk7Ci0gICAgICAgICAgICAqKCsraW5zdHJ1Y3Rpb25QdHIpID0gTk9QX09Q
Q09ERTsKLSAgICAgICAgICAgIHByaW50QmxvY2tJbnN0cihpbnN0cnVjdGlvblB0ciAtIDEsIGZy
b20ubV9vZmZzZXQsIDIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJlc3MoKCppbnN0cnVjdGlvblB0ciAmIDB4ZmYpLCBpbnN0
cnVjdGlvblB0ciwgb2Zmc2V0Qml0cyAtIDIpOworICAgICAgICBBU1NFUlQoKGluc3RydWN0aW9u
UHRyWzBdICYgMHhmMDAwKSA9PSBNT1ZMX1JFQURfT0ZGUENfT1BDT0RFKTsKKyAgICAgICAgQVNT
RVJUKChpbnN0cnVjdGlvblB0clsxXSAmIDB4ZjBmZikgPT0gQlJBRl9PUENPREUpOworICAgICAg
ICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcygoKmluc3RydWN0aW9uUHRyICYgMHhmZiksIGluc3Ry
dWN0aW9uUHRyLCBvZmZzZXRCaXRzIC0gNik7CiAgICAgICAgIHByaW50SW5zdHIoKmluc3RydWN0
aW9uUHRyLCBmcm9tLm1fb2Zmc2V0ICsgMik7CiAgICAgfQogCkBAIC0xMzkyLDEyICsxMzc4LDE0
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHVpbnQxNl90KiBpbnN0cnVjdGlvblB0ciA9IGdl
dEluc3RydWN0aW9uUHRyKGNvZGUsIGZyb20ubV9vZmZzZXQpOwogICAgICAgICBpbnN0cnVjdGlv
blB0ciAtPSAzOworICAgICAgICBBU1NFUlQoKGluc3RydWN0aW9uUHRyWzBdICYgMHhmMDAwKSA9
PSBNT1ZMX1JFQURfT0ZGUENfT1BDT0RFKTsKICAgICAgICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJl
c3MoKCppbnN0cnVjdGlvblB0ciAmIDB4ZmYpLCBpbnN0cnVjdGlvblB0ciwgcmVpbnRlcnByZXRf
Y2FzdDx1aW50MzJfdD4odG8pKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBsaW5rUG9pbnRl
cih2b2lkKiBjb2RlLCBBc3NlbWJsZXJMYWJlbCB3aGVyZSwgdm9pZCogdmFsdWUpCiAgICAgewog
ICAgICAgICB1aW50MTZfdCogaW5zdHJ1Y3Rpb25QdHIgPSBnZXRJbnN0cnVjdGlvblB0cihjb2Rl
LCB3aGVyZS5tX29mZnNldCk7CisgICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAw
eGYwMDApID09IE1PVkxfUkVBRF9PRkZQQ19PUENPREUpOwogICAgICAgICBjaGFuZ2VQQ3JlbGF0
aXZlQWRkcmVzcygoKmluc3RydWN0aW9uUHRyICYgMHhmZiksIGluc3RydWN0aW9uUHRyLCByZWlu
dGVycHJldF9jYXN0PHVpbnQzMl90Pih2YWx1ZSkpOwogICAgIH0KIApAQCAtMTQ0MSw3ICsxNDI5
LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoKCgocmVpbnRlcnByZXRfY2FzdDx1aW50MzJf
dD4oY29uc3RQb29sQWRkcikgLSByZWludGVycHJldF9jYXN0PHVpbnQzMl90Pihsb2FkQWRkcikp
ICsgaW5kZXggKiA0KSkgPCAxMDI0KTsKIAogICAgICAgICBpbnQgb2Zmc2V0ID0gcmVpbnRlcnBy
ZXRfY2FzdDx1aW50MzJfdD4oY29uc3RQb29sQWRkcikgKyAoaW5kZXggKiA0KSAtICgocmVpbnRl
cnByZXRfY2FzdDx1aW50MzJfdD4oaW5zdHJ1Y3Rpb25QdHIpICYgfjB4MDMpICsgNCk7Ci0gICAg
ICAgIGluc3RydWN0aW9uICY9MHhmMDA7CisgICAgICAgIGluc3RydWN0aW9uICY9IDB4MGYwMDsK
ICAgICAgICAgaW5zdHJ1Y3Rpb24gfD0gMHhkMDAwOwogICAgICAgICBvZmZzZXQgJj0gMHgwM2Zm
OwogICAgICAgICBpbnN0cnVjdGlvbiB8PSAob2Zmc2V0ID4+IDIpOwpAQCAtMTQ2Miw2ICsxNDUw
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHJlcGF0Y2hJbnQzMih2b2lkKiB3aGVyZSwg
aW50MzJfdCB2YWx1ZSkKICAgICB7CiAgICAgICAgIHVpbnQxNl90KiBpbnN0cnVjdGlvblB0ciA9
IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDE2X3QqPih3aGVyZSk7CisgICAgICAgIEFTU0VSVCgoaW5z
dHJ1Y3Rpb25QdHJbMF0gJiAweGYwMDApID09IE1PVkxfUkVBRF9PRkZQQ19PUENPREUpOwogICAg
ICAgICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcygoKmluc3RydWN0aW9uUHRyICYgMHhmZiksIGlu
c3RydWN0aW9uUHRyLCB2YWx1ZSk7CiAgICAgfQogCkBAIC0xNDc3LDYgKzE0NjYsNyBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICB1aW50MTZfdCogaW5zdHJ1Y3Rpb25QdHIgPSByZWludGVycHJl
dF9jYXN0PHVpbnQxNl90Kj4oZnJvbSk7CiAgICAgICAgIGluc3RydWN0aW9uUHRyIC09IDM7Cisg
ICAgICAgIEFTU0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAweGYwMDApID09IE1PVkxfUkVBRF9P
RkZQQ19PUENPREUpOwogICAgICAgICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVzcygoKmluc3RydWN0
aW9uUHRyICYgMHhmZiksIGluc3RydWN0aW9uUHRyLCByZWludGVycHJldF9jYXN0PHVpbnQzMl90
Pih0bykpOwogICAgIH0KIApAQCAtMTQ4OSwyMyArMTQ3OSwxNyBAQCBwdWJsaWM6CiAgICAgICAg
IGlmICgoKCppbnN0cnVjdGlvblB0ciAmIDB4ZmYwMCkgPT0gQlRfT1BDT0RFKSB8fCAoKCppbnN0
cnVjdGlvblB0ciAmIDB4ZmYwMCkgPT0gQkZfT1BDT0RFKSkgewogICAgICAgICAgICAgb2Zmc2V0
Qml0cyAtPSA4OwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb25QdHIrKzsKKyAgICAgICAgICAgIEFT
U0VSVCgoaW5zdHJ1Y3Rpb25QdHJbMF0gJiAweGYwMDApID09IE1PVkxfUkVBRF9PRkZQQ19PUENP
REUpOwogICAgICAgICAgICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJlc3MoKCppbnN0cnVjdGlvblB0
ciAmIDB4ZmYpLCBpbnN0cnVjdGlvblB0ciwgb2Zmc2V0Qml0cyk7CiAgICAgICAgICAgICBpbnN0
cnVjdGlvbiA9IChCUkFGX09QQ09ERSB8ICgqaW5zdHJ1Y3Rpb25QdHIrKyAmIDB4ZjAwKSk7CiAg
ICAgICAgICAgICAqaW5zdHJ1Y3Rpb25QdHIgPSBpbnN0cnVjdGlvbjsKICAgICAgICAgICAgIHBy
aW50QmxvY2tJbnN0cihpbnN0cnVjdGlvblB0ciwgcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4o
ZnJvbSkgKyAxLCAzKTsKKyAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb25QdHIsIHNp
emVvZihTSDRXb3JkKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBBU1NFUlQoKCooaW5zdHJ1Y3Rpb25QdHIgKyAxKSAmIEJSQUZfT1BDT0RFKSA9PSBCUkFGX09Q
Q09ERSk7Ci0gICAgICAgIG9mZnNldEJpdHMgLT0gNDsKLSAgICAgICAgaWYgKG9mZnNldEJpdHMg
Pj0gLTQwOTYgJiYgb2Zmc2V0Qml0cyA8PSA0MDk0KSB7Ci0gICAgICAgICAgICAqaW5zdHJ1Y3Rp
b25QdHIgPSBnZXRPcGNvZGVHcm91cDYoQlJBX09QQ09ERSwgb2Zmc2V0Qml0cyA+PiAxKTsKLSAg
ICAgICAgICAgICooKytpbnN0cnVjdGlvblB0cikgPSBOT1BfT1BDT0RFOwotICAgICAgICAgICAg
cHJpbnRCbG9ja0luc3RyKGluc3RydWN0aW9uUHRyIC0gMiwgcmVpbnRlcnByZXRfY2FzdDx1aW50
MzJfdD4oZnJvbSksIDIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJlc3MoKCppbnN0cnVjdGlvblB0ciAmIDB4ZmYpLCBpbnN0
cnVjdGlvblB0ciwgb2Zmc2V0Qml0cyAtIDIpOworICAgICAgICBBU1NFUlQoKGluc3RydWN0aW9u
UHRyWzFdICYgMHhmMGZmKSA9PSBCUkFGX09QQ09ERSk7CisgICAgICAgIGNoYW5nZVBDcmVsYXRp
dmVBZGRyZXNzKCgqaW5zdHJ1Y3Rpb25QdHIgJiAweGZmKSwgaW5zdHJ1Y3Rpb25QdHIsIG9mZnNl
dEJpdHMgLSA2KTsKICAgICAgICAgcHJpbnRJbnN0cigqaW5zdHJ1Y3Rpb25QdHIsIHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDMyX3Q+KGZyb20pKTsKICAgICB9CiAKQEAgLTE1MjAsMzIgKzE1MDQsNDMg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgU0g0V29yZCogaW5zdHJ1Y3Rpb24gPSByZWludGVy
cHJldF9jYXN0PFNINFdvcmQqPihpbnN0cnVjdGlvblN0YXJ0KTsKICAgICAgICAgaW50cHRyX3Qg
ZGlmZmVyZW5jZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKSAtIChyZWludGVycHJl
dF9jYXN0PGludHB0cl90PihpbnN0cnVjdGlvbikgKyAyICogc2l6ZW9mKFNINFdvcmQpKTsKLSAg
ICAgICAgaW50IG5iaW5zdCA9IDA7CiAKLSAgICAgICAgaWYgKChkaWZmZXJlbmNlID49IC00MDk2
KSAmJiAoZGlmZmVyZW5jZSA8PSA0MDk0KSkgewotICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMF0g
PSBnZXRPcGNvZGVHcm91cDYoQlJBX09QQ09ERSwgZGlmZmVyZW5jZSA+PiAxKTsKLSAgICAgICAg
ICAgIGluc3RydWN0aW9uWzFdID0gTk9QX09QQ09ERTsKLSAgICAgICAgICAgIGNhY2hlRmx1c2go
aW5zdHJ1Y3Rpb24sIHNpemVvZihTSDRXb3JkKSAqIDIpOwotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICBpZiAoKGluc3RydWN0aW9uWzBdICYgMHhmMDAwKSA9PSBNT1ZMX1JFQURfT0ZGUENf
T1BDT0RFKSB7CisgICAgICAgICAgICBpbnN0cnVjdGlvblsxXSA9IChCUkFGX09QQ09ERSB8IChp
bnN0cnVjdGlvblswXSAmIDB4MGYwMCkpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMl0gPSBO
T1BfT1BDT0RFOworICAgICAgICAgICAgY2FjaGVGbHVzaCgmaW5zdHJ1Y3Rpb25bMV0sIDIgKiBz
aXplb2YoU0g0V29yZCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW5zdHJ1Y3Rp
b25bMF0gPSBnZXRPcGNvZGVHcm91cDMoTU9WTF9SRUFEX09GRlBDX09QQ09ERSwgU0g0UmVnaXN0
ZXJzOjpyMTMsIDEpOworICAgICAgICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSBnZXRPcGNvZGVHcm91
cDIoQlJBRl9PUENPREUsIFNINFJlZ2lzdGVyczo6cjEzKTsKKyAgICAgICAgICAgIGluc3RydWN0
aW9uWzJdID0gTk9QX09QQ09ERTsKKyAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24s
IDMgKiBzaXplb2YoU0g0V29yZCkpOwogICAgICAgICB9CiAKLSAgICAgICAgaW5zdHJ1Y3Rpb25b
bmJpbnN0KytdID0gZ2V0T3Bjb2RlR3JvdXAzKE1PVkxfUkVBRF9PRkZQQ19PUENPREUsIHNjcmF0
Y2hSZWcyLCAxKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25bbmJpbnN0KytdID0gZ2V0T3Bjb2RlR3Jv
dXAyKEpNUF9PUENPREUsIHNjcmF0Y2hSZWcyKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25bbmJpbnN0
KytdID0gTk9QX09QQ09ERTsKLQotICAgICAgICBpZiAoIShyZWludGVycHJldF9jYXN0PHVuc2ln
bmVkPihpbnN0cnVjdGlvbikgJiAzKSkKLSAgICAgICAgICAgIGluc3RydWN0aW9uW25iaW5zdCsr
XSA9IE5PUF9PUENPREU7Ci0KLSAgICAgICAgaW5zdHJ1Y3Rpb25bbmJpbnN0KytdID0gcmVpbnRl
cnByZXRfY2FzdDx1bnNpZ25lZD4odG8pICYgMHhmZmZmOwotICAgICAgICBpbnN0cnVjdGlvbltu
Ymluc3QrK10gPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkPih0bykgPj4gMTY7Ci0gICAgICAg
IGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihTSDRXb3JkKSAqIG5iaW5zdCk7CisgICAg
ICAgIGNoYW5nZVBDcmVsYXRpdmVBZGRyZXNzKGluc3RydWN0aW9uWzBdICYgMHgwMGZmLCBpbnN0
cnVjdGlvbiwgZGlmZmVyZW5jZSAtIDIpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJldmVy
dEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCAqaW1tcHRyKQorICAgIHN0YXRpYyB2
b2lkIHJldmVydEp1bXBUb01vdmUodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCBy
ZCwgaW50IGltbSkKICAgICB7CiAgICAgICAgIFNINFdvcmQgKmluc24gPSByZWludGVycHJldF9j
YXN0PFNINFdvcmQqPihpbnN0cnVjdGlvblN0YXJ0KTsKICAgICAgICAgQVNTRVJUKChpbnNuWzBd
ICYgMHhmMDAwKSA9PSBNT1ZMX1JFQURfT0ZGUENfT1BDT0RFKTsKLSAgICAgICAgY2hhbmdlUENy
ZWxhdGl2ZUFkZHJlc3MoaW5zblswXSAmIDB4MDBmZiwgaW5zbiwgcmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdD4oaW1tcHRyKSk7CisKKyAgICAgICAgaWYgKChpbnNuWzFdICYgMHhmMDAwKSA9PSBD
TVBFUV9PUENPREUpIHsKKyAgICAgICAgICAgIGluc25bMF0gPSBnZXRPcGNvZGVHcm91cDMoTU9W
TF9SRUFEX09GRlBDX09QQ09ERSwgU0g0UmVnaXN0ZXJzOjpyMTMsIGluc25bMF0gJiAweDAwZmYp
OworICAgICAgICAgICAgaW5zblsxXSA9IChpbnNuWzFdICYgMHhmMDBmKSB8IChyZCA8PCA4KSB8
IChTSDRSZWdpc3RlcnM6OnIxMyA8PCA0KTsKKyAgICAgICAgICAgIGNhY2hlRmx1c2goaW5zbiwg
MiAqIHNpemVvZihTSDRXb3JkKSk7CisgICAgICAgICAgICBjaGFuZ2VQQ3JlbGF0aXZlQWRkcmVz
cyhpbnNuWzBdICYgMHgwMGZmLCBpbnNuLCBpbW0pOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgaWYgKChpbnNuWzBdICYgMHgwMGZmKSA9PSAxKQorICAgICAgICAg
ICAgaW5zblsxXSA9IGdldE9wY29kZUdyb3VwNihCUkFfT1BDT0RFLCAzKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgaW5zblsxXSA9IE5PUF9PUENPREU7CisKKyAgICAgICAgaW5zblsyXSA9
IE5PUF9PUENPREU7CisgICAgICAgIGNhY2hlRmx1c2goJmluc25bMV0sIDIgKiBzaXplb2YoU0g0
V29yZCkpOworCisgICAgICAgIGNoYW5nZVBDcmVsYXRpdmVBZGRyZXNzKGluc25bMF0gJiAweDAw
ZmYsIGluc24sIGltbSk7CiAgICAgfQogCiAgICAgdm9pZCBsaW5rSnVtcChBc3NlbWJsZXJMYWJl
bCBmcm9tLCBBc3NlbWJsZXJMYWJlbCB0bywgSnVtcFR5cGUgdHlwZSA9IEp1bXBGYXIpCkBAIC0x
NTU4LDggKzE1NTMsOSBAQCBwdWJsaWM6CiAgICAgICAgIGludCBvZmZzZXRCaXRzOwogCiAgICAg
ICAgIGlmICh0eXBlID09IEp1bXBOZWFyKSB7Ci0gICAgICAgICAgICBBU1NFUlQoKGluc3RydWN0
aW9uID09ICBCVF9PUENPREUpIHx8IChpbnN0cnVjdGlvbiA9PSBCRl9PUENPREUpIHx8IChpbnN0
cnVjdGlvbiA9PSBCUkFfT1BDT0RFKSk7CiAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gKGNvZGVT
aXplKCkgLSBmcm9tLm1fb2Zmc2V0KSAtIDQ7CisgICAgICAgICAgICBBU1NFUlQoKCgoaW5zdHJ1
Y3Rpb24gPT0gQlRfT1BDT0RFKSB8fCAoaW5zdHJ1Y3Rpb24gPT0gQkZfT1BDT0RFKSkgJiYgKG9m
ZnNldCA+PSAtMjU2KSAmJiAob2Zmc2V0IDw9IDI1NCkpCisgICAgICAgICAgICAgICAgfHwgKChp
bnN0cnVjdGlvbiA9PSBCUkFfT1BDT0RFKSAmJiAob2Zmc2V0ID49IC00MDk2KSAmJiAob2Zmc2V0
IDw9IDQwOTQpKSk7CiAgICAgICAgICAgICAqaW5zdHJ1Y3Rpb25QdHIrKyA9IGluc3RydWN0aW9u
IHwgKG9mZnNldCA+PiAxKTsKICAgICAgICAgICAgIHByaW50SW5zdHIoKmluc3RydWN0aW9uUHRy
LCBmcm9tLm1fb2Zmc2V0ICsgMik7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTc0LDcgKzE1
NzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBvZmZzZXRCaXRzID0gKHRvLm1fb2Zmc2V0IC0g
ZnJvbS5tX29mZnNldCkgLSA4OwogICAgICAgICAgICAgaW5zdHJ1Y3Rpb24gXj0gMHgwMjAyOwog
ICAgICAgICAgICAgKmluc3RydWN0aW9uUHRyKysgPSBpbnN0cnVjdGlvbjsKLSAgICAgICAgICAg
IGlmICgoKmluc3RydWN0aW9uUHRyICYgMHhmMDAwKSA9PSAweGUwMDApIHsKKyAgICAgICAgICAg
IGlmICgoKmluc3RydWN0aW9uUHRyICYgMHhmMDAwKSA9PSBNT1ZJTU1fT1BDT0RFKSB7CiAgICAg
ICAgICAgICAgICAgdWludDMyX3QqIGFkZHIgPSBnZXRMZHJJbW1BZGRyZXNzT25Qb29sKGluc3Ry
dWN0aW9uUHRyLCBtX2J1ZmZlci5wb29sQWRkcmVzcygpKTsKICAgICAgICAgICAgICAgICAqYWRk
ciA9IG9mZnNldEJpdHM7CiAgICAgICAgICAgICB9IGVsc2UKQEAgLTE1OTAsMjMgKzE1ODYsMTgg
QEAgcHVibGljOgogICAgICAgICAgICBub3AgICAgICAgICAgICAgICBub3AKICAgICAgICAgKi8K
ICAgICAgICAgQVNTRVJUKCgqKGluc3RydWN0aW9uUHRyICsgMSkgJiBCUkFGX09QQ09ERSkgPT0g
QlJBRl9PUENPREUpOwotICAgICAgICBvZmZzZXRCaXRzID0gKHRvLm1fb2Zmc2V0IC0gZnJvbS5t
X29mZnNldCkgLSA0OwotICAgICAgICBpZiAob2Zmc2V0Qml0cyA+PSAtNDA5NiAmJiBvZmZzZXRC
aXRzIDw9IDQwOTQpIHsKLSAgICAgICAgICAgICppbnN0cnVjdGlvblB0ciA9IGdldE9wY29kZUdy
b3VwNihCUkFfT1BDT0RFLCBvZmZzZXRCaXRzID4+IDEpOwotICAgICAgICAgICAgKigrK2luc3Ry
dWN0aW9uUHRyKSA9IE5PUF9PUENPREU7Ci0gICAgICAgICAgICBwcmludEJsb2NrSW5zdHIoaW5z
dHJ1Y3Rpb25QdHIgLSAxLCBmcm9tLm1fb2Zmc2V0LCAyKTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQorICAgICAgICBvZmZzZXRCaXRzID0gKHRvLm1fb2Zmc2V0IC0gZnJvbS5tX29m
ZnNldCkgLSA2OwogCiAgICAgICAgIGluc3RydWN0aW9uID0gKmluc3RydWN0aW9uUHRyOwotICAg
ICAgICBpZiAoKGluc3RydWN0aW9uICYgMHhmMDAwKSA9PSAweGUwMDApIHsKKyAgICAgICAgaWYg
KChpbnN0cnVjdGlvbiAmIDB4ZjAwMCkgPT0gTU9WSU1NX09QQ09ERSkgewogICAgICAgICAgICAg
dWludDMyX3QqIGFkZHIgPSBnZXRMZHJJbW1BZGRyZXNzT25Qb29sKGluc3RydWN0aW9uUHRyLCBt
X2J1ZmZlci5wb29sQWRkcmVzcygpKTsKLSAgICAgICAgICAgICphZGRyID0gb2Zmc2V0Qml0cyAt
IDI7CisgICAgICAgICAgICAqYWRkciA9IG9mZnNldEJpdHM7CiAgICAgICAgICAgICBwcmludElu
c3RyKCppbnN0cnVjdGlvblB0ciwgZnJvbS5tX29mZnNldCArIDIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJlc3MoKCppbnN0
cnVjdGlvblB0ciAmIDB4ZmYpLCBpbnN0cnVjdGlvblB0ciwgb2Zmc2V0Qml0cyAtIDIpOworICAg
ICAgICBBU1NFUlQoKGluc3RydWN0aW9uUHRyWzBdICYgMHhmMDAwKSA9PSBNT1ZMX1JFQURfT0ZG
UENfT1BDT0RFKTsKKyAgICAgICAgY2hhbmdlUENyZWxhdGl2ZUFkZHJlc3MoKCppbnN0cnVjdGlv
blB0ciAmIDB4ZmYpLCBpbnN0cnVjdGlvblB0ciwgb2Zmc2V0Qml0cyk7CiAgICAgICAgIHByaW50
SW5zdHIoKmluc3RydWN0aW9uUHRyLCBmcm9tLm1fb2Zmc2V0ICsgMik7CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTUzOTk5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNCw2ICsxMTQsOCBAQCB2b2lkIHBlcmZvcm1QbGF0Zm9ybVNwZWNpZmljSklUQXNzZXJ0
aW9uCiAgICAgcGVyZm9ybUFSTUpJVEFzc2VydGlvbnMoKTsKICNlbGlmIENQVShNSVBTKQogICAg
IHBlcmZvcm1NSVBTSklUQXNzZXJ0aW9ucygpOworI2VsaWYgQ1BVKFNINCkKKyAgICBwZXJmb3Jt
U0g0SklUQXNzZXJ0aW9ucygpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDE1Mzk5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjY2LDE1ICsyNjYsMTkgQEAgc3Ry
dWN0IEpJVFN0YWNrRnJhbWUgewogICAgIEpJVFN0dWJBcmcgYXJnc1s2XTsKIAogICAgIFJldHVy
bkFkZHJlc3NQdHIgdGh1bmtSZXR1cm5BZGRyZXNzOworCiAgICAgdm9pZCogc2F2ZWRSMTA7CiAg
ICAgdm9pZCogc2F2ZWRSMTE7CiAgICAgdm9pZCogc2F2ZWRSMTM7CiAgICAgdm9pZCogc2F2ZWRS
UFI7CiAgICAgdm9pZCogc2F2ZWRSMTQ7CiAKKyAgICAvLyBUaGVzZSBhcmd1bWVudHMgYXJlIHBh
c3NlZCBpbiByNSwgcjYgYW5kIHI3LgogICAgIEpTU3RhY2sqIHN0YWNrOwogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lOwogICAgIEpTVmFsdWUqIGV4Y2VwdGlvbjsKKworICAgIC8vIFRoZXNlIGFy
Z3VtZW50cyBhcmUgcGFzc2VkIG9uIHRoZSBzdGFjay4KICAgICB2b2lkKiB1bnVzZWQxOwogICAg
IFZNKiB2bTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic1NINC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnNTSDQuaAko
cmV2aXNpb24gMTUzOTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVic1NI
NC5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw5IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CisjZGVmaW5lIFRIVU5LX1JFVFVSTl9BRERSRVNTX09GRlNFVCA1NgorI2RlZmluZSBTQVZFRF9S
OF9PRkZTRVQgNjAKKwogI2RlZmluZSBTWU1CT0xfU1RSSU5HKG5hbWUpICNuYW1lCiAvKiBjb2Rl
IChyNCksIEpTU3RhY2sqIChyNSksIENhbGxGcmFtZSogKHI2KSwgdm9pZCogdW51c2VkMSAocjcp
LCB2b2lkKiB1bnVzZWQyKHNwKSwgVk0gKHNwKSovCiAKQEAgLTU3LDExICs2MCwxMSBAQCBTWU1C
T0xfU1RSSU5HKGN0aVRyYW1wb2xpbmUpICI6IiAiXG4iCiAgICAgIm1vdi5sIHIxMywgQC1yMTUi
ICJcbiIKICAgICAibW92LmwgcjExLCBALXIxNSIgIlxuIgogICAgICJtb3YubCByMTAsIEAtcjE1
IiAiXG4iCi0gICAgImFkZCAjLTYwLCByMTUiICJcbiIKKyAgICAiYWRkICMtIiBTVFJJTkdJWkVf
VkFMVUVfT0YoU0FWRURfUjhfT0ZGU0VUKSAiLCByMTUiICJcbiIKICAgICAibW92IHI2LCByMTQi
ICJcbiIKICAgICAianNyIEByNCIgIlxuIgogICAgICJub3AiICJcbiIKLSAgICAiYWRkICM2MCwg
cjE1IiAiXG4iCisgICAgImFkZCAjIiBTVFJJTkdJWkVfVkFMVUVfT0YoU0FWRURfUjhfT0ZGU0VU
KSAiLCByMTUiICJcbiIKICAgICAibW92LmwgQHIxNSsscjEwIiAiXG4iCiAgICAgIm1vdi5sIEBy
MTUrLHIxMSIgIlxuIgogICAgICJtb3YubCBAcjE1KyxyMTMiICJcbiIKQEAgLTg0LDcgKzg3LDcg
QEAgU1lNQk9MX1NUUklORyhjdGlWTVRocm93VHJhbXBvbGluZSkgIjoiIAogICAgICJtb3YubCBA
KHIwLHIxMikscjExIiAiXG4iCiAgICAgImpzciBAcjExIiAiXG4iCiAgICAgIm5vcCIgIlxuIgot
ICAgICJhZGQgIzYwLCByMTUiICJcbiIKKyAgICAiYWRkICMiIFNUUklOR0laRV9WQUxVRV9PRihT
QVZFRF9SOF9PRkZTRVQpICIsIHIxNSIgIlxuIgogICAgICJtb3YubCBAcjE1KyxyMTAiICJcbiIK
ICAgICAibW92LmwgQHIxNSsscjExIiAiXG4iCiAgICAgIm1vdi5sIEByMTUrLHIxMyIgIlxuIgpA
QCAtMTA4LDcgKzExMSw4IEBAIFNZTUJPTF9TVFJJTkcoY3RpVk1UaHJvd1RyYW1wb2xpbmVTbG93
cGEKICAgICAvLyBXaGVuIGN0aV92bV90aHJvd19zbG93cGF0aCByZXR1cm5zLCByMCBoYXMgY2Fs
bEZyYW1lIGFuZCByMSBoYXMgaGFuZGxlciBhZGRyZXNzCiAgICAgIm5vcCIgIlxuIgogICAgICJt
b3YgcjAsIHIxNCIgIlxuIgotICAgICJqbXAgQHIxIiAiXG4iCisgICAgImxkcyByMSwgcHIiICJc
biIKKyAgICAicnRzIiAiXG4iCiAgICAgIm5vcCIgIlxuIgogICAgICIuYWxpZ24gMiIgIlxuIgog
ICAgICIuTDIiU1lNQk9MX1NUUklORyhjdGlfdm1fdGhyb3dfc2xvd3BhdGgpIjoubG9uZyAiIFNZ
TUJPTF9TVFJJTkcoY3RpX3ZtX3Rocm93X3Nsb3dwYXRoKSJAR09UIFxuIgpAQCAtMTE4LDcgKzEy
Miw3IEBAIGFzbSB2b2xhdGlsZSAoCiAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhjdGlPcFRocm93
Tm90Q2F1Z2h0KSAiXG4iCiBISURFX1NZTUJPTChjdGlPcFRocm93Tm90Q2F1Z2h0KSAiXG4iCiBT
WU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiXG4iCi0gICAgImFkZCAjNjAs
IHIxNSIgIlxuIgorICAgICJhZGQgIyIgU1RSSU5HSVpFX1ZBTFVFX09GKFNBVkVEX1I4X09GRlNF
VCkgIiwgcjE1IiAiXG4iCiAgICAgIm1vdi5sIEByMTUrLHIxMCIgIlxuIgogICAgICJtb3YubCBA
cjE1KyxyMTEiICJcbiIKICAgICAibW92LmwgQHIxNSsscjEzIiAiXG4iCkBAIC0xMzksMTIgKzE0
MywxMiBAQCBTWU1CT0xfU1RSSU5HKGN0aU9wVGhyb3dOb3RDYXVnaHQpICI6IiAiCiAgICAgIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoY3RpXyMjb3ApICJcbiIgXAogICAgIFNZTUJPTF9TVFJJTkco
Y3RpXyMjb3ApICI6IiAiXG4iIFwKICAgICAic3RzIHByLCByMTEiICJcbiIgXAotICAgICJtb3Yu
bCByMTEsIEAoMHgzOCwgcjE1KSIgIlxuIiBcCisgICAgIm1vdi5sIHIxMSwgQCgiIFNUUklOR0la
RV9WQUxVRV9PRihUSFVOS19SRVRVUk5fQUREUkVTU19PRkZTRVQpICIsIHIxNSkiICJcbiIgXAog
ICAgICJtb3YubCAuTDIiU1lNQk9MX1NUUklORyhKSVRTdHViVGh1bmtlZF8jI29wKSIscjAiICJc
biIgXAogICAgICJtb3YubCBAKHIwLHIxMikscjExIiAiXG4iIFwKICAgICAianNyIEByMTEiICJc
biIgXAogICAgICJub3AiICJcbiIgXAotICAgICJtb3YubCBAKDB4MzgsIHIxNSksIHIxMSAiICJc
biIgXAorICAgICJtb3YubCBAKCIgU1RSSU5HSVpFX1ZBTFVFX09GKFRIVU5LX1JFVFVSTl9BRERS
RVNTX09GRlNFVCkgIiwgcjE1KSwgcjExICIgIlxuIiBcCiAgICAgImxkcyByMTEsIHByICIgIlxu
IiBcCiAgICAgInJ0cyIgIlxuIiBcCiAgICAgIm5vcCIgIlxuIiBcCkBAIC0xNTMsNiArMTU3LDEy
IEBAIFNZTUJPTF9TVFJJTkcoY3RpT3BUaHJvd05vdENhdWdodCkgIjoiICIKICAgICApOyBcCiAg
ICAgcnR5cGUgSklUU3R1YlRodW5rZWRfIyNvcChTVFVCX0FSR1NfREVDTEFSQVRJT04pCiAKK3N0
YXRpYyB2b2lkIHBlcmZvcm1TSDRKSVRBc3NlcnRpb25zKCkKK3sKKyAgICBBU1NFUlQoT0JKRUNU
X09GRlNFVE9GKHN0cnVjdCBKSVRTdGFja0ZyYW1lLCB0aHVua1JldHVybkFkZHJlc3MpID09IFRI
VU5LX1JFVFVSTl9BRERSRVNTX09GRlNFVCk7CisgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihz
dHJ1Y3QgSklUU3RhY2tGcmFtZSwgc2F2ZWRSOCkgPT0gU0FWRURfUjhfT0ZGU0VUKTsKK30KKwog
fSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBKSVRTdHVic1NINF9oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxNTM5OTkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2NCwxNCArMTY0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCByZXR1cm5WYWx1ZVJlZ2lzdGVyID0gU0g0UmVnaXN0ZXJzOjpy
MDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIg
PSBTSDRSZWdpc3RlcnM6OnIwOwogCi0gICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQg
ZnBSZWdUMCAgPSBTSDRSZWdpc3RlcnM6OmZyMDsKLSAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVn
aXN0ZXJJRCBmcFJlZ1QxICA9IFNINFJlZ2lzdGVyczo6ZnIyOwotICAgICAgICBzdGF0aWMgY29u
c3QgRlBSZWdpc3RlcklEIGZwUmVnVDIgID0gU0g0UmVnaXN0ZXJzOjpmcjQ7Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMyAgPSBTSDRSZWdpc3RlcnM6OmZyNjsKLSAg
ICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1Q0ICA9IFNINFJlZ2lzdGVyczo6
ZnI4OwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDUgID0gU0g0UmVn
aXN0ZXJzOjpmcjEwOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDYg
ID0gU0g0UmVnaXN0ZXJzOjpmcjEyOwotICAgICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklE
IGZwUmVnVDcgID0gU0g0UmVnaXN0ZXJzOjpmcjE0OworICAgICAgICBzdGF0aWMgY29uc3QgRlBS
ZWdpc3RlcklEIGZwUmVnVDAgPSBTSDRSZWdpc3RlcnM6OmRyMDsKKyAgICAgICAgc3RhdGljIGNv
bnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1QxID0gU0g0UmVnaXN0ZXJzOjpkcjI7CisgICAgICAgIHN0
YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUMiA9IFNINFJlZ2lzdGVyczo6ZHI0OworICAg
ICAgICBzdGF0aWMgY29uc3QgRlBSZWdpc3RlcklEIGZwUmVnVDMgPSBTSDRSZWdpc3RlcnM6OmRy
NjsKKyAgICAgICAgc3RhdGljIGNvbnN0IEZQUmVnaXN0ZXJJRCBmcFJlZ1Q0ID0gU0g0UmVnaXN0
ZXJzOjpkcjg7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJlZ2lzdGVySUQgZnBSZWdUNSA9IFNI
NFJlZ2lzdGVyczo6ZHIxMDsKICNlbHNlCiAjZXJyb3IgIkpJVCBub3Qgc3VwcG9ydGVkIG9uIHRo
aXMgcGxhdGZvcm0uIgogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>