<?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>74335</bug_id>
          
          <creation_ts>2011-12-12 14:26:53 -0800</creation_ts>
          <short_desc>Remove most uses of JSArray vptr</short_desc>
          <delta_ts>2011-12-18 12:22:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          <dependson>74332</dependson>
          <blocked>74331</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>519468</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-12 14:26:53 -0800</bug_when>
    <thetext>Similar to bug 74333, but we can&apos;t remove all of the uses because certain functions require other vptrs to be removed as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519505</commentid>
    <comment_count>1</comment_count>
      <attachid>118858</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-12 14:48:54 -0800</bug_when>
    <thetext>Created attachment 118858
Remove uses of JSArray vptr

No changelog (see bug 74331)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519533</commentid>
    <comment_count>2</comment_count>
      <attachid>118858</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-12 14:58:57 -0800</bug_when>
    <thetext>Comment on attachment 118858
Remove uses of JSArray vptr

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519534</commentid>
    <comment_count>3</comment_count>
      <attachid>118858</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-12 15:00:21 -0800</bug_when>
    <thetext>Comment on attachment 118858
Remove uses of JSArray vptr

View in context: https://bugs.webkit.org/attachment.cgi?id=118858&amp;action=review

&gt; Source/JavaScriptCore/heap/MarkStack.cpp:315
&gt; +    if (cell-&gt;classInfo() == &amp;JSArray::s_info) {

Should use isJSArray().</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118858</attachid>
            <date>2011-12-12 14:48:54 -0800</date>
            <delta_ts>2011-12-12 15:00:21 -0800</delta_ts>
            <desc>Remove uses of JSArray vptr</desc>
            <filename>0003-Removed-uses-of-JSArray-vptr-in-all-but-a-few-places.patch</filename>
            <type>text/plain</type>
            <size>38966</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">RnJvbSA5MGUyNjQ3Yjc4MGMwMWZiNjE1NTRlZWEzNzJiNjIwYjJmNmFlZDQ0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIEhhaG5lbmJlcmcgPG1oYWhuZW5iZXJnQGFwcGxlLmNv
bT4KRGF0ZTogTW9uLCA1IERlYyAyMDExIDE3OjMyOjU5IC0wODAwClN1YmplY3Q6IFtQQVRDSCAw
My8xOF0gUmVtb3ZlZCB1c2VzIG9mIEpTQXJyYXkgdnB0ciBpbiBhbGwgYnV0IGEgZmV3IHBsYWNl
cy4gCiBUaGUgcmVtYWluaW5nIHBsYWNlcyBkZXBlbmQgb24gb3RoZXIgdnB0cnMgYmVpbmcKIHJl
bW92ZWQgYXMgd2VsbCwgc28gd2UnbGwgcmVtb3ZlIGl0IGNvbXBsZXRlbHkgd2hlbgogaXQncyAx
MDAlIG5vIGxvbmdlciBuZWVkZWQuCgotLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAgICAgICAgIHwgICAgNCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdSZXBhdGNoLmNwcCAgICAgICAgICAgfCAgICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCAgICB8ICAgIDQgKy0KIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgIHwgICAxMiArKysrLS0tLQogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAgICAgICAgICAgICAgICAgfCAgICAyICst
CiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwICAgICAgICAgICB8ICAg
MTEgKysrLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmggICAgICAg
ICAgICAgfCAgICA2ICstLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3Iu
aCAgICAgICAgICAgfCAgICA2ICsrLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAgIHwgICAxMCArKystLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwICAgIHwgICAgNiArKy0tCiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcCAgICAgICAgICAgICB8ICAgIDQgKy0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCAgIHwgICAzMCArKysrKysrKysr
LS0tLS0tLS0tLQogLi4uL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUu
Y3BwICAgfCAgICAyICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNw
cCAgICAgICAgICB8ICAgIDIgKy0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaCAgICAgICAgICAgIHwgICAgNCArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNCb3VuZEZ1bmN0aW9uLmNwcCAgfCAgICA0ICstCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09OT2JqZWN0LmNwcCAgICAgICB8ICAgMTIgKysrKy0tLS0KIC4uLi9qcy9KU0NhbnZh
c1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgICAgICAgIHwgICAgMiArLQogU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwICAgfCAgICAyICstCiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAgICAgICAgICB8ICAgIDIgKy0K
IC4uLi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgIHwgICAg
NCArLQogMjEgZmlsZXMgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgNjggZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggZmMx
YzdhNi4uODVjYmVmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHB1dEJ5VmFsKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIHVpbnQzMl90IGluZGV4LAogewogICAg
IEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CiAKLSAgICBp
ZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpIHsKKyAgICBpZiAoaXNKU0FycmF5
KGJhc2VWYWx1ZSkpIHsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1
ZSk7CiAgICAgICAgIGlmIChhcnJheS0+Y2FuU2V0SW5kZXgoaW5kZXgpKSB7CiAgICAgICAgICAg
ICBhcnJheS0+c2V0SW5kZXgoKmdsb2JhbERhdGEsIGluZGV4LCB2YWx1ZSk7CkBAIC0yNzIsNyAr
MjcyLDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogYmFzZSwgdWludDMyX3QgaW4KICAgICBKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogCiAgICAgLy8gRklYTUU6IHRoZSBKSVQgdXNl
ZCB0byBoYW5kbGUgdGhlc2UgaW4gY29tcGlsZWQgY29kZSEKLSAgICBpZiAoaXNKU0FycmF5KGds
b2JhbERhdGEsIGJhc2UpICYmIGFzQXJyYXkoYmFzZSktPmNhbkdldEluZGV4KGluZGV4KSkKKyAg
ICBpZiAoaXNKU0FycmF5KGJhc2UpICYmIGFzQXJyYXkoYmFzZSktPmNhbkdldEluZGV4KGluZGV4
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc0FycmF5KGJhc2UpLT5nZXRJbmRl
eChpbmRleCkpOwogCiAgICAgLy8gRklYTUU6IHRoZSBKSVRzdHViIHVzZWQgdG8gcmVsaW5rIHRo
aXMgdG8gYW4gb3B0aW1pemVkIGZvcm0hCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdSZXBh
dGNoLmNwcAppbmRleCAyYjU2ODA4Li5jNDRlOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUmVwYXRjaC5jcHAKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNo
ZUdldEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRp
ZmllcgogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICAKLSAg
ICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkgJiYgcHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsKKyAgICBpZiAoaXNKU0FycmF5KGJhc2VW
YWx1ZSkgJiYgcHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpIHsK
ICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLmJh
c2VHUFIpOwogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdH
UFIgPSBzdGF0aWNfY2FzdDxHUFJSZWc+KHN0dWJJbmZvLnZhbHVlVGFnR1BSKTsKQEAgLTE4Myw3
ICsxODMsNyBAQCBzdGF0aWMgYm9vbCB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllcgogICAgICAgICAKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXBMaXN0IGZhaWx1cmVDYXNlczsKICAgICAgICAgCi0gICAgICAgIGZh
aWx1cmVDYXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIoZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgIGZhaWx1cmVD
YXNlcy5hcHBlbmQoc3R1YkppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAg
ICAgICAgCiAgICAgICAgIHN0dWJKaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSLCBKU0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAg
c3R1YkppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgT0JKRUNU
X09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgc2NyYXRjaEdQUik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDk1YjZm
NWMuLmM5ODI4M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCkBAIC0xMDY0LDcgKzEwNjQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
aGVja0FyZ3VtZW50VHlwZXMoKQogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7
CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1
YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhK
U1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRl
bXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRh
KCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVl
UmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCksIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zm
c2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkp
OwogICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZUFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBl
KSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBt
X2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3RlciksIHRl
bXAuZ3ByKCkpOwpAQCAtMTEyNCw3ICsxMTI0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hl
Y2tBcmd1bWVudFR5cGVzKCkKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxU
YWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7
CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3ModGVtcC5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBH
UFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKaW5kZXggNzNkM2Fl
MC4uZjc4NmI0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCkBAIC0yMTEzLDcgKzIxMTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBj
ZWxsKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBj
ZWxsLmdwcigpOwogICAgICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEpTVmFsdWVSZWdzKGNlbGxHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxs
R1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5q
c0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVS
ZWdzKGNlbGxHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OmNs
YXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6
OnNfaW5mbykpKTsKICAgICAgICAgICAgIG1faml0LnN0b3JlUHRyKGNlbGxHUFIsIEpJVENvbXBp
bGVyOjphZGRyZXNzRm9yKG5vZGUubG9jYWwoKSkpOwogICAgICAgICAgICAgbm9SZXN1bHQobV9j
b21waWxlSW5kZXgpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZUFycmF5UHJlZGljdGlvbihw
cmVkaWN0ZWRUeXBlKSkgewpAQCAtMjY4OCw3ICsyNjg4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlm
ICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKGJhc2VSZWcpLCBu
b2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VS
ZWcsIEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogCiAgICAgICAgIC8vIEZJWE1F
OiBJbiBjYXNlcyB3aGVyZSB0aGVyZSBhcmUgc3Vic2VxdWVudCBieV92YWwgYWNjZXNzZXMgdG8g
dGhlIHNhbWUgYmFzZSBpdCBtaWdodCBoZWxwIHRvIGNhY2hlCkBAIC0yNzk5LDcgKzI3OTksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIC8vIENo
ZWNrIHRoYXQgYmFzZSBpcyBhbiBhcnJheSwgYW5kIHRoYXQgcHJvcGVydHkgaXMgY29udGFpbmVk
IHdpdGhpbiBtX3ZlY3RvciAoPCBtX3ZlY3Rvckxlbmd0aCkuCiAgICAgICAgIC8vIElmIHdlIGhh
dmUgcHJlZGljdGVkIHRoZSBiYXNlIHRvIGJlIHR5cGUgYXJyYXksIHdlIGNhbiBza2lwIHRoZSBj
aGVjay4KICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1
ZVJlZ3MoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkp
OworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyhiYXNlUmVnKSwgbm9k
ZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAKICAg
ICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgcHJvcGVydHkudXNlKCk7CkBAIC0yOTQzLDcgKzI5
NDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
IHdyaXRlQmFycmllcihiYXNlR1BSLCB2YWx1ZUdQUiwgbm9kZS5jaGlsZDIoKSwgV3JpdGVCYXJy
aWVyRm9yUHJvcGVydHlBY2Nlc3MsIHN0b3JhZ2VHUFIsIHN0b3JhZ2VMZW5ndGhHUFIpOwogCiAg
ICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKGJh
c2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQx
KCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAKICAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0Fy
cmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJh
eVN0b3JhZ2UsIG1fbGVuZ3RoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwpAQCAtMjk4Niw3ICsyOTg2
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBH
UFJSZWcgc3RvcmFnZUxlbmd0aEdQUiA9IHN0b3JhZ2VMZW5ndGguZ3ByKCk7CiAgICAgICAgIAog
ICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyhi
YXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7CisgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxk
MSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKICAgICAgICAgCiAg
ICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNB
cnJheTo6c3RvcmFnZU9mZnNldCgpKSwgc3RvcmFnZUdQUik7CiAgICAgICAgIG1faml0LmxvYWQz
MihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJy
YXlTdG9yYWdlLCBtX2xlbmd0aCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKQEAgLTM0NDYsNyArMzQ0
Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
R1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICgh
aXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkp
Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KGJhc2VHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9yYWdl
T2Zmc2V0KCkpLCByZXN1bHRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX2xl
bmd0aCkpLCByZXN1bHRHUFIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAppbmRleCA0
NWQ1Y2U2Li43NGU4Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcApAQCAtMzE5
LDcgKzMxOSw3IEBAIEhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBIZWFwU2l6
ZSBoZWFwU2l6ZSkKICAgICAsIG1fYWN0aXZpdHlDYWxsYmFjayhEZWZhdWx0R0NBY3Rpdml0eUNh
bGxiYWNrOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX21hY2hpbmVUaHJlYWRzKHRoaXMpCiAgICAg
LCBtX3NoYXJlZERhdGEoZ2xvYmFsRGF0YSkKLSAgICAsIG1fc2xvdFZpc2l0b3IobV9zaGFyZWRE
YXRhLCBnbG9iYWxEYXRhLT5qc0FycmF5VlB0ciwgZ2xvYmFsRGF0YS0+anNGaW5hbE9iamVjdFZQ
dHIpCisgICAgLCBtX3Nsb3RWaXNpdG9yKG1fc2hhcmVkRGF0YSwgZ2xvYmFsRGF0YS0+anNGaW5h
bE9iamVjdFZQdHIpCiAgICAgLCBtX2hhbmRsZUhlYXAoZ2xvYmFsRGF0YSkKICAgICAsIG1faXNT
YWZlVG9Db2xsZWN0KGZhbHNlKQogICAgICwgbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAppbmRleCA3ZmEyMjFhLi5iZTAxYTJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKQEAgLTIxOSw3ICsy
MTksNyBAQCB2b2lkIE1hcmtTdGFja0FycmF5OjpzdGVhbFNvbWVDZWxsc0Zyb20oTWFya1N0YWNr
QXJyYXkmIG90aGVyKQogdm9pZCBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhOjptYXJraW5nVGhy
ZWFkTWFpbigpCiB7CiAgICAgV1RGOjpyZWdpc3RlckdDVGhyZWFkKCk7Ci0gICAgU2xvdFZpc2l0
b3Igc2xvdFZpc2l0b3IoKnRoaXMsIG1fZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIsIG1fZ2xvYmFs
RGF0YS0+anNGaW5hbE9iamVjdFZQdHIpOworICAgIFNsb3RWaXNpdG9yIHNsb3RWaXNpdG9yKCp0
aGlzLCBtX2dsb2JhbERhdGEtPmpzRmluYWxPYmplY3RWUHRyKTsKICAgICBQYXJhbGxlbE1vZGVF
bmFibGVyIGVuYWJsZXIoc2xvdFZpc2l0b3IpOwogICAgIHNsb3RWaXNpdG9yLmRyYWluRnJvbVNo
YXJlZChTbG90VmlzaXRvcjo6U2xhdmVEcmFpbik7CiB9CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9p
ZCBNYXJrU3RhY2s6OmFwcGVuZChDb25zZXJ2YXRpdmVSb290cyYgY29uc2VydmF0aXZlUm9vdHMp
CiAgICAgICAgIGludGVybmFsQXBwZW5kKHJvb3RzW2ldKTsKIH0KIAotQUxXQVlTX0lOTElORSBz
dGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBKU0Nl
bGwqIGNlbGwsIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyLCB2b2lkKiBqc0FycmF5VlB0cikKK0FM
V0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRv
ciwgY29uc3QgSlNDZWxsKiBjZWxsLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cikKIHsKICNpZiBF
TkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQogICAgIG1fdmlzaXRlZFR5cGVDb3VudHMuY291
bnQoY2VsbCk7CkBAIC0zMTIsNyArMzEyLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBKU0NlbGwqIGNlbGwKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChjZWxsLT52cHRyKCkgPT0ganNBcnJheVZQ
dHIpIHsKKyAgICBpZiAoY2VsbC0+Y2xhc3NJbmZvKCkgPT0gJkpTQXJyYXk6OnNfaW5mbykgewog
ICAgICAgICBKU0FycmF5Ojp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCks
IHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzM5LDE0ICszMzksMTMgQEAg
dm9pZCBTbG90VmlzaXRvcjo6ZHJhaW4oKQogICAgIEFTU0VSVChtX2lzSW5QYXJhbGxlbE1vZGUp
OwogICAgIAogICAgIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyID0gbV9qc0ZpbmFsT2JqZWN0VlB0
cjsKLSAgICB2b2lkKiBqc0FycmF5VlB0ciA9IG1fanNBcnJheVZQdHI7CiAKICNpZiBFTkFCTEUo
UEFSQUxMRUxfR0MpCiAgICAgaWYgKEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJzID4gMSkg
ewogICAgICAgICB3aGlsZSAoIW1fc3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX3N0
YWNrLnJlZmlsbCgpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBjb3VudGRvd24gPSBIZXVy
aXN0aWNzOjptaW5pbXVtTnVtYmVyT2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7IG1fc3RhY2suY2Fu
UmVtb3ZlTGFzdCgpICYmIGNvdW50ZG93bi0tOykKLSAgICAgICAgICAgICAgICB2aXNpdENoaWxk
cmVuKCp0aGlzLCBtX3N0YWNrLnJlbW92ZUxhc3QoKSwganNGaW5hbE9iamVjdFZQdHIsIGpzQXJy
YXlWUHRyKTsKKyAgICAgICAgICAgICAgICB2aXNpdENoaWxkcmVuKCp0aGlzLCBtX3N0YWNrLnJl
bW92ZUxhc3QoKSwganNGaW5hbE9iamVjdFZQdHIpOwogICAgICAgICAgICAgZG9uYXRlS25vd25Q
YXJhbGxlbCgpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMzU4LDcgKzM1Nyw3IEBAIHZvaWQg
U2xvdFZpc2l0b3I6OmRyYWluKCkKICAgICB3aGlsZSAoIW1fc3RhY2suaXNFbXB0eSgpKSB7CiAg
ICAgICAgIG1fc3RhY2sucmVmaWxsKCk7CiAgICAgICAgIHdoaWxlIChtX3N0YWNrLmNhblJlbW92
ZUxhc3QoKSkKLSAgICAgICAgICAgIHZpc2l0Q2hpbGRyZW4oKnRoaXMsIG1fc3RhY2sucmVtb3Zl
TGFzdCgpLCBqc0ZpbmFsT2JqZWN0VlB0ciwganNBcnJheVZQdHIpOworICAgICAgICAgICAgdmlz
aXRDaGlsZHJlbigqdGhpcywgbV9zdGFjay5yZW1vdmVMYXN0KCksIGpzRmluYWxPYmplY3RWUHRy
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgKaW5kZXgg
OGUwZTAzZi4uODY1MGM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya1N0YWNrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmgK
QEAgLTIwNCw3ICsyMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgZnJpZW5kIGNsYXNz
IEhlYXBSb290VmlzaXRvcjsgLy8gQWxsb3dlZCB0byBtYXJrIGEgSlNWYWx1ZSogb3IgSlNDZWxs
KiogZGlyZWN0bHkuCiAKICAgICBwdWJsaWM6Ci0gICAgICAgIE1hcmtTdGFjayhNYXJrU3RhY2tU
aHJlYWRTaGFyZWREYXRhJiwgdm9pZCoganNBcnJheVZQdHIsIHZvaWQqIGpzRmluYWxPYmplY3RW
UHRyKTsKKyAgICAgICAgTWFya1N0YWNrKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEmLCB2b2lk
KiBqc0ZpbmFsT2JqZWN0VlB0cik7CiAgICAgICAgIH5NYXJrU3RhY2soKTsKIAogICAgICAgICB2
b2lkIGFwcGVuZChDb25zZXJ2YXRpdmVSb290cyYpOwpAQCAtMjY3LDcgKzI2Nyw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBNYXJrU3RhY2tBcnJheSBt
X3N0YWNrOwotICAgICAgICB2b2lkKiBtX2pzQXJyYXlWUHRyOwogICAgICAgICB2b2lkKiBtX2pz
RmluYWxPYmplY3RWUHRyOwogICAgICAgICBIYXNoU2V0PHZvaWQqPiBtX29wYXF1ZVJvb3RzOyAv
LyBIYW5kbGUtb3duaW5nIGRhdGEgc3RydWN0dXJlcyBub3QgdmlzaWJsZSB0byB0aGUgZ2FyYmFn
ZSBjb2xsZWN0b3IuCiAgICAgICAgIApAQCAtMjg1LDkgKzI4NCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhJiBtX3NoYXJlZDsKICAgICB9Owog
Ci0gICAgaW5saW5lIE1hcmtTdGFjazo6TWFya1N0YWNrKE1hcmtTdGFja1RocmVhZFNoYXJlZERh
dGEmIHNoYXJlZCwgdm9pZCoganNBcnJheVZQdHIsIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyKQor
ICAgIGlubGluZSBNYXJrU3RhY2s6Ok1hcmtTdGFjayhNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRh
JiBzaGFyZWQsIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyKQogICAgICAgICA6IG1fc3RhY2soc2hh
cmVkLm1fc2VnbWVudEFsbG9jYXRvcikKLSAgICAgICAgLCBtX2pzQXJyYXlWUHRyKGpzQXJyYXlW
UHRyKQogICAgICAgICAsIG1fanNGaW5hbE9iamVjdFZQdHIoanNGaW5hbE9iamVjdFZQdHIpCiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAsIG1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJr
VmlvbGF0aW9uKGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
U2xvdFZpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgK
aW5kZXggYWRhZGFkYi4uMmJmYTVkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvU2xvdFZpc2l0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90
VmlzaXRvci5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIEhlYXA7CiBjbGFzcyBTbG90VmlzaXRv
ciA6IHB1YmxpYyBNYXJrU3RhY2sgewogICAgIGZyaWVuZCBjbGFzcyBIZWFwUm9vdFZpc2l0b3I7
CiBwdWJsaWM6Ci0gICAgU2xvdFZpc2l0b3IoTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYsIHZv
aWQqIGpzQXJyYXlWUHRyLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cik7CisgICAgU2xvdFZpc2l0
b3IoTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYsIHZvaWQqIGpzRmluYWxPYmplY3RWUHRyKTsK
IAogICAgIHZvaWQgZG9uYXRlKCkKICAgICB7CkBAIC03MSw4ICs3MSw4IEBAIHByaXZhdGU6CiAg
ICAgfQogfTsKIAotaW5saW5lIFNsb3RWaXNpdG9yOjpTbG90VmlzaXRvcihNYXJrU3RhY2tUaHJl
YWRTaGFyZWREYXRhJiBzaGFyZWQsIHZvaWQqIGpzQXJyYXlWUHRyLCB2b2lkKiBqc0ZpbmFsT2Jq
ZWN0VlB0cikKLSAgICA6IE1hcmtTdGFjayhzaGFyZWQsIGpzQXJyYXlWUHRyLCBqc0ZpbmFsT2Jq
ZWN0VlB0cikKK2lubGluZSBTbG90VmlzaXRvcjo6U2xvdFZpc2l0b3IoTWFya1N0YWNrVGhyZWFk
U2hhcmVkRGF0YSYgc2hhcmVkLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cikKKyAgICA6IE1hcmtT
dGFjayhzaGFyZWQsIGpzRmluYWxPYmplY3RWUHRyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCBiYWZiNWE3Li43
Mzc3ZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKQEAgLTUwNiw3ICs1MDYsNyBAQCBDYWxsRnJhbWUqIGxvYWRWYXJhcmdzKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgSlNWYWx1ZQog
ICAgICAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwogICAgIH0KIAotICAgIGlmIChpc0pTQXJyYXko
JmNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBhcmd1bWVudHMpKSB7CisgICAgaWYgKGlzSlNBcnJh
eShhcmd1bWVudHMpKSB7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheShhcmd1bWVu
dHMpOwogICAgICAgICB1bnNpZ25lZCBhcmdDb3VudCA9IGFycmF5LT5sZW5ndGgoKTsKICAgICAg
ICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShjYWxsRnJhbWUt
PnJlZ2lzdGVycygpICsgZmlyc3RGcmVlUmVnaXN0ZXIgKyBhcmdDb3VudCArIDEgKyBSZWdpc3Rl
ckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUpOwpAQCAtMTUwOSw3ICsxNTA5LDcgQEAgTkVWRVJf
SU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgQ29kZUJsb2NrKgogICAgIH0KIAogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
ICZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKTsKLSAgICBpZiAoaXNKU0FycmF5KGdsb2JhbERhdGEs
IGJhc2VWYWx1ZSkgJiYgcHJvcGVydHlOYW1lID09IGNhbGxGcmFtZS0+cHJvcGVydHlOYW1lcygp
Lmxlbmd0aCkgeworICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUg
PT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CiAgICAgICAgIHZQQ1swXSA9
IGdldE9wY29kZShvcF9nZXRfYXJyYXlfbGVuZ3RoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTMyMTgsNyArMzIxOCw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAKICAgICAgICAgaW50
IGJhc2UgPSB2UENbMl0udS5vcGVyYW5kOwogICAgICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IGNh
bGxGcmFtZS0+cihiYXNlKS5qc1ZhbHVlKCk7Ci0gICAgICAgIGlmIChMSUtFTFkoaXNKU0FycmF5
KGdsb2JhbERhdGEsIGJhc2VWYWx1ZSkpKSB7CisgICAgICAgIGlmIChMSUtFTFkoaXNKU0FycmF5
KGJhc2VWYWx1ZSkpKSB7CiAgICAgICAgICAgICBpbnQgZHN0ID0gdlBDWzFdLnUub3BlcmFuZDsK
ICAgICAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2VkUihkc3QpID0ganNOdW1iZXIoYXNBcnJh
eShiYXNlVmFsdWUpLT5sZW5ndGgoKSk7CiAgICAgICAgICAgICB2UEMgKz0gT1BDT0RFX0xFTkdU
SChvcF9nZXRfYXJyYXlfbGVuZ3RoKTsKQEAgLTM1MTEsNyArMzUxMSw3IEBAIHNraXBfaWRfY3Vz
dG9tX3NlbGY6CiAKICAgICAgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsK
ICAgICAgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKLSAgICAgICAg
ICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkgeworICAgICAgICAgICAg
aWYgKGlzSlNBcnJheShiYXNlVmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgSlNBcnJheSoganNB
cnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoanNBcnJheS0+
Y2FuR2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGpzQXJyYXktPmdl
dEluZGV4KGkpOwpAQCAtMzU1Myw3ICszNTUzLDcgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKIAog
ICAgICAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICAgICAg
dWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwotICAgICAgICAgICAgaWYgKGlzSlNB
cnJheShnbG9iYWxEYXRhLCBiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBpZiAoaXNKU0FycmF5
KGJhc2VWYWx1ZSkpIHsKICAgICAgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJh
eShiYXNlVmFsdWUpOwogICAgICAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChp
KSkKICAgICAgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoKmdsb2JhbERhdGEsIGks
IGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKaW5kZXggMmM3MTY4Ny4uNDg5NTFlOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAg
LTEwOCw3ICsxMDgsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfdmFsKEluc3RydWN0aW9u
KiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgemVyb0V4dGVuZDMyVG9QdHIocmVnVDEsIHJlZ1Qx
KTsKIAogICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZSk7Ci0gICAg
YWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwKSwgVHJ1c3RlZElt
bVB0cihtX2dsb2JhbERhdGEtPmpzQXJyYXlWUHRyKSkpOworICAgIGFkZFNsb3dDYXNlKGJyYW5j
aFB0cihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSks
IFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKIAogICAgIGxvYWRQdHIoQWRkcmVz
cyhyZWdUMCwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVnVDIpOwogICAgIGFkZFNsb3dD
YXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6
OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgSklUOjpl
bWl0X29wX3B1dF9ieV92YWwoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICAv
LyBTZWUgY29tbWVudCBpbiBvcF9nZXRfYnlfdmFsLgogICAgIHplcm9FeHRlbmQzMlRvUHRyKHJl
Z1QxLCByZWdUMSk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNl
KTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDApLCBU
cnVzdGVkSW1tUHRyKG1fZ2xvYmFsRGF0YS0+anNBcnJheVZQdHIpKSk7CisgICAgYWRkU2xvd0Nh
c2UoYnJhbmNoUHRyKE5vdEVxdWFsLCBBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6OmNsYXNzSW5mb09m
ZnNldCgpKSwgVHJ1c3RlZEltbVB0cigmSlNBcnJheTo6c19pbmZvKSkpOwogICAgIGFkZFNsb3dD
YXNlKGJyYW5jaDMyKEFib3ZlT3JFcXVhbCwgcmVnVDEsIEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6
OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogCiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1QwLCBK
U0FycmF5OjpzdG9yYWdlT2Zmc2V0KCkpLCByZWdUMik7CkBAIC02MTksNyArNjE5LDcgQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MpCiAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0gJm1fY29k
ZUJsb2NrLT5nZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKTsKIAogICAgIC8vIENoZWNrIGVheCBp
cyBhbiBhcnJheQotICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFB0cihOb3RFcXVhbCwg
QWRkcmVzcyhyZWdUMCksIFRydXN0ZWRJbW1QdHIobV9nbG9iYWxEYXRhLT5qc0FycmF5VlB0cikp
OworICAgIEp1bXAgZmFpbHVyZUNhc2VzMSA9IGJyYW5jaFB0cihOb3RFcXVhbCwgQWRkcmVzcyhy
ZWdUMCwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIFRydXN0ZWRJbW1QdHIoJkpTQXJyYXk6
OnNfaW5mbykpOwogCiAgICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldCB0aGUgbGVuZ3RoIGZy
b20gdGhlIHN0b3JhZ2UKICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDAsIEpTQXJyYXk6OnN0b3Jh
Z2VPZmZzZXQoKSksIHJlZ1QzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAK
aW5kZXggNTRlOWI2Yi4uYTUyM2YwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5jcHAKQEAgLTg3NSw3ICs4NzUsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRy
eUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjbwogICAgIAog
ICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKTsK
IAotICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5h
bWUgPT0gY2FsbEZyYW1lLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisgICAgaWYgKGlzSlNB
cnJheShiYXNlVmFsdWUpICYmIHByb3BlcnR5TmFtZSA9PSBjYWxsRnJhbWUtPnByb3BlcnR5TmFt
ZXMoKS5sZW5ndGgpIHsKICAgICAgICAgSklUOjpjb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aChj
YWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsRGF0YSwgY29kZUJsb2NrLCByZXR1cm5BZGRy
ZXNzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI2MDMsNyArMjYwMyw3IEBAIERFRklO
RV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV92YWwpCiAKICAgICBpZiAoTElLRUxZKHN1
YnNjcmlwdC5pc1VJbnQzMigpKSkgewogICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFz
VUludDMyKCk7Ci0gICAgICAgIGlmIChpc0pTQXJyYXkoZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkg
eworICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKICAgICAgICAgICAgIEpTQXJy
YXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CiAgICAgICAgICAgICBpZiAoanNBcnJh
eS0+Y2FuU2V0SW5kZXgoaSkpCiAgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoKmds
b2JhbERhdGEsIGksIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBiNzg0NDEzLi5kOGQxNGYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xNzAsNyAr
MTcwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1RvU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhv
c3RUaGlzVmFsdWUoKTsKIAotICAgIGJvb2wgaXNSZWFsQXJyYXkgPSBpc0pTQXJyYXkoJmV4ZWMt
Pmdsb2JhbERhdGEoKSwgdGhpc1ZhbHVlKTsKKyAgICBib29sIGlzUmVhbEFycmF5ID0gaXNKU0Fy
cmF5KHRoaXNWYWx1ZSk7CiAgICAgaWYgKCFpc1JlYWxBcnJheSAmJiAhdGhpc1ZhbHVlLmluaGVy
aXRzKCZKU0FycmF5OjpzX2luZm8pKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKICAgICBKU0FycmF5KiB0aGlzT2JqID0gYXNBcnJheSh0aGlzVmFsdWUpOwpAQCAtMzAw
LDcgKzMwMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNK
b2luKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgc2VwYXJhdG9yID0gZXhlYy0+YXJndW1lbnQo
MCkudG9TdHJpbmcoZXhlYyk7CiAKICAgICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAoaXNKU0Fy
cmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmopKSB7CisgICAgaWYgKGlzSlNBcnJheSh0
aGlzT2JqKSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc09iaik7CiAK
ICAgICAgICAgaWYgKGxlbmd0aCkgewpAQCAtMzg4LDcgKzM4OCw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQb3AoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwogCi0gICAgaWYgKGlz
SlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzVmFsdWUpKQorICAgIGlmIChpc0pTQXJy
YXkodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc0FycmF5KHRo
aXNWYWx1ZSktPnBvcCgpKTsKIAogICAgIEpTT2JqZWN0KiB0aGlzT2JqID0gdGhpc1ZhbHVlLnRv
T2JqZWN0KGV4ZWMpOwpAQCAtNDEyLDcgKzQxMiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNQdXNoKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKIAotICAgIGlmIChpc0pTQXJyYXko
JmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc1ZhbHVlKSAmJiBleGVjLT5hcmd1bWVudENvdW50KCkg
PT0gMSkgeworICAgIGlmIChpc0pTQXJyYXkodGhpc1ZhbHVlKSAmJiBleGVjLT5hcmd1bWVudENv
dW50KCkgPT0gMSkgewogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc1ZhbHVl
KTsKICAgICAgICAgYXJyYXktPnB1c2goZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOwogICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGFycmF5LT5sZW5ndGgoKSkpOwpAQCAt
NDgxLDcgKzQ4MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1
bmNTaGlmdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJlc3VsdCA9IGpzVW5kZWZpbmVkKCk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgcmVzdWx0ID0gdGhpc09iai0+Z2V0KGV4ZWMsIDApOwot
ICAgICAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmopKQorICAg
ICAgICBpZiAoaXNKU0FycmF5KHRoaXNPYmopKQogICAgICAgICAgICAgKChKU0FycmF5ICopdGhp
c09iaiktPnNoaWZ0Q291bnQoZXhlYywgMSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBrID0gMTsgayA8IGxlbmd0aDsgaysrKSB7CkBAIC02MjcsNyArNjI3LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgdW5zaWduZWQgYWRkaXRpb25hbEFyZ3MgPSBzdGQ6Om1heDxpbnQ+
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAtIDIsIDApOwogICAgIGlmIChhZGRpdGlvbmFsQXJncyAh
PSBkZWxldGVDb3VudCkgewogICAgICAgICBpZiAoYWRkaXRpb25hbEFyZ3MgPCBkZWxldGVDb3Vu
dCkgewotICAgICAgICAgICAgaWYgKCghYmVnaW4pICYmIChpc0pTQXJyYXkoJmV4ZWMtPmdsb2Jh
bERhdGEoKSwgdGhpc09iaikpKQorICAgICAgICAgICAgaWYgKCghYmVnaW4pICYmIChpc0pTQXJy
YXkodGhpc09iaikpKQogICAgICAgICAgICAgICAgICgoSlNBcnJheSAqKXRoaXNPYmopLT5zaGlm
dENvdW50KGV4ZWMsIGRlbGV0ZUNvdW50IC0gYWRkaXRpb25hbEFyZ3MpOwogICAgICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBrID0gYmVnaW47IGsgPCBsZW5n
dGggLSBkZWxldGVDb3VudDsgKytrKSB7CkBAIC02NDMsNyArNjQzLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgICAgICAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5
QnlJbmRleCh0aGlzT2JqLCBleGVjLCBrIC0gMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBpZiAoKCFiZWdpbikgJiYgKGlzSlNBcnJheSgmZXhlYy0+Z2xv
YmFsRGF0YSgpLCB0aGlzT2JqKSkpCisgICAgICAgICAgICBpZiAoKCFiZWdpbikgJiYgKGlzSlNB
cnJheSh0aGlzT2JqKSkpCiAgICAgICAgICAgICAgICAgKChKU0FycmF5ICopdGhpc09iaiktPnVu
c2hpZnRDb3VudChleGVjLCBhZGRpdGlvbmFsQXJncyAtIGRlbGV0ZUNvdW50KTsKICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgayA9IGxlbmd0aCAtIGRl
bGV0ZUNvdW50OyBrID4gYmVnaW47IC0taykgewpAQCAtNjc2LDcgKzY3Niw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNVblNoaWZ0KEV4ZWNTdGF0ZSogZXhl
YykKIAogICAgIHVuc2lnbmVkIG5yQXJncyA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKICAgICBp
ZiAoKG5yQXJncykgJiYgKGxlbmd0aCkpIHsKLSAgICAgICAgaWYgKGlzSlNBcnJheSgmZXhlYy0+
Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkKKyAgICAgICAgaWYgKGlzSlNBcnJheSh0aGlzT2JqKSkK
ICAgICAgICAgICAgICgoSlNBcnJheSAqKXRoaXNPYmopLT51bnNoaWZ0Q291bnQoZXhlYywgbnJB
cmdzKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGsgPSBsZW5n
dGg7IGsgPiAwOyAtLWspIHsKQEAgLTcxNSw3ICs3MTUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRmlsdGVyKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIHVu
c2lnbmVkIGZpbHRlckluZGV4ID0gMDsKICAgICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAoY2Fs
bFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhp
c09iaikpIHsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkodGhp
c09iaikpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZiA9IGFzRnVuY3Rpb24oZnVuY3Rpb24pOwog
ICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc09iaik7CiAgICAgICAgIENhY2hl
ZENhbGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKQEAgLTc3Myw3ICs3NzMsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jTWFwKEV4ZWNTdGF0ZSogZXhlYykK
IAogICAgIEpTQXJyYXkqIHJlc3VsdEFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCBs
ZW5ndGgpOwogICAgIHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlw
ZUpTICYmIGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkgeworICAgIGlm
IChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlzT2JqKSkgewogICAgICAg
ICBKU0Z1bmN0aW9uKiBmID0gYXNGdW5jdGlvbihmdW5jdGlvbik7CiAgICAgICAgIEpTQXJyYXkq
IGFycmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKICAgICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxs
KGV4ZWMsIGYsIDMpOwpAQCAtODM2LDcgKzgzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlQcm90b0Z1bmNFdmVyeShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc0Jvb2xlYW4odHJ1ZSk7CiAKICAgICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwg
dGhpc09iaikpIHsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXko
dGhpc09iaikpIHsKICAgICAgICAgSlNGdW5jdGlvbiogZiA9IGFzRnVuY3Rpb24oZnVuY3Rpb24p
OwogICAgICAgICBKU0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc09iaik7CiAgICAgICAgIENh
Y2hlZENhbGwgY2FjaGVkQ2FsbChleGVjLCBmLCAzKTsKQEAgLTg5Miw3ICs4OTIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jRm9yRWFjaChFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgSlNWYWx1ZSBhcHBseVRoaXMgPSBleGVjLT5hcmd1bWVudCgxKTsKIAogICAg
IHVuc2lnbmVkIGsgPSAwOwotICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUpTICYmIGlzSlNB
cnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgpLCB0aGlzT2JqKSkgeworICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZUpTICYmIGlzSlNBcnJheSh0aGlzT2JqKSkgewogICAgICAgICBKU0Z1bmN0aW9u
KiBmID0gYXNGdW5jdGlvbihmdW5jdGlvbik7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNB
cnJheSh0aGlzT2JqKTsKICAgICAgICAgQ2FjaGVkQ2FsbCBjYWNoZWRDYWxsKGV4ZWMsIGYsIDMp
OwpAQCAtOTQ0LDcgKzk0NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQ
cm90b0Z1bmNTb21lKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzQm9v
bGVhbihmYWxzZSk7CiAKICAgICB1bnNpZ25lZCBrID0gMDsKLSAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkoJmV4ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpIHsK
KyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVKUyAmJiBpc0pTQXJyYXkodGhpc09iaikpIHsK
ICAgICAgICAgSlNGdW5jdGlvbiogZiA9IGFzRnVuY3Rpb24oZnVuY3Rpb24pOwogICAgICAgICBK
U0FycmF5KiBhcnJheSA9IGFzQXJyYXkodGhpc09iaik7CiAgICAgICAgIENhY2hlZENhbGwgY2Fj
aGVkQ2FsbChleGVjLCBmLCAzKTsKQEAgLTEwMDIsNyArMTAwMiw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZWR1Y2UoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKIAogICAgIEpTQXJyYXkqIGFycmF5
ID0gMDsKLSAgICBpZiAoaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIHRoaXNPYmopKQor
ICAgIGlmIChpc0pTQXJyYXkodGhpc09iaikpCiAgICAgICAgIGFycmF5ID0gYXNBcnJheSh0aGlz
T2JqKTsKIAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikKQEAgLTEwNzksNyAr
MTA3OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNSZWR1
Y2VSaWdodChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSAwOwotICAgIGlmIChpc0pTQXJyYXkoJmV4
ZWMtPmdsb2JhbERhdGEoKSwgdGhpc09iaikpCisgICAgaWYgKGlzSlNBcnJheSh0aGlzT2JqKSkK
ICAgICAgICAgYXJyYXkgPSBhc0FycmF5KHRoaXNPYmopOwogICAgIAogICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPj0gMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAppbmRleCAxOTg5ODI3Li4zNzcxZmYyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3Bw
CkBAIC0xMzYsNyArMTM2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blByb3RvRnVuY0FwcGx5KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGlmIChhc0FyZ3Vt
ZW50cyhhcnJheSktPmxlbmd0aChleGVjKSA+IEFyZ3VtZW50czo6TWF4QXJndW1lbnRzKQogICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dTdGFja092ZXJmbG93RXJy
b3IoZXhlYykpOwogICAgICAgICAgICAgYXNBcmd1bWVudHMoYXJyYXkpLT5maWxsQXJnTGlzdChl
eGVjLCBhcHBseUFyZ3MpOwotICAgICAgICB9IGVsc2UgaWYgKGlzSlNBcnJheSgmZXhlYy0+Z2xv
YmFsRGF0YSgpLCBhcnJheSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChpc0pTQXJyYXkoYXJyYXkp
KSB7CiAgICAgICAgICAgICBpZiAoYXNBcnJheShhcnJheSktPmxlbmd0aCgpID4gQXJndW1lbnRz
OjpNYXhBcmd1bWVudHMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd1N0YWNrT3ZlcmZsb3dFcnJvcihleGVjKSk7CiAgICAgICAgICAgICBhc0FycmF5KGFycmF5
KS0+ZmlsbEFyZ0xpc3QoZXhlYywgYXBwbHlBcmdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggZjc1NmM3Yi4uMDQ0NjU2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTI3Nyw3ICsyNzcsNyBAQCB2b2lkIEpT
QXJyYXk6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSlNW
YWx1ZSogdmFsdWVzLCBzaQogCiBKU0FycmF5Ojp+SlNBcnJheSgpCiB7Ci0gICAgQVNTRVJUKHZw
dHIoKSA9PSBKU0dsb2JhbERhdGE6OmpzQXJyYXlWUHRyKTsKKyAgICBBU1NFUlQodW52YWxpZGF0
ZWRDbGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKCZKU0FycmF5OjpzX2luZm8pKTsKICAgICBjaGVj
a0NvbnNpc3RlbmN5KERlc3RydWN0b3JDb25zaXN0ZW5jeUNoZWNrKTsKIAogICAgIGRlbGV0ZSBt
X3N0b3JhZ2UtPm1fc3BhcnNlVmFsdWVNYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgKaW5kZXggZTk1OGQ1NS4uNjg4M2U0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaApAQCAtMjE2LDggKzIxNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICByZXR1cm4gYXNBcnJheSh2YWx1ZS5hc0NlbGwoKSk7CiAgICAgfQogCi0gICAgaW5saW5l
IGJvb2wgaXNKU0FycmF5KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNDZWxsKiBjZWxsKSB7
IHJldHVybiBjZWxsLT52cHRyKCkgPT0gZ2xvYmFsRGF0YS0+anNBcnJheVZQdHI7IH0KLSAgICBp
bmxpbmUgYm9vbCBpc0pTQXJyYXkoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHYp
IHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KGdsb2JhbERhdGEsIHYuYXNDZWxsKCkp
OyB9CisgICAgaW5saW5lIGJvb2wgaXNKU0FycmF5KEpTQ2VsbCogY2VsbCkgeyByZXR1cm4gY2Vs
bC0+Y2xhc3NJbmZvKCkgPT0gJkpTQXJyYXk6OnNfaW5mbzsgfQorICAgIGlubGluZSBib29sIGlz
SlNBcnJheShKU1ZhbHVlIHYpIHsgcmV0dXJuIHYuaXNDZWxsKCkgJiYgaXNKU0FycmF5KHYuYXND
ZWxsKCkpOyB9CiAKICAgICAvLyBSdWxlIGZyb20gRUNNQSAxNS4yIGFib3V0IHdoYXQgYW4gYXJy
YXkgaW5kZXggaXMuCiAgICAgLy8gTXVzdCBleGFjdGx5IG1hdGNoIHN0cmluZyBmb3JtIG9mIGFu
IHVuc2lnbmVkIGludGVnZXIsIGFuZCBiZSBsZXNzIHRoYW4gMl4zMiAtIDEuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAppbmRleCBjZjBi
YTgzLi41NGYzNDQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JvdW5kRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Qm91bmRGdW5jdGlvbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNCb3Vu
ZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4o
ZXhlYy0+Y2FsbGVlKCkpOwogCi0gICAgQVNTRVJUKGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0
YSgpLCBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSkpOyAvLyBDdXJyZW50bHkgdGhpcyBpcyB0
cnVlIQorICAgIEFTU0VSVChpc0pTQXJyYXkoYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCkpKTsg
Ly8gQ3VycmVudGx5IHRoaXMgaXMgdHJ1ZSEKICAgICBKU0FycmF5KiBib3VuZEFyZ3MgPSBhc0Fy
cmF5KGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyIGFyZ3M7CkBAIC01OCw3ICs1OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Ym91bmRGdW5jdGlvbkNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNCb3VuZEZ1
bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZXhl
Yy0+Y2FsbGVlKCkpOwogCi0gICAgQVNTRVJUKGlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0YSgp
LCBib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSkpOyAvLyBDdXJyZW50bHkgdGhpcyBpcyB0cnVl
IQorICAgIEFTU0VSVChpc0pTQXJyYXkoYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCkpKTsgLy8g
Q3VycmVudGx5IHRoaXMgaXMgdHJ1ZSEKICAgICBKU0FycmF5KiBib3VuZEFyZ3MgPSBhc0FycmF5
KGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCmlu
ZGV4IGVhNGMxYWQuLjI2NDNhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT05PYmplY3QuY3BwCkBAIC00OTUsNyArNDk1LDcgQEAgYm9vbCBTdHJpbmdpZmllcjo6SG9s
ZGVyOjphcHBlbmROZXh0UHJvcGVydHkoU3RyaW5naWZpZXImIHN0cmluZ2lmaWVyLCBVU3RyaW5n
QnUKICAgICAvLyBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX2lu
ZGV4KSB7CiAgICAgICAgIGlmIChtX2lzQXJyYXkpIHsKLSAgICAgICAgICAgIG1faXNKU0FycmF5
ID0gaXNKU0FycmF5KCZleGVjLT5nbG9iYWxEYXRhKCksIG1fb2JqZWN0LmdldCgpKTsKKyAgICAg
ICAgICAgIG1faXNKU0FycmF5ID0gaXNKU0FycmF5KG1fb2JqZWN0LmdldCgpKTsKICAgICAgICAg
ICAgIG1fc2l6ZSA9IG1fb2JqZWN0LT5nZXQoZXhlYywgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCkudG9VSW50MzIoZXhlYyk7CiAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZCgnWycpOwogICAgICAgICB9IGVsc2UgewpAQCAtNjY5LDcgKzY2OSw3IEBAIE5FVkVSX0lO
TElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAgICAgICAg
ICBhcnJheVN0YXJ0U3RhdGU6CiAgICAgICAgICAgICBjYXNlIEFycmF5U3RhcnRTdGF0ZTogewog
ICAgICAgICAgICAgICAgIEFTU0VSVChpblZhbHVlLmlzT2JqZWN0KCkpOwotICAgICAgICAgICAg
ICAgIEFTU0VSVChpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBhc09iamVjdChpblZh
bHVlKSkgfHwgYXNPYmplY3QoaW5WYWx1ZSktPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKTsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoaXNKU0FycmF5KGFzT2JqZWN0KGluVmFsdWUpKSB8fCBh
c09iamVjdChpblZhbHVlKS0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbykpOwogICAgICAgICAg
ICAgICAgIGlmIChvYmplY3RTdGFjay5zaXplKCkgKyBhcnJheVN0YWNrLnNpemUoKSA+IG1heGlt
dW1GaWx0ZXJSZWN1cnNpb24pCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9y
KG1fZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKG1fZXhlYykpOwogCkBAIC02OTQsNyAr
Njk0LDcgQEAgTkVWRVJfSU5MSU5FIEpTVmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0
ZXJlZCkKICAgICAgICAgICAgICAgICAgICAgaW5kZXhTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICBpZiAoaXNKU0FycmF5KCZtX2V4ZWMtPmdsb2JhbERhdGEoKSwgYXJyYXkpICYmIGFycmF5LT5j
YW5HZXRJbmRleChpbmRleCkpCisgICAgICAgICAgICAgICAgaWYgKGlzSlNBcnJheShhcnJheSkg
JiYgYXJyYXktPmNhbkdldEluZGV4KGluZGV4KSkKICAgICAgICAgICAgICAgICAgICAgaW5WYWx1
ZSA9IGFycmF5LT5nZXRJbmRleChpbmRleCk7CiAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90OwpAQCAtNzE3LDcgKzcxNyw3IEBAIE5F
VkVSX0lOTElORSBKU1ZhbHVlIFdhbGtlcjo6d2FsayhKU1ZhbHVlIHVuZmlsdGVyZWQpCiAgICAg
ICAgICAgICAgICAgaWYgKGZpbHRlcmVkVmFsdWUuaXNVbmRlZmluZWQoKSkKICAgICAgICAgICAg
ICAgICAgICAgYXJyYXktPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChhcnJh
eSwgbV9leGVjLCBpbmRleFN0YWNrLmxhc3QoKSk7CiAgICAgICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBh
cnJheSkgJiYgYXJyYXktPmNhblNldEluZGV4KGluZGV4U3RhY2subGFzdCgpKSkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGlzSlNBcnJheShhcnJheSkgJiYgYXJyYXktPmNhblNldEluZGV4KGlu
ZGV4U3RhY2subGFzdCgpKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LT5zZXRJbmRl
eChtX2V4ZWMtPmdsb2JhbERhdGEoKSwgaW5kZXhTdGFjay5sYXN0KCksIGZpbHRlcmVkVmFsdWUp
OwogICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICBhcnJh
eS0+bWV0aG9kVGFibGUoKS0+cHV0QnlJbmRleChhcnJheSwgbV9leGVjLCBpbmRleFN0YWNrLmxh
c3QoKSwgZmlsdGVyZWRWYWx1ZSk7CkBAIC03MzAsNyArNzMwLDcgQEAgTkVWRVJfSU5MSU5FIEpT
VmFsdWUgV2Fsa2VyOjp3YWxrKEpTVmFsdWUgdW5maWx0ZXJlZCkKICAgICAgICAgICAgIG9iamVj
dFN0YXJ0U3RhdGU6CiAgICAgICAgICAgICBjYXNlIE9iamVjdFN0YXJ0U3RhdGU6IHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoaW5WYWx1ZS5pc09iamVjdCgpKTsKLSAgICAgICAgICAgICAgICBB
U1NFUlQoIWlzSlNBcnJheSgmbV9leGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KGluVmFsdWUp
KSAmJiAhYXNPYmplY3QoaW5WYWx1ZSktPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoIWlzSlNBcnJheShhc09iamVjdChpblZhbHVlKSkgJiYgIWFz
T2JqZWN0KGluVmFsdWUpLT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZvKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKG9iamVjdFN0YWNrLnNpemUoKSArIGFycmF5U3RhY2suc2l6ZSgpID4gbWF4aW11
bUZpbHRlclJlY3Vyc2lvbikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3Io
bV9leGVjLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IobV9leGVjKSk7CiAKQEAgLTc5Nyw3ICs3
OTcsNyBAQCBORVZFUl9JTkxJTkUgSlNWYWx1ZSBXYWxrZXI6OndhbGsoSlNWYWx1ZSB1bmZpbHRl
cmVkKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGluVmFsdWUpOwotICAgICAg
ICAgICAgICAgIGlmIChpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBvYmplY3QpIHx8
IG9iamVjdC0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbykpCisgICAgICAgICAgICAgICAgaWYg
KGlzSlNBcnJheShvYmplY3QpIHx8IG9iamVjdC0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbykp
CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gYXJyYXlTdGFydFN0YXRlOwogICAgICAgICAgICAg
ICAgIGdvdG8gb2JqZWN0U3RhcnRTdGF0ZTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRD
dXN0b20uY3BwCmluZGV4IDE3OGIxMzAuLjEyNzUwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1
c3RvbS5jcHAKQEAgLTE1NCw3ICsxNTQsNyBAQCBKU1ZhbHVlIEpTQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEOjp3ZWJraXRMaW5lRGFzaChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAKIHZvaWQgSlND
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnNldFdlYmtpdExpbmVEYXNoKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICBpZiAoIWlzSlNBcnJheSgmZXhlYy0+Z2xvYmFsRGF0
YSgpLCB2YWx1ZSkpCisgICAgaWYgKCFpc0pTQXJyYXkodmFsdWUpKQogICAgICAgICByZXR1cm47
CiAKICAgICBEYXNoQXJyYXkgZGFzaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV2ViU29ja2V0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV2ViU29ja2V0Q3VzdG9tLmNwcAppbmRleCA0OWE4MjhjLi43NzdlNWI4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYlNvY2tldEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJTb2NrZXRDdXN0b20uY3BwCkBAIC02OSw3
ICs2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNXZWJTb2NrZXRDb25zdHJ1
Y3Rvcjo6Y29uc3RydWN0SlNXZWJTb2NrZXQoRXhlY1N0CiAgICAgICAgIHdlYlNvY2tldC0+Y29u
bmVjdCh1cmxTdHJpbmcsIGVjKTsKICAgICBlbHNlIHsKICAgICAgICAgSlNWYWx1ZSBwcm90b2Nv
bHNWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpOwotICAgICAgICBpZiAoaXNKU0FycmF5KCZleGVj
LT5nbG9iYWxEYXRhKCksIHByb3RvY29sc1ZhbHVlKSkgeworICAgICAgICBpZiAoaXNKU0FycmF5
KHByb3RvY29sc1ZhbHVlKSkgewogICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gcHJvdG9jb2xz
OwogICAgICAgICAgICAgSlNBcnJheSogcHJvdG9jb2xzQXJyYXkgPSBhc0FycmF5KHByb3RvY29s
c1ZhbHVlKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBwcm90b2NvbHNB
cnJheS0+bGVuZ3RoKCk7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
VmFsdWUuY3BwCmluZGV4IGNiODZiMjkuLmJmYTkzYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3JWYWx1ZT4ganNUb0luc3BlY3RvclZhbHVlKFNjcmlwdFN0YXRlKiBzY3Jp
cHRTdGF0ZSwgSgogICAgICAgICByZXR1cm4gSW5zcGVjdG9yU3RyaW5nOjpjcmVhdGUoU3RyaW5n
KHMuY2hhcmFjdGVycygpLCBzLmxlbmd0aCgpKSk7CiAgICAgfQogICAgIGlmICh2YWx1ZS5pc09i
amVjdCgpKSB7Ci0gICAgICAgIGlmIChpc0pTQXJyYXkoJnNjcmlwdFN0YXRlLT5nbG9iYWxEYXRh
KCksIHZhbHVlKSkgeworICAgICAgICBpZiAoaXNKU0FycmF5KHZhbHVlKSkgewogICAgICAgICAg
ICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBpbnNwZWN0b3JBcnJheSA9IEluc3BlY3RvckFycmF5
OjpjcmVhdGUoKTsKICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gYXNBcnJheSh2YWx1ZSk7
CiAgICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhcnJheS0+bGVuZ3RoKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApp
bmRleCBiNjc1Y2EzLi5hNTZhOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTMxMCw3ICszMTAsNyBAQCBwcml2
YXRlOgogICAgICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7Ci0gICAg
ICAgIHJldHVybiBpc0pTQXJyYXkoJm1fZXhlYy0+Z2xvYmFsRGF0YSgpLCBvYmplY3QpIHx8IG9i
amVjdC0+aW5oZXJpdHMoJkpTQXJyYXk6OnNfaW5mbyk7CisgICAgICAgIHJldHVybiBpc0pTQXJy
YXkob2JqZWN0KSB8fCBvYmplY3QtPmluaGVyaXRzKCZKU0FycmF5OjpzX2luZm8pOwogICAgIH0K
IAogICAgIGJvb2wgc3RhcnRPYmplY3RJbnRlcm5hbChKU09iamVjdCogb2JqZWN0KQpAQCAtMzU3
LDcgKzM1Nyw3IEBAIHByaXZhdGU6CiAgICAgSlNWYWx1ZSBnZXRTcGFyc2VJbmRleChKU0FycmF5
KiBhcnJheSwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBib29sJiBoYXNJbmRleCkKICAgICB7CiAg
ICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGFycmF5KTsKLSAgICAgICAgaWYgKGlzSlNBcnJheSgm
bV9leGVjLT5nbG9iYWxEYXRhKCksIGFycmF5KSkgeworICAgICAgICBpZiAoaXNKU0FycmF5KGFy
cmF5KSkgewogICAgICAgICAgICAgaWYgKEpTQXJyYXk6OmdldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXgoYXJyYXksIG1fZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KSkgewogICAgICAgICAgICAgICAg
IGhhc0luZGV4ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByZXR1cm4gc2xvdC5nZXRWYWx1ZSht
X2V4ZWMsIHByb3BlcnR5TmFtZSk7Ci0tIAoxLjcuNC40Cgo=
</data>
<flag name="review"
          id="118716"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>