<?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>117856</bug_id>
          
          <creation_ts>2013-06-20 18:19:35 -0700</creation_ts>
          <short_desc>fourthTier: There should only be one table of SimpleJumpTables</short_desc>
          <delta_ts>2013-06-20 19:58:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>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>902379</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-20 18:19:35 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902381</commentid>
    <comment_count>1</comment_count>
      <attachid>205134</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-20 18:20:30 -0700</bug_when>
    <thetext>Created attachment 205134
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902406</commentid>
    <comment_count>2</comment_count>
      <attachid>205134</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-06-20 19:57:08 -0700</bug_when>
    <thetext>Comment on attachment 205134
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902407</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-06-20 19:58:25 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/151820</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205134</attachid>
            <date>2013-06-20 18:20:30 -0700</date>
            <delta_ts>2013-06-20 19:57:08 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>43088</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUxODEyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY4IEBA
CisyMDEzLTA2LTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Zm91cnRoVGllcjogVGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIHRhYmxlIG9mIFNpbXBsZUp1bXBU
YWJsZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEx
Nzg1NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgSGF2aW5nIG11bHRpcGxlIHRhYmxlcyBvZiBTaW1wbGVKdW1wVGFibGVzIGp1c3QgbWVh
bnMgd2UgaGF2ZSB0byBkdXBsaWNhdGUgYQorICAgICAgICB0b24gb2YgY29kZS4gVGhpcyBwYXRj
aCBkZWR1cGxpY2F0ZXMgYWxsIG9mIGl0LgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUpOgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnNocmlua1RvRml0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2su
aDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFN3aXRjaEp1bXBUYWJsZSk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6c3dpdGNoSnVtcFRhYmxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpjbGVhclN3aXRjaEp1bXBUYWJsZXMpOgorICAgICAgICAoUmFyZURhdGEpOgorICAgICAgICAq
IGJ5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpjb21wdXRlUHJlY2lzZUp1bXBUYXJnZXRzKToKKyAgICAgICAgKiBieXRlY29kZS9V
bmxpbmtlZENvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6c2hy
aW5rVG9GaXQpOgorICAgICAgICAoSlNDOjpVbmxpbmtlZENvZGVCbG9jazo6bnVtYmVyT2ZTd2l0
Y2hKdW1wVGFibGVzKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRDb2RlQmxvY2s6OmFkZFN3aXRj
aEp1bXBUYWJsZSk6CisgICAgICAgIChKU0M6OlVubGlua2VkQ29kZUJsb2NrOjpzd2l0Y2hKdW1w
VGFibGUpOgorICAgICAgICAoUmFyZURhdGEpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwcmVwYXJl
SnVtcFRhYmxlRm9yU3dpdGNoKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVu
ZFN3aXRjaCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAg
KElubGluZVN0YWNrRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3Rh
Y2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgICogZGZnL0RGR0pJVENvbXBpbGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6bGluayk6CisgICAgICAgICog
ZGZnL0RGR0pJVENvbXBpbGVyLmg6CisgICAgICAgIChKSVRDb21waWxlcik6CisgICAgICAgICog
ZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbnRKdW1w
KToKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmVt
aXRTd2l0Y2hJbW0pOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0U3dp
dGNoQ2hhclN0cmluZ0p1bXApOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGZ0bC9GVExMaW5rLmNwcDoKKyAg
ICAgICAgKEpTQzo6RlRMOjpsaW5rKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9zd2l0Y2hfaW1tKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3N3aXRjaF9jaGFyKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2RlczMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3N3aXRjaF9pbW0pOgorICAgICAgICAoSlND
OjpKSVQ6OmVtaXRfb3Bfc3dpdGNoX2NoYXIpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6
CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBsbGludC9M
TEludFNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhf
REVDTCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAg
ICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorCiAyMDEzLTA2LTIwICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZm91cnRoVGllcjogRlRM
IHNob3VsZCBjbGVhciBjaGFyYWN0ZXIgc3dpdGNoIGp1bXAgdGFibGVzCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTUxODEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUzNiw0MCArNTM2LDIxIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNv
ZGUoUHJpbnRTdHJlYW0KICAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURhdGEtPm1fZXhjZXB0
aW9uSGFuZGxlcnMuc2l6ZSgpKTsKICAgICB9CiAgICAgCi0gICAgaWYgKG1fcmFyZURhdGEgJiYg
IW1fcmFyZURhdGEtPm1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgb3V0LnByaW50ZigiSW1tZWRpYXRlIFN3aXRjaCBKdW1wIFRhYmxlczpcbiIpOworICAg
IGlmIChtX3JhcmVEYXRhICYmICFtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuaXNFbXB0
eSgpKSB7CisgICAgICAgIG91dC5wcmludGYoIlN3aXRjaCBKdW1wIFRhYmxlczpcbiIpOwogICAg
ICAgICB1bnNpZ25lZCBpID0gMDsKICAgICAgICAgZG8gewogICAgICAgICAgICAgb3V0LnByaW50
ZigiICAlMWQgPSB7XG4iLCBpKTsKICAgICAgICAgICAgIGludCBlbnRyeSA9IDA7Ci0gICAgICAg
ICAgICBWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmFyZURhdGEtPm1f
aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlc1tpXS5icmFuY2hPZmZzZXRzLmVuZCgpOwotICAgICAg
ICAgICAgZm9yIChWZWN0b3I8aW50MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3JhcmVE
YXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXNbaV0uYnJhbmNoT2Zmc2V0cy5iZWdpbigp
OyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2VudHJ5KSB7CisgICAgICAgICAgICBWZWN0b3I8aW50
MzJfdD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxl
c1tpXS5icmFuY2hPZmZzZXRzLmVuZCgpOworICAgICAgICAgICAgZm9yIChWZWN0b3I8aW50MzJf
dD46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXNb
aV0uYnJhbmNoT2Zmc2V0cy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyLCArK2VudHJ5KSB7
CiAgICAgICAgICAgICAgICAgaWYgKCEqaXRlcikKICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50ZigiXHRcdCU0ZCA9PiAlMDRkXG4iLCBlbnRy
eSArIG1fcmFyZURhdGEtPm1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlc1tpXS5taW4sICppdGVy
KTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRmKCJcdFx0JTRkID0+ICUwNGRcbiIsIGVudHJ5
ICsgbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzW2ldLm1pbiwgKml0ZXIpOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgb3V0LnByaW50ZigiICAgICAgfVxuIik7CiAgICAgICAgICAg
ICArK2k7Ci0gICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRj
aEp1bXBUYWJsZXMuc2l6ZSgpKTsKLSAgICB9Ci0gICAgCi0gICAgaWYgKG1fcmFyZURhdGEgJiYg
IW1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgb3V0LnByaW50ZigiXG5DaGFyYWN0ZXIgU3dpdGNoIEp1bXAgVGFibGVzOlxuIik7Ci0g
ICAgICAgIHVuc2lnbmVkIGkgPSAwOwotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBvdXQucHJp
bnRmKCIgICUxZCA9IHtcbiIsIGkpOwotICAgICAgICAgICAgaW50IGVudHJ5ID0gMDsKLSAgICAg
ICAgICAgIFZlY3RvcjxpbnQzMl90Pjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9yYXJlRGF0YS0+
bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzW2ldLmJyYW5jaE9mZnNldHMuZW5kKCk7Ci0gICAg
ICAgICAgICBmb3IgKFZlY3RvcjxpbnQzMl90Pjo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IG1fcmFy
ZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlc1tpXS5icmFuY2hPZmZzZXRzLmJlZ2lu
KCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIsICsrZW50cnkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
ISppdGVyKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBB
U1NFUlQoISgoaSArIG1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlc1tpXS5t
aW4pICYgfjB4RkZGRikpOwotICAgICAgICAgICAgICAgIFVDaGFyIGNoID0gc3RhdGljX2Nhc3Q8
VUNoYXI+KGVudHJ5ICsgbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzW2ld
Lm1pbik7Ci0gICAgICAgICAgICAgICAgb3V0LnByaW50ZigiXHRcdFwiJXNcIiA9PiAlMDRkXG4i
LCBTdHJpbmdJbXBsOjp1dGY4Rm9yQ2hhcmFjdGVycygmY2gsIDEpLmRhdGEoKSwgKml0ZXIpOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgb3V0LnByaW50ZigiICAgICAgfVxuIik7Ci0gICAg
ICAgICAgICArK2k7Ci0gICAgICAgIH0gd2hpbGUgKGkgPCBtX3JhcmVEYXRhLT5tX2NoYXJhY3Rl
clN3aXRjaEp1bXBUYWJsZXMuc2l6ZSgpKTsKKyAgICAgICAgfSB3aGlsZSAoaSA8IG1fcmFyZURh
dGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaXplKCkpOwogICAgIH0KICAgICAKICAgICBpZiAobV9y
YXJlRGF0YSAmJiAhbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmlzRW1wdHko
KSkgewpAQCAtMTM3Niw4ICsxMzU3LDcgQEAgc3RhdGljIEhhc2hTZXQ8Q29kZUJsb2NrKj4gbGl2
ZUNvZGVCbG9jawogICAgIG1hY3JvKHJlZ2V4cHMpIFwKICAgICBtYWNybyhmdW5jdGlvbnMpIFwK
ICAgICBtYWNybyhleGNlcHRpb25IYW5kbGVycykgXAotICAgIG1hY3JvKGltbWVkaWF0ZVN3aXRj
aEp1bXBUYWJsZXMpIFwKLSAgICBtYWNybyhjaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzKSBcCisg
ICAgbWFjcm8oc3dpdGNoSnVtcFRhYmxlcykgXAogICAgIG1hY3JvKHN0cmluZ1N3aXRjaEp1bXBU
YWJsZXMpIFwKICAgICBtYWNybyhldmFsQ29kZUNhY2hlKSBcCiAgICAgbWFjcm8oZXhwcmVzc2lv
bkluZm8pIFwKQEAgLTE1MjIsOCArMTUwMiw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQ
YXJzZWRCbG9ja1RhZywKICAgICAgICAgCiAgICAgICAgIG1fcmFyZURhdGEtPm1fZXhjZXB0aW9u
SGFuZGxlcnMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2V4Y2VwdGlvbkhhbmRsZXJzOwogICAgICAg
ICBtX3JhcmVEYXRhLT5tX2NvbnN0YW50QnVmZmVycyA9IG90aGVyLm1fcmFyZURhdGEtPm1fY29u
c3RhbnRCdWZmZXJzOwotICAgICAgICBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBU
YWJsZXMgPSBvdGhlci5tX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXM7Ci0g
ICAgICAgIG1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcyA9IG90aGVyLm1f
cmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlczsKKyAgICAgICAgbV9yYXJlRGF0
YS0+bV9zd2l0Y2hKdW1wVGFibGVzID0gb3RoZXIubV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFi
bGVzOwogICAgICAgICBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMgPSBvdGhl
ci5tX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAgICAgfQogfQpAQCAtMTYy
NiwyMSArMTYwNSwxMSBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBv
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc2l6ZV90IGNvdW50ID0g
dW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mSW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcygpKSB7
Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMuZ3Jv
dyhjb3VudCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKysp
IHsKLSAgICAgICAgICAgICAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgc291cmNlVGFibGUg
PSB1bmxpbmtlZENvZGVCbG9jay0+aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKGkpOwotICAgICAg
ICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSYgZGVzdFRhYmxlID0gbV9yYXJlRGF0YS0+bV9pbW1l
ZGlhdGVTd2l0Y2hKdW1wVGFibGVzW2ldOwotICAgICAgICAgICAgICAgIGRlc3RUYWJsZS5icmFu
Y2hPZmZzZXRzID0gc291cmNlVGFibGUuYnJhbmNoT2Zmc2V0czsKLSAgICAgICAgICAgICAgICBk
ZXN0VGFibGUubWluID0gc291cmNlVGFibGUubWluOwotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJP
ZkNoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMoKSkgewotICAgICAgICAgICAgbV9yYXJlRGF0YS0+
bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzLmdyb3coY291bnQpOworICAgICAgICBpZiAoc2l6
ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygp
KSB7CisgICAgICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuZ3Jvdyhjb3Vu
dCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAg
ICAgICAgICAgICAgICBVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYgc291cmNlVGFibGUgPSB1bmxp
bmtlZENvZGVCbG9jay0+Y2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlKGkpOwotICAgICAgICAgICAg
ICAgIFNpbXBsZUp1bXBUYWJsZSYgZGVzdFRhYmxlID0gbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJT
d2l0Y2hKdW1wVGFibGVzW2ldOworICAgICAgICAgICAgICAgIFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlJiBzb3VyY2VUYWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUoaSk7
CisgICAgICAgICAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiBkZXN0VGFibGUgPSBtX3JhcmVEYXRh
LT5tX3N3aXRjaEp1bXBUYWJsZXNbaV07CiAgICAgICAgICAgICAgICAgZGVzdFRhYmxlLmJyYW5j
aE9mZnNldHMgPSBzb3VyY2VUYWJsZS5icmFuY2hPZmZzZXRzOwogICAgICAgICAgICAgICAgIGRl
c3RUYWJsZS5taW4gPSBzb3VyY2VUYWJsZS5taW47CiAgICAgICAgICAgICB9CkBAIC0yNDY3LDgg
KzI0MzYsNyBAQCB2b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoU2hyaW5rTW9kZSBzCiAgICAg
ICAgIG1fY29uc3RhbnRSZWdpc3RlcnMuc2hyaW5rVG9GaXQoKTsKICAgICAgICAgCiAgICAgICAg
IGlmIChtX3JhcmVEYXRhKSB7Ci0gICAgICAgICAgICBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3
aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKLSAgICAgICAgICAgIG1fcmFyZURhdGEtPm1f
Y2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOworICAgICAgICAgICAgbV9y
YXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKICAgICAg
ICAgfQogICAgIH0gLy8gZWxzZSBkb24ndCBzaHJpbmsgdGhlc2UsIGJlY2F1c2Ugd2Ugd291bGQg
aGF2ZSBhbHJlYWR5IHBvaW50ZWQgcG9pbnRlcnMgaW50byB0aGVzZSB0YWJsZXMuCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxNTE4
MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcwMSwyNCArNzAxLDE0IEBAIHB1YmxpYzoKIAogICAgIC8vIEp1bXAgVGFi
bGVzCiAKLSAgICBzaXplX3QgbnVtYmVyT2ZJbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzKCkgY29u
c3QgeyByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPm1faW1tZWRpYXRlU3dpdGNoSnVt
cFRhYmxlcy5zaXplKCkgOiAwOyB9Ci0gICAgU2ltcGxlSnVtcFRhYmxlJiBhZGRJbW1lZGlhdGVT
d2l0Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0
YS0+bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChTaW1wbGVKdW1wVGFibGUoKSk7
IHJldHVybiBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9
Ci0gICAgU2ltcGxlSnVtcFRhYmxlJiBpbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxl
SW5kZXgpIHsgUkVMRUFTRV9BU1NFUlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5t
X2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXNbdGFibGVJbmRleF07IH0KLSAgICB2b2lkIGNsZWFy
SW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcygpCisgICAgc2l6ZV90IG51bWJlck9mU3dpdGNoSnVt
cFRhYmxlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX3N3aXRj
aEp1bXBUYWJsZXMuc2l6ZSgpIDogMDsgfQorICAgIFNpbXBsZUp1bXBUYWJsZSYgYWRkU3dpdGNo
SnVtcFRhYmxlKCkgeyBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7IG1fcmFyZURhdGEtPm1f
c3dpdGNoSnVtcFRhYmxlcy5hcHBlbmQoU2ltcGxlSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJl
RGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQorICAgIFNpbXBsZUp1bXBUYWJsZSYg
c3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IFJFTEVBU0VfQVNTRVJUKG1fcmFyZURh
dGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9zd2l0Y2hKdW1wVGFibGVzW3RhYmxlSW5kZXhdOyB9
CisgICAgdm9pZCBjbGVhclN3aXRjaEp1bXBUYWJsZXMoKQogICAgIHsKICAgICAgICAgaWYgKCFt
X3JhcmVEYXRhKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3JhcmVEYXRhLT5tX2lt
bWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMuY2xlYXIoKTsKLSAgICB9Ci0KLSAgICBzaXplX3QgbnVt
YmVyT2ZDaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0
YSA/IG1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkgOiAwOyB9
Ci0gICAgU2ltcGxlSnVtcFRhYmxlJiBhZGRDaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGUoKSB7IGNy
ZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hK
dW1wVGFibGVzLmFwcGVuZChTaW1wbGVKdW1wVGFibGUoKSk7IHJldHVybiBtX3JhcmVEYXRhLT5t
X2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMubGFzdCgpOyB9Ci0gICAgU2ltcGxlSnVtcFRhYmxl
JiBjaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgUkVMRUFTRV9BU1NF
UlQobV9yYXJlRGF0YSk7IHJldHVybiBtX3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBU
YWJsZXNbdGFibGVJbmRleF07IH0KLSAgICB2b2lkIGNsZWFyQ2hhcmFjdGVyU3dpdGNoSnVtcFRh
YmxlcygpCi0gICAgewotICAgICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIG1fcmFyZURhdGEtPm1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcy5jbGVh
cigpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuY2xlYXIoKTsKICAg
ICB9CiAKICAgICBzaXplX3QgbnVtYmVyT2ZTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCkgY29uc3Qg
eyByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxl
cy5zaXplKCkgOiAwOyB9CkBAIC0xMTEzLDggKzExMDMsNyBAQCBwcml2YXRlOgogICAgICAgICBW
ZWN0b3I8VmVjdG9yPEpTVmFsdWU+ID4gbV9jb25zdGFudEJ1ZmZlcnM7CiAgICAgICAgICAgICAK
ICAgICAgICAgLy8gSnVtcCBUYWJsZXMKLSAgICAgICAgVmVjdG9yPFNpbXBsZUp1bXBUYWJsZT4g
bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzOwotICAgICAgICBWZWN0b3I8U2ltcGxlSnVtcFRh
YmxlPiBtX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXM7CisgICAgICAgIFZlY3RvcjxTaW1wbGVK
dW1wVGFibGU+IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9yPFN0cmluZ0p1bXBU
YWJsZT4gbV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzOwogCiAgICAgICAgIEV2YWxDb2RlQ2FjaGUg
bV9ldmFsQ29kZUNhY2hlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1By
ZWNpc2VKdW1wVGFyZ2V0cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ByZWNpc2VKdW1wVGFyZ2V0cy5jcHAJKHJldmlzaW9uIDE1MTgxMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVjaXNlSnVtcFRhcmdldHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCwxMiArMjgsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RhdGlj
IHZvaWQgYWRkU2ltcGxlU3dpdGNoVGFyZ2V0cyhTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSwg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQsIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCi17Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0ganVtcFRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyBpLS07
KQotICAgICAgICBvdXQuYXBwZW5kKGJ5dGVjb2RlT2Zmc2V0ICsganVtcFRhYmxlLmJyYW5jaE9m
ZnNldHNbaV0pOwotfQotCiB2b2lkIGNvbXB1dGVQcmVjaXNlSnVtcFRhcmdldHMoQ29kZUJsb2Nr
KiBjb2RlQmxvY2ssIFZlY3Rvcjx1bnNpZ25lZCwgMzI+JiBvdXQpCiB7CiAgICAgQVNTRVJUKG91
dC5pc0VtcHR5KCkpOwpAQCAtNzQsMTMgKzY4LDEzIEBAIHZvaWQgY29tcHV0ZVByZWNpc2VKdW1w
VGFyZ2V0cyhDb2RlQmxvY2sKICAgICAgICAgICAgIG91dC5hcHBlbmQoYnl0ZWNvZGVPZmZzZXQg
KyBjdXJyZW50WzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBvcF9zd2l0Y2hfaW1tOgotICAgICAgICAgICAgYWRkU2ltcGxlU3dpdGNoVGFyZ2V0cyhjb2Rl
QmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCksIGJ5
dGVjb2RlT2Zmc2V0LCBvdXQpOwotICAgICAgICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNl
dCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIG9wX3N3aXRjaF9jaGFyOgotICAgICAgICAgICAgYWRkU2ltcGxlU3dpdGNoVGFyZ2V0cyhj
b2RlQmxvY2stPmNoYXJhY3RlclN3aXRjaEp1bXBUYWJsZShjdXJyZW50WzFdLnUub3BlcmFuZCks
IGJ5dGVjb2RlT2Zmc2V0LCBvdXQpOworICAgICAgICBjYXNlIG9wX3N3aXRjaF9jaGFyOiB7Cisg
ICAgICAgICAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1w
VGFibGUoY3VycmVudFsxXS51Lm9wZXJhbmQpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gdGFibGUuYnJhbmNoT2Zmc2V0cy5zaXplKCk7IGktLTspCisgICAgICAgICAgICAgICAgb3V0
LmFwcGVuZChieXRlY29kZU9mZnNldCArIHRhYmxlLmJyYW5jaE9mZnNldHNbaV0pOwogICAgICAg
ICAgICAgb3V0LmFwcGVuZChieXRlY29kZU9mZnNldCArIGN1cnJlbnRbMl0udS5vcGVyYW5kKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bfc3dpdGNoX3N0
cmluZzogewogICAgICAgICAgICAgU3RyaW5nSnVtcFRhYmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+
c3RyaW5nU3dpdGNoSnVtcFRhYmxlKGN1cnJlbnRbMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAg
IFN0cmluZ0p1bXBUYWJsZTo6U3RyaW5nT2Zmc2V0VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSB0YWJs
ZS5vZmZzZXRUYWJsZS5iZWdpbigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1VubGlua2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE1MTgxMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNDIsOCArMzQyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgbV9yYXJlRGF0
YS0+bV9leGNlcHRpb25IYW5kbGVycy5zaHJpbmtUb0ZpdCgpOwogICAgICAgICAgICAgbV9yYXJl
RGF0YS0+bV9yZWdleHBzLnNocmlua1RvRml0KCk7CiAgICAgICAgICAgICBtX3JhcmVEYXRhLT5t
X2NvbnN0YW50QnVmZmVycy5zaHJpbmtUb0ZpdCgpOwotICAgICAgICAgICAgbV9yYXJlRGF0YS0+
bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzLnNocmlua1RvRml0KCk7Ci0gICAgICAgICAgICBt
X3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMuc2hyaW5rVG9GaXQoKTsKKyAg
ICAgICAgICAgIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5zaHJpbmtUb0ZpdCgpOwog
ICAgICAgICAgICAgbV9yYXJlRGF0YS0+bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLnNocmlua1Rv
Rml0KCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNTgsMTMgKzM1Nyw5IEBAIHB1YmxpYzoKIAog
ICAgIC8vIEp1bXAgVGFibGVzCiAKLSAgICBzaXplX3QgbnVtYmVyT2ZJbW1lZGlhdGVTd2l0Y2hK
dW1wVGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPm1faW1t
ZWRpYXRlU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkgOiAwOyB9Ci0gICAgVW5saW5rZWRTaW1wbGVK
dW1wVGFibGUmIGFkZEltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJ
Zk5lY2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMuYXBw
ZW5kKFVubGlua2VkU2ltcGxlSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9pbW1l
ZGlhdGVTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQotICAgIFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlJiBpbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgQVNTRVJUKG1f
cmFyZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVz
W3RhYmxlSW5kZXhdOyB9Ci0KLSAgICBzaXplX3QgbnVtYmVyT2ZDaGFyYWN0ZXJTd2l0Y2hKdW1w
VGFibGVzKCkgY29uc3QgeyByZXR1cm4gbV9yYXJlRGF0YSA/IG1fcmFyZURhdGEtPm1fY2hhcmFj
dGVyU3dpdGNoSnVtcFRhYmxlcy5zaXplKCkgOiAwOyB9Ci0gICAgVW5saW5rZWRTaW1wbGVKdW1w
VGFibGUmIGFkZENoYXJhY3RlclN3aXRjaEp1bXBUYWJsZSgpIHsgY3JlYXRlUmFyZURhdGFJZk5l
Y2Vzc2FyeSgpOyBtX3JhcmVEYXRhLT5tX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMuYXBwZW5k
KFVubGlua2VkU2ltcGxlSnVtcFRhYmxlKCkpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9jaGFyYWN0
ZXJTd2l0Y2hKdW1wVGFibGVzLmxhc3QoKTsgfQotICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxl
JiBjaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGUoaW50IHRhYmxlSW5kZXgpIHsgQVNTRVJUKG1fcmFy
ZURhdGEpOyByZXR1cm4gbV9yYXJlRGF0YS0+bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzW3Rh
YmxlSW5kZXhdOyB9CisgICAgc2l6ZV90IG51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0
IHsgcmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX3N3aXRjaEp1bXBUYWJsZXMuc2l6
ZSgpIDogMDsgfQorICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBhZGRTd2l0Y2hKdW1wVGFi
bGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+bV9zd2l0Y2hK
dW1wVGFibGVzLmFwcGVuZChVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZSgpKTsgcmV0dXJuIG1fcmFy
ZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0KKyAgICBVbmxpbmtlZFNpbXBsZUp1
bXBUYWJsZSYgc3dpdGNoSnVtcFRhYmxlKGludCB0YWJsZUluZGV4KSB7IEFTU0VSVChtX3JhcmVE
YXRhKTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3dpdGNoSnVtcFRhYmxlc1t0YWJsZUluZGV4XTsg
fQogCiAgICAgc2l6ZV90IG51bWJlck9mU3RyaW5nU3dpdGNoSnVtcFRhYmxlcygpIGNvbnN0IHsg
cmV0dXJuIG1fcmFyZURhdGEgPyBtX3JhcmVEYXRhLT5tX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXMu
c2l6ZSgpIDogMDsgfQogICAgIFVubGlua2VkU3RyaW5nSnVtcFRhYmxlJiBhZGRTdHJpbmdTd2l0
Y2hKdW1wVGFibGUoKSB7IGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsgbV9yYXJlRGF0YS0+
bV9zdHJpbmdTd2l0Y2hKdW1wVGFibGVzLmFwcGVuZChVbmxpbmtlZFN0cmluZ0p1bXBUYWJsZSgp
KTsgcmV0dXJuIG1fcmFyZURhdGEtPm1fc3RyaW5nU3dpdGNoSnVtcFRhYmxlcy5sYXN0KCk7IH0K
QEAgLTU0Nyw4ICs1NDIsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxDb25zdGFudEJ1ZmZl
cj4gbV9jb25zdGFudEJ1ZmZlcnM7CiAKICAgICAgICAgLy8gSnVtcCBUYWJsZXMKLSAgICAgICAg
VmVjdG9yPFVubGlua2VkU2ltcGxlSnVtcFRhYmxlPiBtX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJs
ZXM7Ci0gICAgICAgIFZlY3RvcjxVbmxpbmtlZFNpbXBsZUp1bXBUYWJsZT4gbV9jaGFyYWN0ZXJT
d2l0Y2hKdW1wVGFibGVzOworICAgICAgICBWZWN0b3I8VW5saW5rZWRTaW1wbGVKdW1wVGFibGU+
IG1fc3dpdGNoSnVtcFRhYmxlczsKICAgICAgICAgVmVjdG9yPFVubGlua2VkU3RyaW5nSnVtcFRh
YmxlPiBtX3N0cmluZ1N3aXRjaEp1bXBUYWJsZXM7CiAKICAgICAgICAgLy8gRXhwcmVzc2lvbiBp
bmZvIC0gcHJlc2VudCBpZiBkZWJ1Z2dpbmcuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNp
b24gMTUxODExKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyMzksMTkgKzIyMzksNiBAQCBzdGF0
aWMgaW50MzJfdCBrZXlGb3JJbW1lZGlhdGVTd2l0Y2goRXhwCiAgICAgcmV0dXJuIGtleSAtIG1p
bjsKIH0KIAotc3RhdGljIHZvaWQgcHJlcGFyZUp1bXBUYWJsZUZvckltbWVkaWF0ZVN3aXRjaChV
bmxpbmtlZFNpbXBsZUp1bXBUYWJsZSYganVtcFRhYmxlLCBpbnQzMl90IHN3aXRjaEFkZHJlc3Ms
IHVpbnQzMl90IGNsYXVzZUNvdW50LCBSZWZQdHI8TGFiZWw+KiBsYWJlbHMsIEV4cHJlc3Npb25O
b2RlKiogbm9kZXMsIGludDMyX3QgbWluLCBpbnQzMl90IG1heCkKLXsKLSAgICBqdW1wVGFibGUu
bWluID0gbWluOwotICAgIGp1bXBUYWJsZS5icmFuY2hPZmZzZXRzLnJlc2l6ZShtYXggLSBtaW4g
KyAxKTsKLSAgICBqdW1wVGFibGUuYnJhbmNoT2Zmc2V0cy5maWxsKDApOwotICAgIGZvciAodWlu
dDMyX3QgaSA9IDA7IGkgPCBjbGF1c2VDb3VudDsgKytpKSB7Ci0gICAgICAgIC8vIFdlJ3JlIGVt
aXR0aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhl
ZCwgc28gCi0gICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVm
ZXJlbmNlcwotICAgICAgICBBU1NFUlQoIWxhYmVsc1tpXS0+aXNGb3J3YXJkKCkpOwotICAgICAg
ICBqdW1wVGFibGUuYWRkKGtleUZvckltbWVkaWF0ZVN3aXRjaChub2Rlc1tpXSwgbWluLCBtYXgp
LCBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsgCi0g
ICAgfQotfQotCiBzdGF0aWMgaW50MzJfdCBrZXlGb3JDaGFyYWN0ZXJTd2l0Y2goRXhwcmVzc2lv
bk5vZGUqIG5vZGUsIGludDMyX3QgbWluLCBpbnQzMl90IG1heCkKIHsKICAgICBVTlVTRURfUEFS
QU0obWF4KTsKQEAgLTIyNjUsNyArMjI1MiwxMCBAQCBzdGF0aWMgaW50MzJfdCBrZXlGb3JDaGFy
YWN0ZXJTd2l0Y2goRXhwCiAgICAgcmV0dXJuIGtleSAtIG1pbjsKIH0KIAotc3RhdGljIHZvaWQg
cHJlcGFyZUp1bXBUYWJsZUZvckNoYXJhY3RlclN3aXRjaChVbmxpbmtlZFNpbXBsZUp1bXBUYWJs
ZSYganVtcFRhYmxlLCBpbnQzMl90IHN3aXRjaEFkZHJlc3MsIHVpbnQzMl90IGNsYXVzZUNvdW50
LCBSZWZQdHI8TGFiZWw+KiBsYWJlbHMsIEV4cHJlc3Npb25Ob2RlKiogbm9kZXMsIGludDMyX3Qg
bWluLCBpbnQzMl90IG1heCkKK3N0YXRpYyB2b2lkIHByZXBhcmVKdW1wVGFibGVGb3JTd2l0Y2go
CisgICAgVW5saW5rZWRTaW1wbGVKdW1wVGFibGUmIGp1bXBUYWJsZSwgaW50MzJfdCBzd2l0Y2hB
ZGRyZXNzLCB1aW50MzJfdCBjbGF1c2VDb3VudCwKKyAgICBSZWZQdHI8TGFiZWw+KiBsYWJlbHMs
IEV4cHJlc3Npb25Ob2RlKiogbm9kZXMsIGludDMyX3QgbWluLCBpbnQzMl90IG1heCwKKyAgICBp
bnQzMl90ICgqa2V5R2V0dGVyKShFeHByZXNzaW9uTm9kZSosIGludDMyX3QgbWluLCBpbnQzMl90
IG1heCkpCiB7CiAgICAganVtcFRhYmxlLm1pbiA9IG1pbjsKICAgICBqdW1wVGFibGUuYnJhbmNo
T2Zmc2V0cy5yZXNpemUobWF4IC0gbWluICsgMSk7CkBAIC0yMjc0LDcgKzIyNjQsNyBAQCBzdGF0
aWMgdm9pZCBwcmVwYXJlSnVtcFRhYmxlRm9yQ2hhcmFjdGVyCiAgICAgICAgIC8vIFdlJ3JlIGVt
aXR0aW5nIHRoaXMgYWZ0ZXIgdGhlIGNsYXVzZSBsYWJlbHMgc2hvdWxkIGhhdmUgYmVlbiBmaXhl
ZCwgc28gCiAgICAgICAgIC8vIHRoZSBsYWJlbHMgc2hvdWxkIG5vdCBiZSAiZm9yd2FyZCIgcmVm
ZXJlbmNlcwogICAgICAgICBBU1NFUlQoIWxhYmVsc1tpXS0+aXNGb3J3YXJkKCkpOwotICAgICAg
ICBqdW1wVGFibGUuYWRkKGtleUZvckNoYXJhY3RlclN3aXRjaChub2Rlc1tpXSwgbWluLCBtYXgp
LCBsYWJlbHNbaV0tPmJpbmQoc3dpdGNoQWRkcmVzcywgc3dpdGNoQWRkcmVzcyArIDMpKTsgCisg
ICAgICAgIGp1bXBUYWJsZS5hZGQoa2V5R2V0dGVyKG5vZGVzW2ldLCBtaW4sIG1heCksIGxhYmVs
c1tpXS0+YmluZChzd2l0Y2hBZGRyZXNzLCBzd2l0Y2hBZGRyZXNzICsgMykpOyAKICAgICB9CiB9
CiAKQEAgLTIyOTUsMjUgKzIyODUsMzQgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW5kU3dp
dGNoKHVpbnQzMgogewogICAgIFN3aXRjaEluZm8gc3dpdGNoSW5mbyA9IG1fc3dpdGNoQ29udGV4
dFN0YWNrLmxhc3QoKTsKICAgICBtX3N3aXRjaENvbnRleHRTdGFjay5yZW1vdmVMYXN0KCk7Ci0g
ICAgaWYgKHN3aXRjaEluZm8uc3dpdGNoVHlwZSA9PSBTd2l0Y2hJbmZvOjpTd2l0Y2hJbW1lZGlh
dGUpIHsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCAr
IDFdID0gbV9jb2RlQmxvY2stPm51bWJlck9mSW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcygpOwor
ICAgIAorICAgIHN3aXRjaCAoc3dpdGNoSW5mby5zd2l0Y2hUeXBlKSB7CisgICAgY2FzZSBTd2l0
Y2hJbmZvOjpTd2l0Y2hJbW1lZGlhdGU6CisgICAgY2FzZSBTd2l0Y2hJbmZvOjpTd2l0Y2hDaGFy
YWN0ZXI6IHsKKyAgICAgICAgaW5zdHJ1Y3Rpb25zKClbc3dpdGNoSW5mby5ieXRlY29kZU9mZnNl
dCArIDFdID0gbV9jb2RlQmxvY2stPm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpOwogICAgICAg
ICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMl0gPSBkZWZhdWx0
TGFiZWwtPmJpbmQoc3dpdGNoSW5mby5ieXRlY29kZU9mZnNldCwgc3dpdGNoSW5mby5ieXRlY29k
ZU9mZnNldCArIDMpOwogCi0gICAgICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1wVGFi
bGUgPSBtX2NvZGVCbG9jay0+YWRkSW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKCk7Ci0gICAgICAg
IHByZXBhcmVKdW1wVGFibGVGb3JJbW1lZGlhdGVTd2l0Y2goanVtcFRhYmxlLCBzd2l0Y2hJbmZv
LmJ5dGVjb2RlT2Zmc2V0LCBjbGF1c2VDb3VudCwgbGFiZWxzLCBub2RlcywgbWluLCBtYXgpOwot
ICAgIH0gZWxzZSBpZiAoc3dpdGNoSW5mby5zd2l0Y2hUeXBlID09IFN3aXRjaEluZm86OlN3aXRj
aENoYXJhY3RlcikgewotICAgICAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2Rl
T2Zmc2V0ICsgMV0gPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZDaGFyYWN0ZXJTd2l0Y2hKdW1wVGFi
bGVzKCk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQg
KyAyXSA9IGRlZmF1bHRMYWJlbC0+YmluZChzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0LCBzd2l0
Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0ICsgMyk7CisgICAgICAgIFVubGlua2VkU2ltcGxlSnVtcFRh
YmxlJiBqdW1wVGFibGUgPSBtX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCk7CisgICAg
ICAgIHByZXBhcmVKdW1wVGFibGVGb3JTd2l0Y2goCisgICAgICAgICAgICBqdW1wVGFibGUsIHN3
aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQsIGNsYXVzZUNvdW50LCBsYWJlbHMsIG5vZGVzLCBtaW4s
IG1heCwKKyAgICAgICAgICAgIHN3aXRjaEluZm8uc3dpdGNoVHlwZSA9PSBTd2l0Y2hJbmZvOjpT
d2l0Y2hJbW1lZGlhdGUKKyAgICAgICAgICAgICAgICA/IGtleUZvckltbWVkaWF0ZVN3aXRjaAor
ICAgICAgICAgICAgICAgIDoga2V5Rm9yQ2hhcmFjdGVyU3dpdGNoKTsgCisgICAgICAgIGJyZWFr
OworICAgIH0KICAgICAgICAgCi0gICAgICAgIFVubGlua2VkU2ltcGxlSnVtcFRhYmxlJiBqdW1w
VGFibGUgPSBtX2NvZGVCbG9jay0+YWRkQ2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlKCk7Ci0gICAg
ICAgIHByZXBhcmVKdW1wVGFibGVGb3JDaGFyYWN0ZXJTd2l0Y2goanVtcFRhYmxlLCBzd2l0Y2hJ
bmZvLmJ5dGVjb2RlT2Zmc2V0LCBjbGF1c2VDb3VudCwgbGFiZWxzLCBub2RlcywgbWluLCBtYXgp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChzd2l0Y2hJbmZvLnN3aXRjaFR5cGUgPT0g
U3dpdGNoSW5mbzo6U3dpdGNoU3RyaW5nKTsKKyAgICBjYXNlIFN3aXRjaEluZm86OlN3aXRjaFN0
cmluZzogewogICAgICAgICBpbnN0cnVjdGlvbnMoKVtzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0
ICsgMV0gPSBtX2NvZGVCbG9jay0+bnVtYmVyT2ZTdHJpbmdTd2l0Y2hKdW1wVGFibGVzKCk7CiAg
ICAgICAgIGluc3RydWN0aW9ucygpW3N3aXRjaEluZm8uYnl0ZWNvZGVPZmZzZXQgKyAyXSA9IGRl
ZmF1bHRMYWJlbC0+YmluZChzd2l0Y2hJbmZvLmJ5dGVjb2RlT2Zmc2V0LCBzd2l0Y2hJbmZvLmJ5
dGVjb2RlT2Zmc2V0ICsgMyk7CiAKICAgICAgICAgVW5saW5rZWRTdHJpbmdKdW1wVGFibGUmIGp1
bXBUYWJsZSA9IG1fY29kZUJsb2NrLT5hZGRTdHJpbmdTd2l0Y2hKdW1wVGFibGUoKTsKICAgICAg
ICAgcHJlcGFyZUp1bXBUYWJsZUZvclN0cmluZ1N3aXRjaChqdW1wVGFibGUsIHN3aXRjaEluZm8u
Ynl0ZWNvZGVPZmZzZXQsIGNsYXVzZUNvdW50LCBsYWJlbHMsIG5vZGVzKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgICAgICAKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lv
biAxNTE4MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyNyw4ICsxMDI3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgVmVjdG9yPHVuc2lnbmVkPiBtX2lkZW50aWZpZXJSZW1hcDsKICAgICAgICAgVmVjdG9yPHVu
c2lnbmVkPiBtX2NvbnN0YW50UmVtYXA7CiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9jb25z
dGFudEJ1ZmZlclJlbWFwOwotICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fc3dpdGNoSW1tUmVt
YXA7Ci0gICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9zd2l0Y2hDaGFyUmVtYXA7CisgICAgICAg
IFZlY3Rvcjx1bnNpZ25lZD4gbV9zd2l0Y2hSZW1hcDsKICAgICAgICAgCiAgICAgICAgIC8vIEJs
b2NrcyBpbnRyb2R1Y2VkIGJ5IHRoaXMgY29kZSBibG9jaywgd2hpY2ggbmVlZCBzdWNjZXNzb3Ig
bGlua2luZy4KICAgICAgICAgLy8gTWF5IGluY2x1ZGUgdXAgdG8gb25lIGJhc2ljIGJsb2NrIHRo
YXQgaW5jbHVkZXMgdGhlIGNvbnRpbnVhdGlvbiBhZnRlcgpAQCAtMjc1MSw5ICsyNzUwLDkgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9w
X3N3aXRjaF9pbW06IHsKICAgICAgICAgICAgIFN3aXRjaERhdGEgZGF0YTsKICAgICAgICAgICAg
IGRhdGEua2luZCA9IFN3aXRjaEltbTsKLSAgICAgICAgICAgIGRhdGEuc3dpdGNoVGFibGVJbmRl
eCA9IG1faW5saW5lU3RhY2tUb3AtPm1fc3dpdGNoSW1tUmVtYXBbY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZF07CisgICAgICAgICAgICBkYXRhLnN3aXRjaFRhYmxlSW5kZXggPSBtX2lu
bGluZVN0YWNrVG9wLT5tX3N3aXRjaFJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmRdOwogICAgICAgICAgICAgZGF0YS5mYWxsVGhyb3VnaCA9IG1fY3VycmVudEluZGV4ICsgY3Vy
cmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJs
ZSYgdGFibGUgPSBtX2NvZGVCbG9jay0+aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dp
dGNoVGFibGVJbmRleCk7CisgICAgICAgICAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gbV9j
b2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxlSW5kZXgpOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgICAgICAgICBpZiAoIXRhYmxlLmJyYW5jaE9mZnNldHNbaV0pCiAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjc3MCw5ICsyNzY5LDkgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX3N3aXRj
aF9jaGFyOiB7CiAgICAgICAgICAgICBTd2l0Y2hEYXRhIGRhdGE7CiAgICAgICAgICAgICBkYXRh
LmtpbmQgPSBTd2l0Y2hDaGFyOwotICAgICAgICAgICAgZGF0YS5zd2l0Y2hUYWJsZUluZGV4ID0g
bV9pbmxpbmVTdGFja1RvcC0+bV9zd2l0Y2hDaGFyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZF07CisgICAgICAgICAgICBkYXRhLnN3aXRjaFRhYmxlSW5kZXggPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX3N3aXRjaFJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmRd
OwogICAgICAgICAgICAgZGF0YS5mYWxsVGhyb3VnaCA9IG1fY3VycmVudEluZGV4ICsgY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIFNpbXBsZUp1bXBUYWJsZSYg
dGFibGUgPSBtX2NvZGVCbG9jay0+Y2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlKGRhdGEuc3dpdGNo
VGFibGVJbmRleCk7CisgICAgICAgICAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gbV9jb2Rl
QmxvY2stPnN3aXRjaEp1bXBUYWJsZShkYXRhLnN3aXRjaFRhYmxlSW5kZXgpOwogICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhYmxlLmJyYW5jaE9mZnNldHMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgICAgICAgICBpZiAoIXRhYmxlLmJyYW5jaE9mZnNldHNbaV0pCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzI4Myw4ICszMjgyLDcgQEAgQnl0ZUNvZGVQ
YXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogICAgICAgICBtX2lkZW50aWZpZXJSZW1h
cC5yZXNpemUoY29kZUJsb2NrLT5udW1iZXJPZklkZW50aWZpZXJzKCkpOwogICAgICAgICBtX2Nv
bnN0YW50UmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZDb25zdGFudFJlZ2lzdGVycygp
KTsKICAgICAgICAgbV9jb25zdGFudEJ1ZmZlclJlbWFwLnJlc2l6ZShjb2RlQmxvY2stPm51bWJl
ck9mQ29uc3RhbnRCdWZmZXJzKCkpOwotICAgICAgICBtX3N3aXRjaEltbVJlbWFwLnJlc2l6ZShj
b2RlQmxvY2stPm51bWJlck9mSW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcygpKTsKLSAgICAgICAg
bV9zd2l0Y2hDaGFyUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZDaGFyYWN0ZXJTd2l0
Y2hKdW1wVGFibGVzKCkpOworICAgICAgICBtX3N3aXRjaFJlbWFwLnJlc2l6ZShjb2RlQmxvY2st
Pm51bWJlck9mU3dpdGNoSnVtcFRhYmxlcygpKTsKIAogICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpOyArK2kpIHsKICAgICAgICAg
ICAgIFN0cmluZ0ltcGwqIHJlcCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihpKS5pbXBsKCk7CkBA
IC0zMzI1LDEzICszMzIzLDkgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6Oklu
bGluZQogICAgICAgICAgICAgbV9jb25zdGFudEJ1ZmZlclJlbWFwW2ldID0gbmV3SW5kZXg7CiAg
ICAgICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9jb25zdGFudEJ1ZmZlckNhY2hlLmFkZChDb25z
dGFudEJ1ZmZlcktleShjb2RlQmxvY2ssIGkpLCBuZXdJbmRleCk7CiAgICAgICAgIH0KLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZJbW1lZGlhdGVT
d2l0Y2hKdW1wVGFibGVzKCk7ICsraSkgewotICAgICAgICAgICAgbV9zd2l0Y2hJbW1SZW1hcFtp
XSA9IGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+bnVtYmVyT2ZJbW1lZGlhdGVTd2l0Y2hK
dW1wVGFibGVzKCk7Ci0gICAgICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2stPmFk
ZEltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZSgpID0gY29kZUJsb2NrLT5pbW1lZGlhdGVTd2l0Y2hK
dW1wVGFibGUoaSk7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvZGVCbG9jay0+bnVtYmVyT2ZDaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzKCk7ICsraSkgewot
ICAgICAgICAgICAgbV9zd2l0Y2hDaGFyUmVtYXBbaV0gPSBieXRlQ29kZVBhcnNlci0+bV9jb2Rl
QmxvY2stPm51bWJlck9mQ2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcygpOwotICAgICAgICAgICAg
Ynl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5hZGRDaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGUo
KSA9IGNvZGVCbG9jay0+Y2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlKGkpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMo
KTsgKytpKSB7CisgICAgICAgICAgICBtX3N3aXRjaFJlbWFwW2ldID0gYnl0ZUNvZGVQYXJzZXIt
Pm1fY29kZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsKKyAgICAgICAgICAgIGJ5
dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jay0+YWRkU3dpdGNoSnVtcFRhYmxlKCkgPSBjb2RlQmxv
Y2stPnN3aXRjaEp1bXBUYWJsZShpKTsKICAgICAgICAgfQogICAgICAgICBtX2NhbGxzaXRlQmxv
Y2tIZWFkTmVlZHNMaW5raW5nID0gdHJ1ZTsKICAgICB9IGVsc2UgewpAQCAtMzM0NywxOCArMzM0
MSwxNSBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAgICAg
IG1faWRlbnRpZmllclJlbWFwLnJlc2l6ZShjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMo
KSk7CiAgICAgICAgIG1fY29uc3RhbnRSZW1hcC5yZXNpemUoY29kZUJsb2NrLT5udW1iZXJPZkNv
bnN0YW50UmVnaXN0ZXJzKCkpOwogICAgICAgICBtX2NvbnN0YW50QnVmZmVyUmVtYXAucmVzaXpl
KGNvZGVCbG9jay0+bnVtYmVyT2ZDb25zdGFudEJ1ZmZlcnMoKSk7Ci0gICAgICAgIG1fc3dpdGNo
SW1tUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZJbW1lZGlhdGVTd2l0Y2hKdW1wVGFi
bGVzKCkpOwotICAgICAgICBtX3N3aXRjaENoYXJSZW1hcC5yZXNpemUoY29kZUJsb2NrLT5udW1i
ZXJPZkNoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMoKSk7CisgICAgICAgIG1fc3dpdGNoUmVtYXAu
cmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCkpOwogICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZJZGVudGlmaWVycygpOyAr
K2kpCiAgICAgICAgICAgICBtX2lkZW50aWZpZXJSZW1hcFtpXSA9IGk7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZkNvbnN0YW50UmVnaXN0ZXJzKCk7
ICsraSkKICAgICAgICAgICAgIG1fY29uc3RhbnRSZW1hcFtpXSA9IGkgKyBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleDsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb2RlQmxvY2st
Pm51bWJlck9mQ29uc3RhbnRCdWZmZXJzKCk7ICsraSkKICAgICAgICAgICAgIG1fY29uc3RhbnRC
dWZmZXJSZW1hcFtpXSA9IGk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29kZUJs
b2NrLT5udW1iZXJPZkltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMoKTsgKytpKQotICAgICAgICAg
ICAgbV9zd2l0Y2hJbW1SZW1hcFtpXSA9IGk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgY29kZUJsb2NrLT5udW1iZXJPZkNoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMoKTsgKytpKQot
ICAgICAgICAgICAgbV9zd2l0Y2hDaGFyUmVtYXBbaV0gPSBpOworICAgICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1wVGFibGVzKCk7ICsraSkK
KyAgICAgICAgICAgIG1fc3dpdGNoUmVtYXBbaV0gPSBpOwogICAgICAgICBtX2NhbGxzaXRlQmxv
Y2tIZWFkTmVlZHNMaW5raW5nID0gZmFsc2U7CiAgICAgfQogICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5jcHAJKHJldmlzaW9uIDE1MTgxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTAsMzkgKzE1MCwyMyBAQCB2b2lkIEpJVENvbXBpbGVyOjpjb21waWxlRXhj
ZXB0aW9uSGFuZGxlCiAgICAgfQogfQogCi1TaW1wbGVKdW1wVGFibGUmIEpJVENvbXBpbGVyOjpq
dW1wVGFibGUoU3dpdGNoS2luZCBraW5kLCB1bnNpZ25lZCBpbmRleCkKLXsKLSAgICBzd2l0Y2gg
KGtpbmQpIHsKLSAgICBjYXNlIFN3aXRjaEltbToKLSAgICAgICAgcmV0dXJuIG1fY29kZUJsb2Nr
LT5pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUoaW5kZXgpOwotICAgIGNhc2UgU3dpdGNoQ2hhcjoK
LSAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGUoaW5k
ZXgpOwotICAgIH0KLX0KLQotdW5zaWduZWQgSklUQ29tcGlsZXI6Om51bWJlck9mSnVtcFRhYmxl
cyhTd2l0Y2hLaW5kIGtpbmQpCit2b2lkIEpJVENvbXBpbGVyOjpsaW5rKExpbmtCdWZmZXImIGxp
bmtCdWZmZXIpCiB7Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBTd2l0Y2hJbW06Ci0g
ICAgICAgIHJldHVybiBtX2NvZGVCbG9jay0+bnVtYmVyT2ZJbW1lZGlhdGVTd2l0Y2hKdW1wVGFi
bGVzKCk7Ci0gICAgY2FzZSBTd2l0Y2hDaGFyOgotICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2st
Pm51bWJlck9mQ2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcygpOwotICAgIH0KLX0KKyAgICAvLyBM
aW5rIHRoZSBjb2RlLCBwb3B1bGF0ZSBkYXRhIGluIENvZGVCbG9jayBkYXRhIHN0cnVjdHVyZXMu
CisjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQorICAgIGRhdGFMb2dGKCJKSVQgY29kZSBm
b3IgJXAgc3RhcnQgYXQgWyVwLCAlcCkuIFNpemUgPSAlenUuXG4iLCBtX2NvZGVCbG9jaywgbGlu
a0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSwgc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIuZGVi
dWdBZGRyZXNzKCkpICsgbGlua0J1ZmZlci5kZWJ1Z1NpemUoKSwgbGlua0J1ZmZlci5kZWJ1Z1Np
emUoKSk7CisjZW5kaWYKIAotdm9pZCBKSVRDb21waWxlcjo6bGlua1N3aXRjaGVzKExpbmtCdWZm
ZXImIGxpbmtCdWZmZXIsIFN3aXRjaEtpbmQga2luZCkKLXsKICAgICBCaXRWZWN0b3IgdXNlZEp1
bXBUYWJsZXM7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX3N3aXRjaERhdGEuc2l6
ZSgpOyBpLS07KSB7CiAgICAgICAgIFN3aXRjaERhdGEmIGRhdGEgPSBtX2dyYXBoLm1fc3dpdGNo
RGF0YVtpXTsKICAgICAgICAgaWYgKCFkYXRhLmRpZFVzZUp1bXBUYWJsZSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAKLSAgICAgICAgaWYgKGRhdGEua2luZCAhPSBraW5kKQotICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKGRhdGEua2luZCA9PSBT
d2l0Y2hJbW0gfHwgZGF0YS5raW5kID09IFN3aXRjaENoYXIpOwogICAgICAgICAKICAgICAgICAg
dXNlZEp1bXBUYWJsZXMuc2V0KGRhdGEuc3dpdGNoVGFibGVJbmRleCk7Ci0gICAgICAgIFNpbXBs
ZUp1bXBUYWJsZSYgdGFibGUgPSBqdW1wVGFibGUoa2luZCwgZGF0YS5zd2l0Y2hUYWJsZUluZGV4
KTsKKyAgICAgICAgU2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1fY29kZUJsb2NrLT5zd2l0Y2hK
dW1wVGFibGUoZGF0YS5zd2l0Y2hUYWJsZUluZGV4KTsKICAgICAgICAgdGFibGUuY3RpRGVmYXVs
dCA9IGxpbmtCdWZmZXIubG9jYXRpb25PZihtX2Jsb2NrSGVhZHNbZGF0YS5mYWxsVGhyb3VnaF0p
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSB0YWJsZS5jdGlPZmZzZXRzLnNpemUoKTsgai0t
OykKICAgICAgICAgICAgIHRhYmxlLmN0aU9mZnNldHNbal0gPSB0YWJsZS5jdGlEZWZhdWx0OwpA
QCAtMTkzLDIzICsxNzcsMTIgQEAgdm9pZCBKSVRDb21waWxlcjo6bGlua1N3aXRjaGVzKExpbmtC
dWZmZQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IG51bWJl
ck9mSnVtcFRhYmxlcyhraW5kKTsgaS0tOykgeworICAgIGZvciAodW5zaWduZWQgaSA9IG1fY29k
ZUJsb2NrLT5udW1iZXJPZlN3aXRjaEp1bXBUYWJsZXMoKTsgaS0tOykgewogICAgICAgICBpZiAo
dXNlZEp1bXBUYWJsZXMuZ2V0KGkpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAot
ICAgICAgICBqdW1wVGFibGUoa2luZCwgaSkuY2xlYXIoKTsKKyAgICAgICAgbV9jb2RlQmxvY2st
PnN3aXRjaEp1bXBUYWJsZShpKS5jbGVhcigpOwogICAgIH0KLX0KLQotdm9pZCBKSVRDb21waWxl
cjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQotewotICAgIC8vIExpbmsgdGhlIGNvZGUs
IHBvcHVsYXRlIGRhdGEgaW4gQ29kZUJsb2NrIGRhdGEgc3RydWN0dXJlcy4KLSNpZiBERkdfRU5B
QkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZGF0YUxvZ0YoIkpJVCBjb2RlIGZvciAlcCBzdGFydCBh
dCBbJXAsICVwKS4gU2l6ZSA9ICV6dS5cbiIsIG1fY29kZUJsb2NrLCBsaW5rQnVmZmVyLmRlYnVn
QWRkcmVzcygpLCBzdGF0aWNfY2FzdDxjaGFyKj4obGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSkg
KyBsaW5rQnVmZmVyLmRlYnVnU2l6ZSgpLCBsaW5rQnVmZmVyLmRlYnVnU2l6ZSgpKTsKLSNlbmRp
ZgotCi0gICAgbGlua1N3aXRjaGVzKGxpbmtCdWZmZXIsIFN3aXRjaEltbSk7Ci0gICAgbGlua1N3
aXRjaGVzKGxpbmtCdWZmZXIsIFN3aXRjaENoYXIpOwogCiAgICAgLy8gTGluayBhbGwgY2FsbHMg
b3V0IGZyb20gdGhlIEpJVCBjb2RlIHRvIHRoZWlyIHJlc3BlY3RpdmUgZnVuY3Rpb25zLgogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NhbGxzLnNpemUoKTsgKytpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkocmV2aXNpb24gMTUxODEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NzMsMTAgKzQ3Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBjb21waWxlQm9k
eSgpOwogICAgIHZvaWQgbGluayhMaW5rQnVmZmVyJik7CiAgICAgCi0gICAgU2ltcGxlSnVtcFRh
YmxlJiBqdW1wVGFibGUoU3dpdGNoS2luZCwgdW5zaWduZWQpOwotICAgIHVuc2lnbmVkIG51bWJl
ck9mSnVtcFRhYmxlcyhTd2l0Y2hLaW5kKTsKLSAgICB2b2lkIGxpbmtTd2l0Y2hlcyhMaW5rQnVm
ZmVyJiwgU3dpdGNoS2luZCk7Ci0KICAgICB2b2lkIGV4aXRTcGVjdWxhdGl2ZVdpdGhPU1IoY29u
c3QgT1NSRXhpdCYsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqKTsKICAgICB2b2lkIGNvbXBpbGVFeGNl
cHRpb25IYW5kbGVycygpOwogICAgIHZvaWQgbGlua09TUkV4aXRzKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDE1MTgxMSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1ODcsNyArMTU4Nyw3IEBAIGNoYXIqIERGR19PUEVSQVRJT04gb3BlcmF0aW9u
RmluZFN3aXRjaEkKICAgICBFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRW
YWx1ZSwgc2l6ZV90IHRhYmxlSW5kZXgpCiB7CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKLSAgICBTaW1wbGVKdW1wVGFibGUmIHRhYmxlID0gY29kZUJsb2Nr
LT5pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCk7CisgICAgU2ltcGxlSnVtcFRh
YmxlJiB0YWJsZSA9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwogICAg
IEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBBU1NF
UlQodmFsdWUuaXNEb3VibGUoKSk7CiAgICAgZG91YmxlIGFzRG91YmxlID0gdmFsdWUuYXNEb3Vi
bGUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCShyZXZpc2lvbiAxNTE4MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ0MSw4ICs0NDQxLDkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlKE5vZGUqLCBFZAogfQogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW50SnVtcCgKLSAgICBTd2l0Y2hEYXRhKiBkYXRhLCBT
aW1wbGVKdW1wVGFibGUmIHRhYmxlLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKQorICAg
IFN3aXRjaERhdGEqIGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gpCiB7CisgICAg
U2ltcGxlSnVtcFRhYmxlJiB0YWJsZSA9IG1faml0LmNvZGVCbG9jaygpLT5zd2l0Y2hKdW1wVGFi
bGUoZGF0YS0+c3dpdGNoVGFibGVJbmRleCk7CiAgICAgbV9qaXQuc3ViMzIoSW1tMzIodGFibGUu
bWluKSwgdmFsdWUpOwogICAgIGFkZEJyYW5jaCgKICAgICAgICAgbV9qaXQuYnJhbmNoMzIoSklU
Q29tcGlsZXI6OkFib3ZlT3JFcXVhbCwgdmFsdWUsIEltbTMyKHRhYmxlLmN0aU9mZnNldHMuc2l6
ZSgpKSksCkBAIC00NDUzLDIxICs0NDU0LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRT
d2l0Y2hJbnRKdW1wKAogICAgIGRhdGEtPmRpZFVzZUp1bXBUYWJsZSA9IHRydWU7CiB9CiAKLXZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hJbW1JbnRKdW1wKAotICAgIFN3aXRjaERhdGEq
IGRhdGEsIEdQUlJlZyB2YWx1ZSwgR1BSUmVnIHNjcmF0Y2gpCi17Ci0gICAgZW1pdFN3aXRjaElu
dEp1bXAoCi0gICAgICAgIGRhdGEsIG1faml0LmNvZGVCbG9jaygpLT5pbW1lZGlhdGVTd2l0Y2hK
dW1wVGFibGUoZGF0YS0+c3dpdGNoVGFibGVJbmRleCksCi0gICAgICAgIHZhbHVlLCBzY3JhdGNo
KTsKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaEltbShOb2RlKiBub2RlLCBT
d2l0Y2hEYXRhKiBkYXRhKQogewogICAgIHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
KSB7CiAgICAgY2FzZSBJbnQzMlVzZTogewogICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOwotICAgICAgICBlbWl0U3dpdGNoSW1tSW50SnVtcChkYXRhLCB2YWx1ZS5ncHIoKSwg
dGVtcC5ncHIoKSk7CisgICAgICAgIGVtaXRTd2l0Y2hJbnRKdW1wKGRhdGEsIHZhbHVlLmdwcigp
LCB0ZW1wLmdwcigpKTsKICAgICAgICAgbm9SZXN1bHQobm9kZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KQEAgLTQ0ODMsNyArNDQ3Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0
Y2hJbW0oTm9kZSoKICNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBub3RJbnQgPSBtX2ppdC5icmFuY2g2NCgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpCZWxv
dywgdmFsdWVSZWdzLmdwcigpLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwotICAg
ICAgICBlbWl0U3dpdGNoSW1tSW50SnVtcChkYXRhLCB2YWx1ZVJlZ3MuZ3ByKCksIHNjcmF0Y2gp
OworICAgICAgICBlbWl0U3dpdGNoSW50SnVtcChkYXRhLCB2YWx1ZVJlZ3MuZ3ByKCksIHNjcmF0
Y2gpOwogICAgICAgICBub3RJbnQubGluaygmbV9qaXQpOwogICAgICAgICBhZGRCcmFuY2goCiAg
ICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoCkBAIC00NDk2LDcgKzQ0ODksNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoSW1tKE5vZGUqCiAjZWxzZQogICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBub3RJbnQgPSBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgdmFsdWVSZWdzLnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6SW50MzJUYWcpKTsKLSAgICAgICAgZW1pdFN3aXRjaEltbUludEp1bXAoZGF0YSwgdmFsdWVS
ZWdzLnBheWxvYWRHUFIoKSwgc2NyYXRjaCk7CisgICAgICAgIGVtaXRTd2l0Y2hJbnRKdW1wKGRh
dGEsIHZhbHVlUmVncy5wYXlsb2FkR1BSKCksIHNjcmF0Y2gpOwogICAgICAgICBub3RJbnQubGlu
aygmbV9qaXQpOwogICAgICAgICBhZGRCcmFuY2goCiAgICAgICAgICAgICBtX2ppdC5icmFuY2gz
MigKQEAgLTQ1NTAsOSArNDU0Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hD
aGFyU3RyaW4KICAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZSks
IHNjcmF0Y2gpOwogICAgIAogICAgIHJlYWR5LmxpbmsoJm1faml0KTsKLSAgICBlbWl0U3dpdGNo
SW50SnVtcCgKLSAgICAgICAgZGF0YSwgbV9qaXQuY29kZUJsb2NrKCktPmNoYXJhY3RlclN3aXRj
aEp1bXBUYWJsZShkYXRhLT5zd2l0Y2hUYWJsZUluZGV4KSwKLSAgICAgICAgc2NyYXRjaCwgdmFs
dWUpOworICAgIGVtaXRTd2l0Y2hJbnRKdW1wKGRhdGEsIHNjcmF0Y2gsIHZhbHVlKTsKIH0KIAog
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaENoYXIoTm9kZSogbm9kZSwgU3dpdGNoRGF0
YSogZGF0YSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHJldmlzaW9uIDE1MTgxMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTg0NCw4ICsxODQ0LDcgQEAg
cHVibGljOgogICAgIHZvaWQgY29tcGlsZUxvZ2ljYWxOb3QoTm9kZSopOwogICAgIHZvaWQgZW1p
dE9iamVjdE9yT3RoZXJCcmFuY2goRWRnZSB2YWx1ZSwgQmxvY2tJbmRleCB0YWtlbiwgQmxvY2tJ
bmRleCBub3RUYWtlbik7CiAgICAgdm9pZCBlbWl0QnJhbmNoKE5vZGUqKTsKLSAgICB2b2lkIGVt
aXRTd2l0Y2hJbnRKdW1wKFN3aXRjaERhdGEqLCBTaW1wbGVKdW1wVGFibGUmLCBHUFJSZWcgdmFs
dWUsIEdQUlJlZyBzY3JhdGNoKTsKLSAgICB2b2lkIGVtaXRTd2l0Y2hJbW1JbnRKdW1wKFN3aXRj
aERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKTsKKyAgICB2b2lkIGVtaXRTd2l0
Y2hJbnRKdW1wKFN3aXRjaERhdGEqLCBHUFJSZWcgdmFsdWUsIEdQUlJlZyBzY3JhdGNoKTsKICAg
ICB2b2lkIGVtaXRTd2l0Y2hJbW0oTm9kZSosIFN3aXRjaERhdGEqKTsKICAgICB2b2lkIGVtaXRT
d2l0Y2hDaGFyU3RyaW5nSnVtcChTd2l0Y2hEYXRhKiwgR1BSUmVnIHZhbHVlLCBHUFJSZWcgc2Ny
YXRjaCk7CiAgICAgdm9pZCBlbWl0U3dpdGNoQ2hhcihOb2RlKiwgU3dpdGNoRGF0YSopOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5rLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCShyZXZpc2lvbiAxNTE4MTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Myw4ICs1Myw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBzdGF0ZS5ncmFwaC5tX2NvZGVCbG9jazsKICAgICAKICAgICAvLyBMTFZNIHdp
bGwgY3JlYXRlIGl0cyBvd24ganVtcCB0YWJsZXMgYXMgbmVlZGVkLgotICAgIGNvZGVCbG9jay0+
Y2xlYXJJbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzKCk7Ci0gICAgY29kZUJsb2NrLT5jbGVhckNo
YXJhY3RlclN3aXRjaEp1bXBUYWJsZXMoKTsKKyAgICBjb2RlQmxvY2stPmNsZWFyU3dpdGNoSnVt
cFRhYmxlcygpOwogICAgIAogICAgIC8vIENyZWF0ZSB0aGUgZW50cnlwb2ludC4KICAgICAvLyBG
SVhNRTogVGhpcyBpcyBhIHRvdGFsIGtsdWRnZSAtIExMVk0gc2hvdWxkIGp1c3QgdXNlIG91ciBj
YWxsaW5nIGNvbnZlbnRpb24uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
Y29kZXMzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwCShyZXZpc2lvbiAxNTE4MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjcsNyAr
MTAyNyw3IEBAIHZvaWQgSklUOjplbWl0X29wX3N3aXRjaF9pbW0oSW5zdHJ1Y3Rpb24KICAgICB1
bnNpZ25lZCBzY3J1dGluZWUgPSBjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kOwogCiAg
ICAgLy8gY3JlYXRlIGp1bXAgdGFibGUgZm9yIHN3aXRjaCBkZXN0aW5hdGlvbnMsIHRyYWNrIHRo
aXMgc3dpdGNoIHN0YXRlbWVudC4KLSAgICBTaW1wbGVKdW1wVGFibGUqIGp1bXBUYWJsZSA9ICZt
X2NvZGVCbG9jay0+aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOworICAgIFNp
bXBsZUp1bXBUYWJsZSoganVtcFRhYmxlID0gJm1fY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUo
dGFibGVJbmRleCk7CiAgICAgbV9zd2l0Y2hlcy5hcHBlbmQoU3dpdGNoUmVjb3JkKGp1bXBUYWJs
ZSwgbV9ieXRlY29kZU9mZnNldCwgZGVmYXVsdE9mZnNldCwgU3dpdGNoUmVjb3JkOjpJbW1lZGlh
dGUpKTsKICAgICBqdW1wVGFibGUtPmN0aU9mZnNldHMuZ3JvdyhqdW1wVGFibGUtPmJyYW5jaE9m
ZnNldHMuc2l6ZSgpKTsKIApAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
c3dpdGNoX2NoYXIoSW5zdHJ1Y3RpbwogICAgIHVuc2lnbmVkIHNjcnV0aW5lZSA9IGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQ7CiAKICAgICAvLyBjcmVhdGUganVtcCB0YWJsZSBmb3Ig
c3dpdGNoIGRlc3RpbmF0aW9ucywgdHJhY2sgdGhpcyBzd2l0Y2ggc3RhdGVtZW50LgotICAgIFNp
bXBsZUp1bXBUYWJsZSoganVtcFRhYmxlID0gJm1fY29kZUJsb2NrLT5jaGFyYWN0ZXJTd2l0Y2hK
dW1wVGFibGUodGFibGVJbmRleCk7CisgICAgU2ltcGxlSnVtcFRhYmxlKiBqdW1wVGFibGUgPSAm
bV9jb2RlQmxvY2stPnN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKICAgICBtX3N3aXRjaGVz
LmFwcGVuZChTd2l0Y2hSZWNvcmQoanVtcFRhYmxlLCBtX2J5dGVjb2RlT2Zmc2V0LCBkZWZhdWx0
T2Zmc2V0LCBTd2l0Y2hSZWNvcmQ6OkNoYXJhY3RlcikpOwogICAgIGp1bXBUYWJsZS0+Y3RpT2Zm
c2V0cy5ncm93KGp1bXBUYWJsZS0+YnJhbmNoT2Zmc2V0cy5zaXplKCkpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHJldmlzaW9uIDE1MTgxMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTgzNSw3ICs4MzUsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9zd2l0Y2hfaW1tKEluc3RydWN0
aW9uCiAgICAgdW5zaWduZWQgc2NydXRpbmVlID0gY3VycmVudEluc3RydWN0aW9uWzNdLnUub3Bl
cmFuZDsKIAogICAgIC8vIGNyZWF0ZSBqdW1wIHRhYmxlIGZvciBzd2l0Y2ggZGVzdGluYXRpb25z
LCB0cmFjayB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQuCi0gICAgU2ltcGxlSnVtcFRhYmxlKiBqdW1w
VGFibGUgPSAmbV9jb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4
KTsKKyAgICBTaW1wbGVKdW1wVGFibGUqIGp1bXBUYWJsZSA9ICZtX2NvZGVCbG9jay0+c3dpdGNo
SnVtcFRhYmxlKHRhYmxlSW5kZXgpOwogICAgIG1fc3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29y
ZChqdW1wVGFibGUsIG1fYnl0ZWNvZGVPZmZzZXQsIGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29y
ZDo6SW1tZWRpYXRlKSk7CiAgICAganVtcFRhYmxlLT5jdGlPZmZzZXRzLmdyb3coanVtcFRhYmxl
LT5icmFuY2hPZmZzZXRzLnNpemUoKSk7CiAKQEAgLTg1Myw3ICs4NTMsNyBAQCB2b2lkIEpJVDo6
ZW1pdF9vcF9zd2l0Y2hfY2hhcihJbnN0cnVjdGlvCiAgICAgdW5zaWduZWQgc2NydXRpbmVlID0g
Y3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZDsKIAogICAgIC8vIGNyZWF0ZSBqdW1wIHRh
YmxlIGZvciBzd2l0Y2ggZGVzdGluYXRpb25zLCB0cmFjayB0aGlzIHN3aXRjaCBzdGF0ZW1lbnQu
Ci0gICAgU2ltcGxlSnVtcFRhYmxlKiBqdW1wVGFibGUgPSAmbV9jb2RlQmxvY2stPmNoYXJhY3Rl
clN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KTsKKyAgICBTaW1wbGVKdW1wVGFibGUqIGp1bXBU
YWJsZSA9ICZtX2NvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpOwogICAgIG1f
c3dpdGNoZXMuYXBwZW5kKFN3aXRjaFJlY29yZChqdW1wVGFibGUsIG1fYnl0ZWNvZGVPZmZzZXQs
IGRlZmF1bHRPZmZzZXQsIFN3aXRjaFJlY29yZDo6Q2hhcmFjdGVyKSk7CiAgICAganVtcFRhYmxl
LT5jdGlPZmZzZXRzLmdyb3coanVtcFRhYmxlLT5icmFuY2hPZmZzZXRzLnNpemUoKSk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxNTE4MTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjAwMSwxMCArMjAwMSwxMCBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3Bf
c3dpdGNoX2ltCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpOwogCiAgICAgaWYgKHNjcnV0aW5lZS5pc0ludDMyKCkpCi0gICAgICAgIHJldHVybiBjb2Rl
QmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KS5jdGlGb3JWYWx1ZShz
Y3J1dGluZWUuYXNJbnQzMigpKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICByZXR1cm4g
Y29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCkuY3RpRm9yVmFsdWUoc2NydXRp
bmVlLmFzSW50MzIoKSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKICAgICBpZiAoc2NydXRpbmVlLmlz
RG91YmxlKCkgJiYgc2NydXRpbmVlLmFzRG91YmxlKCkgPT0gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
c2NydXRpbmVlLmFzRG91YmxlKCkpKQotICAgICAgICByZXR1cm4gY29kZUJsb2NrLT5pbW1lZGlh
dGVTd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCkuY3RpRm9yVmFsdWUoc3RhdGljX2Nhc3Q8aW50
MzJfdD4oc2NydXRpbmVlLmFzRG91YmxlKCkpKS5leGVjdXRhYmxlQWRkcmVzcygpOwotICAgIHJl
dHVybiBjb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KS5jdGlE
ZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgICAgIHJldHVybiBjb2RlQmxvY2stPnN3
aXRjaEp1bXBUYWJsZSh0YWJsZUluZGV4KS5jdGlGb3JWYWx1ZShzdGF0aWNfY2FzdDxpbnQzMl90
PihzY3J1dGluZWUuYXNEb3VibGUoKSkpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgcmV0dXJu
IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRhYmxlKHRhYmxlSW5kZXgpLmN0aURlZmF1bHQuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKIH0KIAogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX3N3aXRj
aF9jaGFyKQpAQCAtMjAxNiwxMiArMjAxNiwxMiBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lk
Kiwgb3Bfc3dpdGNoX2NoCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNh
bGxGcmFtZTsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCk7CiAKLSAgICB2b2lkKiByZXN1bHQgPSBjb2RlQmxvY2stPmNoYXJhY3RlclN3aXRjaEp1bXBU
YWJsZSh0YWJsZUluZGV4KS5jdGlEZWZhdWx0LmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAgdm9p
ZCogcmVzdWx0ID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJbmRleCkuY3RpRGVm
YXVsdC5leGVjdXRhYmxlQWRkcmVzcygpOwogCiAgICAgaWYgKHNjcnV0aW5lZS5pc1N0cmluZygp
KSB7CiAgICAgICAgIFN0cmluZ0ltcGwqIHZhbHVlID0gYXNTdHJpbmcoc2NydXRpbmVlKS0+dmFs
dWUoY2FsbEZyYW1lKS5pbXBsKCk7CiAgICAgICAgIGlmICh2YWx1ZS0+bGVuZ3RoKCkgPT0gMSkK
LSAgICAgICAgICAgIHJlc3VsdCA9IGNvZGVCbG9jay0+Y2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxl
KHRhYmxlSW5kZXgpLmN0aUZvclZhbHVlKCgqdmFsdWUpWzBdKS5leGVjdXRhYmxlQWRkcmVzcygp
OworICAgICAgICAgICAgcmVzdWx0ID0gY29kZUJsb2NrLT5zd2l0Y2hKdW1wVGFibGUodGFibGVJ
bmRleCkuY3RpRm9yVmFsdWUoKCp2YWx1ZSlbMF0pLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAg
fQogCiAgICAgQ0hFQ0tfRk9SX0VYQ0VQVElPTl9BVF9FTkQoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMTUxODEx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODgxLDcgKzg4MSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9zd2l0Y2hfaW0KICAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsK
ICAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5pbW1lZGlh
dGVTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShpbnRWYWx1
ZSwgZGVmYXVsdE9mZnNldCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+c3dpdGNoSnVtcFRh
YmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRlZmF1bHRPZmZz
ZXQpOwogICAgIH0gZWxzZQogICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OwogICAgIExMSU5U
X0VORCgpOwpAQCAtODk3LDcgKzg5Nyw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9zd2l0Y2hfY2gKICAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKICAg
ICBTdHJpbmdJbXBsKiBpbXBsID0gc3RyaW5nLT52YWx1ZShleGVjKS5pbXBsKCk7CiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKLSAgICBwYyArPSBjb2RlQmxv
Y2stPmNoYXJhY3RlclN3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZh
bHVlKCgqaW1wbClbMF0sIGRlZmF1bHRPZmZzZXQpOworICAgIHBjICs9IGNvZGVCbG9jay0+c3dp
dGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoKCppbXBsKVswXSwg
ZGVmYXVsdE9mZnNldCk7CiAgICAgTExJTlRfRU5EKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCShyZXZpc2lvbiAxNTE4MTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQkod29ya2luZyBjb3B5KQpAQCAtMTUwMiw3ICsxNTAy
LDcgQEAgX2xsaW50X29wX3N3aXRjaF9pbW06CiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQy
CiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKICAgICBtdWxpIHNpemVv
ZiBTaW1wbGVKdW1wVGFibGUsIHQzICAgIyBGSVhNRTogd291bGQgYmUgbmljZSB0byBwZWVwaG9s
ZSB0aGlzIQotICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNo
SnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZHAgQ29kZUJs
b2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3Qy
XSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNo
SW1tTm90SW50CiAgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCkBAIC0xNTMw
LDcgKzE1MzAsNyBAQCBfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CiAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQyCiAgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKICAgICBt
dWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzCi0gICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJl
RGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3Qy
XSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX3N3aXRjaEp1bXBUYWJsZXMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYmluZXEg
dDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAogICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20JKHJldmlzaW9uIDE1MTgxMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzQ4LDcgKzEzNDgsNyBAQCBfbGxpbnRfb3Bfc3dpdGNoX2ltbToK
ICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFy
ZURhdGFbdDJdLCB0MgogICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMgICAgIyBG
SVhNRTogd291bGQgYmUgbmljZSB0byBwZWVwaG9sZSB0aGlzIQotICAgIGxvYWRwIENvZGVCbG9j
azo6UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9m
ZnNldFt0Ml0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9zd2l0Y2hKdW1w
VGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKICAgICBhZGRwIHQzLCB0MgogICAg
IGJxYiB0MSwgdGFnVHlwZU51bWJlciwgLm9wU3dpdGNoSW1tTm90SW50CiAgICAgc3ViaSBTaW1w
bGVKdW1wVGFibGU6Om1pblt0Ml0sIHQxCkBAIC0xMzc2LDcgKzEzNzYsNyBAQCBfbGxpbnRfb3Bf
c3dpdGNoX2NoYXI6CiAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCiAgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKICAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFi
bGUsIHQzCi0gICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hK
dW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6OlJhcmVEYXRhOjptX3N3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJd
LCB0MgogICAgIGFkZHAgdDMsIHQyCiAgICAgYnRxbnogdDEsIHRhZ01hc2ssIC5vcFN3aXRjaENo
YXJGYWxsVGhyb3VnaAogICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MAo=
</data>
<flag name="review"
          id="226604"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>