<?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>74338</bug_id>
          
          <creation_ts>2011-12-12 14:30:39 -0800</creation_ts>
          <short_desc>Remove uses of JSFinalObject vptr</short_desc>
          <delta_ts>2011-12-18 12:22:35 -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>519475</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-12 14:30:39 -0800</bug_when>
    <thetext>Same as bug 74333, but with JSFinalObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519512</commentid>
    <comment_count>1</comment_count>
      <attachid>118861</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2011-12-12 14:51:11 -0800</bug_when>
    <thetext>Created attachment 118861
Remove uses of JSFinalObject vptr

No changelog (see bug 74331).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519538</commentid>
    <comment_count>2</comment_count>
      <attachid>118861</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-12 15:02:31 -0800</bug_when>
    <thetext>Comment on attachment 118861
Remove uses of JSFinalObject vptr

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

r=me

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

I&apos;d create an isJSFinalObject() helper and use that here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118861</attachid>
            <date>2011-12-12 14:51:11 -0800</date>
            <delta_ts>2011-12-12 15:02:31 -0800</delta_ts>
            <desc>Remove uses of JSFinalObject vptr</desc>
            <filename>0005-Removed-all-optimizations-that-required-JSFinalObjec.patch</filename>
            <type>text/plain</type>
            <size>30349</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">RnJvbSA4MDViMDJmYTM2MmUzNjI3ZWEwN2E3M2I5ODFjMjhhY2IzMzQwMDk2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJrIEhhaG5lbmJlcmcgPG1oYWhuZW5iZXJnQGFwcGxlLmNv
bT4KRGF0ZTogTW9uLCA1IERlYyAyMDExIDE4OjM5OjI2IC0wODAwClN1YmplY3Q6IFtQQVRDSCAw
NS8xOF0gUmVtb3ZlZCBhbGwgb3B0aW1pemF0aW9ucyB0aGF0IHJlcXVpcmVkCiBKU0ZpbmFsT2Jq
ZWN0J3MgdnB0ci4gIEl0IGlzIHN0aWxsIHBhcnRpYWxseSByZXF1aXJlZAogZHVlIHRvIHRoZSBm
YWN0IHRoYXQgaXQgc3RpbGwgdXNlZCBmb3IgcGxhbnRpbmcgaW4KIHRoZSBKSVQsIHNvIGl0IGhh
cyB0byBzdGljayBhcm91bmQgdW50aWwgdGhlcmUgYXJlIG5vCiBtb3JlIHZwdHJzIGV2ZXIuICBU
aGlzIGFsc28gYWxsb3dlZCB0aGUgY29tcGxldGUKIHJlbW92YWwgb2YgSlNBcnJheSdzIHZwdHIg
b3B0aW1pemF0aW9ucy4KCi0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmV4cCAgICAgICAgICAgfCAgICAxIC0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwICAgIHwgICAyMiArKysrKysrKystLS0tLS0tLS0KIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCAgICAgIHwgICAgOCArKystLS0KIC4u
Li9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgIHwgICAxNCAr
KysrKy0tLS0tCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwICB8ICAgMjQgKysrKysrKysrKy0tLS0tLS0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwICAgICAgICAgICAgICAgIHwgICAgMiArLQogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmNwcCAgICAgICAgICAgfCAgIDEyICsrKystLS0tLQogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmggICAgICAgICAgICAgfCAgICA2ICstLS0K
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCAgICAgICAgIHwgICAg
OCArKy0tLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmggICAgICAg
ICAgIHwgICAgMiArLQogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaCAg
ICAgICAgICAgfCAgICA2ICsrLS0KIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAgICAgIHwgICAxMCArLS0tLS0tLQogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmggICAgICAgfCAgICAxIC0KIDEzIGZpbGVzIGNoYW5nZWQsIDUw
IGluc2VydGlvbnMoKyksIDY2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZXhwCmluZGV4IDhjNmQ0NjUuLjdlMTY2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApAQCAtMTM0LDcgKzEzNCw2IEBAIF9fWk4zSlNDMTJE
YXRlSW5zdGFuY2UxNGZpbmlzaENyZWF0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVkCiBfX1pOM0pT
QzEyRGF0ZUluc3RhbmNlNnNfaW5mb0UKIF9fWk4zSlNDMTJEYXRlSW5zdGFuY2VDMUVQTlNfOUV4
ZWNTdGF0ZUVQTlNfOVN0cnVjdHVyZUUKIF9fWk4zSlNDMTJKU0dsb2JhbERhdGExMENsaWVudERh
dGFEMkV2Ci1fX1pOM0pTQzEySlNHbG9iYWxEYXRhMTFqc0FycmF5VlB0ckUKIF9fWk4zSlNDMTJK
U0dsb2JhbERhdGExMmNyZWF0ZUxlYWtlZEVOU18xNVRocmVhZFN0YWNrVHlwZUVOU184SGVhcFNp
emVFCiBfX1pOM0pTQzEySlNHbG9iYWxEYXRhMTJzdG9wU2FtcGxpbmdFdgogX19aTjNKU0MxMkpT
R2xvYmFsRGF0YTEzc3RhcnRTYW1wbGluZ0V2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGNkMmYwODMuLjhhMTVjMjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC04MDIs
NyArODAyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlRG91YmxlQnJh
bmNoKE5vZGUmIG5vZGUsIE5vZGVJbmRleCBicmFuY2hOb2QKICAgICAgICAgYWRkQnJhbmNoKG1f
aml0Lmp1bXAoKSwgbm90VGFrZW4pOwogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UGVlcEhvbGVPYmplY3RFcXVhbGl0eShOb2RlJiBub2RlLCBOb2RlSW5kZXggYnJhbmNoTm9kZUlu
ZGV4LCB2b2lkKiB2cHRyLCBQcmVkaWN0aW9uQ2hlY2tlciBwcmVkaWN0aW9uQ2hlY2spCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShOb2RlJiBub2Rl
LCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywg
UHJlZGljdGlvbkNoZWNrZXIgcHJlZGljdGlvbkNoZWNrKQogewogICAgIE5vZGUmIGJyYW5jaE5v
ZGUgPSBhdChicmFuY2hOb2RlSW5kZXgpOwogICAgIEJsb2NrSW5kZXggdGFrZW4gPSBicmFuY2hO
b2RlLnRha2VuQmxvY2tJbmRleCgpOwpAQCAtODI0LDkgKzgyNCw5IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIE5vZGVJbmRl
eCBicmFuY2hOCiAgICAgR1BSUmVnIG9wMkdQUiA9IG9wMi5ncHIoKTsKICAgICAKICAgICBpZiAo
IXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkK
LSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFH
UFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwg
SlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRy
KGNsYXNzSW5mbykpKTsKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDIoKSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVl
U291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLmNoaWxkMigpLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJH
UFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUuY2hp
bGQyKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykpKTsKICAgICAKICAgICBhZGRCcmFu
Y2gobV9qaXQuYnJhbmNoUHRyKGNvbmRpdGlvbiwgb3AxR1BSLCBvcDJHUFIpLCB0YWtlbik7CiAg
ICAgaWYgKG5vdFRha2VuICE9IChtX2Jsb2NrICsgMSkpCkBAIC04ODYsMTEgKzg4NiwxMSBAQCBi
b29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSYgbm9kZSwgTWFj
cm9Bc3NlbWJsZXI6OlJlbGF0aW9uYQogICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQxKCkpOwog
ICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOwogICAgICAgICB9IGVsc2UgaWYgKG5vZGUu
b3AgPT0gQ29tcGFyZUVxICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KGF0KG5v
ZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQ
ZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGVJbmRleCwgbV9qaXQuZ2xvYmFs
RGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0ciwgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24pOworICAg
ICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9kZSwgYnJhbmNoTm9kZUlu
ZGV4LCAmSlNGaW5hbE9iamVjdDo6c19pbmZvLCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbik7CiAg
ICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICB1c2Uobm9kZS5jaGls
ZDIoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAobm9kZS5vcCA9PSBDb21wYXJlRXEgJiYgTm9kZTo6
c2hvdWxkU3BlY3VsYXRlQXJyYXkoYXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkp
KSkgewotICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9kZSwgYnJh
bmNoTm9kZUluZGV4LCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCBpc0FycmF5UHJl
ZGljdGlvbik7CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2Rl
LCBicmFuY2hOb2RlSW5kZXgsICZKU0FycmF5OjpzX2luZm8sIGlzQXJyYXlQcmVkaWN0aW9uKTsK
ICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIHVzZShub2RlLmNo
aWxkMigpKTsKICAgICAgICAgfSBlbHNlCkBAIC0yMTUyLDkgKzIxNTIsOSBAQCBib29sIFNwZWN1
bGF0aXZlSklUOjpjb21wYXJlKE5vZGUmIG5vZGUsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbgogICAgIGVsc2UgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZU51bWJlcihh
dChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpKQogICAgICAgICBjb21waWxlRG91
YmxlQ29tcGFyZShub2RlLCBkb3VibGVDb25kaXRpb24pOwogICAgIGVsc2UgaWYgKG5vZGUub3Ag
PT0gQ29tcGFyZUVxICYmIE5vZGU6OnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KGF0KG5vZGUu
Y2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkpCi0gICAgICAgIGNvbXBpbGVPYmplY3RFcXVh
bGl0eShub2RlLCBtX2ppdC5nbG9iYWxEYXRhKCktPmpzRmluYWxPYmplY3RWUHRyLCBpc0ZpbmFs
T2JqZWN0UHJlZGljdGlvbik7CisgICAgICAgIGNvbXBpbGVPYmplY3RFcXVhbGl0eShub2RlLCAm
SlNGaW5hbE9iamVjdDo6c19pbmZvLCBpc0ZpbmFsT2JqZWN0UHJlZGljdGlvbik7CiAgICAgZWxz
ZSBpZiAobm9kZS5vcCA9PSBDb21wYXJlRXEgJiYgTm9kZTo6c2hvdWxkU3BlY3VsYXRlQXJyYXko
YXQobm9kZS5jaGlsZDEoKSksIGF0KG5vZGUuY2hpbGQyKCkpKSkKLSAgICAgICAgY29tcGlsZU9i
amVjdEVxdWFsaXR5KG5vZGUsIG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIsIGlzQXJy
YXlQcmVkaWN0aW9uKTsKKyAgICAgICAgY29tcGlsZU9iamVjdEVxdWFsaXR5KG5vZGUsICZKU0Fy
cmF5OjpzX2luZm8sIGlzQXJyYXlQcmVkaWN0aW9uKTsKICAgICBlbHNlCiAgICAgICAgIG5vblNw
ZWN1bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlKG5vZGUsIGNvbmRpdGlvbiwgb3BlcmF0aW9uKTsK
ICAgICAKQEAgLTIyODYsMjYgKzIyODYsMjYgQEAgYm9vbCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVN0cmljdEVxKE5vZGUmIG5vZGUpCiAgICAgaWYgKE5vZGU6OnNob3VsZFNwZWN1bGF0ZUZpbmFs
T2JqZWN0KGF0KG5vZGUuY2hpbGQxKCkpLCBhdChub2RlLmNoaWxkMigpKSkpIHsKICAgICAgICAg
Tm9kZUluZGV4IGJyYW5jaE5vZGVJbmRleCA9IGRldGVjdFBlZXBIb2xlQnJhbmNoKCk7CiAgICAg
ICAgIGlmIChicmFuY2hOb2RlSW5kZXggIT0gTm9Ob2RlKSB7Ci0gICAgICAgICAgICBjb21waWxl
UGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsIG1faml0Lmdsb2Jh
bERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIsIGlzRmluYWxPYmplY3RQcmVkaWN0aW9uKTsKKyAg
ICAgICAgICAgIGNvbXBpbGVQZWVwSG9sZU9iamVjdEVxdWFsaXR5KG5vZGUsIGJyYW5jaE5vZGVJ
bmRleCwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24pOwog
ICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgdXNlKG5vZGUuY2hp
bGQyKCkpOwogICAgICAgICAgICAgbV9jb21waWxlSW5kZXggPSBicmFuY2hOb2RlSW5kZXg7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICBjb21waWxlT2JqZWN0
RXF1YWxpdHkobm9kZSwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0ciwgaXNG
aW5hbE9iamVjdFByZWRpY3Rpb24pOworICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9k
ZSwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgaXNGaW5hbE9iamVjdFByZWRpY3Rpb24pOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIAogICAgIGlmIChOb2RlOjpzaG91bGRTcGVj
dWxhdGVBcnJheShhdChub2RlLmNoaWxkMSgpKSwgYXQobm9kZS5jaGlsZDIoKSkpKSB7CiAgICAg
ICAgIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXggPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwog
ICAgICAgICBpZiAoYnJhbmNoTm9kZUluZGV4ICE9IE5vTm9kZSkgewotICAgICAgICAgICAgY29t
cGlsZVBlZXBIb2xlT2JqZWN0RXF1YWxpdHkobm9kZSwgYnJhbmNoTm9kZUluZGV4LCBtX2ppdC5n
bG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyLCBpc0FycmF5UHJlZGljdGlvbik7CisgICAgICAgICAg
ICBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsICZK
U0FycmF5OjpzX2luZm8sIGlzQXJyYXlQcmVkaWN0aW9uKTsKICAgICAgICAgICAgIHVzZShub2Rl
LmNoaWxkMSgpKTsKICAgICAgICAgICAgIHVzZShub2RlLmNoaWxkMigpKTsKICAgICAgICAgICAg
IG1fY29tcGlsZUluZGV4ID0gYnJhbmNoTm9kZUluZGV4OwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIH0KLSAgICAgICAgY29tcGlsZU9iamVjdEVxdWFsaXR5KG5vZGUsIG1faml0
Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIsIGlzQXJyYXlQcmVkaWN0aW9uKTsKKyAgICAgICAg
Y29tcGlsZU9iamVjdEVxdWFsaXR5KG5vZGUsICZKU0FycmF5OjpzX2luZm8sIGlzQXJyYXlQcmVk
aWN0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBmMzIzODhlLi5mYjg2
MGQzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aApAQCAtMTk1MSwxMiArMTk1MSwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgY29tcGlsZVBlZXBI
b2xlQnJhbmNoKE5vZGUmLCBNYWNyb0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbiwgTWFj
cm9Bc3NlbWJsZXI6OkRvdWJsZUNvbmRpdGlvbiwgU19ERkdPcGVyYXRpb25fRUpKKTsKICAgICB2
b2lkIGNvbXBpbGVQZWVwSG9sZUludGVnZXJCcmFuY2goTm9kZSYsIE5vZGVJbmRleCBicmFuY2hO
b2RlSW5kZXgsIEpJVENvbXBpbGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9uKTsKICAgICB2b2lkIGNv
bXBpbGVQZWVwSG9sZURvdWJsZUJyYW5jaChOb2RlJiwgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRl
eCwgSklUQ29tcGlsZXI6OkRvdWJsZUNvbmRpdGlvbik7Ci0gICAgdm9pZCBjb21waWxlUGVlcEhv
bGVPYmplY3RFcXVhbGl0eShOb2RlJiwgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRleCwgdm9pZCog
dnB0ciwgUHJlZGljdGlvbkNoZWNrZXIpOwotICAgIHZvaWQgY29tcGlsZU9iamVjdEVxdWFsaXR5
KE5vZGUmLCB2b2lkKiB2cHRyLCBQcmVkaWN0aW9uQ2hlY2tlcik7CisgICAgdm9pZCBjb21waWxl
UGVlcEhvbGVPYmplY3RFcXVhbGl0eShOb2RlJiwgTm9kZUluZGV4IGJyYW5jaE5vZGVJbmRleCwg
Y29uc3QgQ2xhc3NJbmZvKiB2cHRyLCBQcmVkaWN0aW9uQ2hlY2tlcik7CisgICAgdm9pZCBjb21w
aWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYsIGNvbnN0IENsYXNzSW5mbyosIFByZWRpY3Rpb25DaGVj
a2VyKTsKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUFkZChOb2RlJik7Ci0gICAgdm9pZCBjb21waWxl
T2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QoTm9kZUluZGV4IHZhbHVlLCB2b2lkKiB2cHRyLCBib29s
IG5lZWRTcGVjdWxhdGlvbkNoZWNrKTsKKyAgICB2b2lkIGNvbXBpbGVPYmplY3RPck90aGVyTG9n
aWNhbE5vdChOb2RlSW5kZXggdmFsdWUsIGNvbnN0IENsYXNzSW5mbyosIGJvb2wgbmVlZFNwZWN1
bGF0aW9uQ2hlY2spOwogICAgIHZvaWQgY29tcGlsZUxvZ2ljYWxOb3QoTm9kZSYpOwotICAgIHZv
aWQgZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goTm9kZUluZGV4IHZhbHVlLCBCbG9ja0luZGV4IHRh
a2VuLCBCbG9ja0luZGV4IG5vdFRha2VuLCB2b2lkICp2cHRyLCBib29sIG5lZWRTcGVjdWxhdGlv
bkNoZWNrKTsKKyAgICB2b2lkIGVtaXRPYmplY3RPck90aGVyQnJhbmNoKE5vZGVJbmRleCB2YWx1
ZSwgQmxvY2tJbmRleCB0YWtlbiwgQmxvY2tJbmRleCBub3RUYWtlbiwgY29uc3QgQ2xhc3NJbmZv
KiB2cHRyLCBib29sIG5lZWRTcGVjdWxhdGlvbkNoZWNrKTsKICAgICB2b2lkIGVtaXRCcmFuY2go
Tm9kZSYpOwogICAgIAogICAgIHZvaWQgY29tcGlsZUludGVnZXJDb21wYXJlKE5vZGUmLCBNYWNy
b0Fzc2VtYmxlcjo6UmVsYXRpb25hbENvbmRpdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA2M2VkZjc0Li45
NjY5ZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAKQEAgLTE3MTAsNyArMTcxMCw3IEBAIEpJVENvbXBpbGVyOjpKdW1w
IFNwZWN1bGF0aXZlSklUOjpjb252ZXJ0VG9Eb3VibGUoSlNWYWx1ZU9wZXJhbmQmIG9wLCBGUFJS
ZWcgcmVzCiAgICAgcmV0dXJuIG5vdE51bWJlcjsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIHZvaWQqIHZwdHIsIFByZWRpY3Rpb25D
aGVja2VyIHByZWRpY3Rpb25DaGVjaykKK3ZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmpl
Y3RFcXVhbGl0eShOb2RlJiBub2RlLCB2b2lkKiBjbGFzc0luZm8sIFByZWRpY3Rpb25DaGVja2Vy
IHByZWRpY3Rpb25DaGVjaykKIHsKICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcDEodGhpcywg
bm9kZS5jaGlsZDEoKSk7CiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgb3AyKHRoaXMsIG5vZGUu
Y2hpbGQyKCkpOwpAQCAtMTcyMSw5ICsxNzIxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIHZvaWQqIHZwdHIsIFByZWRpY3Rpb25DaGUK
ICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CiAgICAg
CiAgICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkpCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwob3AxR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhvcDFHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CiAgICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQyKCkpLm1fdHlwZSkpCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS5jaGlsZDIoKSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Mob3AyR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodnB0cikpKTsKKyAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIp
LCBub2RlLmNoaWxkMigpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjbGFzc0luZm8pKSk7CiAgICAgCiAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFsc2VDYXNlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgb3AxR1BSLCBvcDJHUFIpOwogICAgIG1faml0Lm1vdmUoSW1t
MzIoMSksIHJlc3VsdFBheWxvYWRHUFIpOwpAQCAtMTc4Myw3ICsxNzgzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUmIG5vZGUpCiAgICAganNWYWx1ZVJlc3Vs
dChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsK
IH0KIAotdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90
KE5vZGVJbmRleCBub2RlSW5kZXgsIHZvaWQqIHZwdHIsIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hl
Y2spCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qo
Tm9kZUluZGV4IG5vZGVJbmRleCwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGJvb2wgbmVl
ZFNwZWN1bGF0aW9uQ2hlY2spCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9k
ZUluZGV4KTsKICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzKTsKQEAgLTE3OTMs
NyArMTc5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9n
aWNhbE5vdChOb2RlSW5kZXggbm9kZUluZGV4LCB2b2lkKiB2CiAgICAgCiAgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgdmFsdWVUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAgICAg
aWYgKG5lZWRTcGVjdWxhdGlvbkNoZWNrKQotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFs
dWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlSW5kZXgsIG1faml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHZhbHVlUGF5bG9hZEdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7
CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVl
UGF5bG9hZEdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6
OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2xhc3NJ
bmZvKSkpOwogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDApLCByZXN1bHRQYXlsb2FkR1BS
KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAgIApA
QCAtMTg3MSw3ICsxODcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxO
b3QoTm9kZSYgbm9kZSkKICAgICBib29sZWFuUmVzdWx0KHJlc3VsdFBheWxvYWRHUFIsIG1fY29t
cGlsZUluZGV4LCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogfQogCi12b2lkIFNwZWN1
bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaChOb2RlSW5kZXggbm9kZUluZGV4LCBC
bG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4IG5vdFRha2VuLCB2b2lkICp2cHRyLCBib29sIG5l
ZWRTcGVjdWxhdGlvbkNoZWNrKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3Ro
ZXJCcmFuY2goTm9kZUluZGV4IG5vZGVJbmRleCwgQmxvY2tJbmRleCB0YWtlbiwgQmxvY2tJbmRl
eCBub3RUYWtlbiwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGJvb2wgbmVlZFNwZWN1bGF0
aW9uQ2hlY2spCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZUluZGV4KTsK
ICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTE4ODEsNyArMTg4MSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKE5vZGVJbmRleCBub2Rl
SW5kZXgsIEJsb2NrSW5kZXggdGFrCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90
Q2VsbCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdmFsdWVUYWdH
UFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7CiAgICAgaWYgKG5lZWRTcGVjdWxh
dGlvbkNoZWNrKQotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKHZhbHVlVGFn
R1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQ
UiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7CisgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5v
ZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNl
dCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwogICAgIGFk
ZEJyYW5jaChtX2ppdC5qdW1wKCksIHRha2VuKTsKICAgICAKICAgICBub3RDZWxsLmxpbmsoJm1f
aml0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCmluZGV4IDM2NzQwYzEuLmVmNmY2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMTczNyw3ICsxNzM3LDcgQEAg
SklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmNvbnZlcnRUb0RvdWJsZShHUFJSZWcg
dmFsdWUsIEZQUlJlZyByZXN1bHQsIEcKICAgICByZXR1cm4gbm90TnVtYmVyOwogfQogCi12b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9kZSwgdm9pZCog
dnB0ciwgUHJlZGljdGlvbkNoZWNrZXIgcHJlZGljdGlvbkNoZWNrKQordm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvLCBQcmVkaWN0aW9uQ2hlY2tlciBwcmVkaWN0aW9uQ2hlY2spCiB7CiAgICAgU3Bl
Y3VsYXRlQ2VsbE9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMigpKTsKQEAgLTE3NDgsOSArMTc0OCw5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eShOb2RlJiBub2Rl
LCB2b2lkKiB2cHRyLCBQcmVkaWN0aW9uQ2hlCiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKICAgICAKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVl
UmVncyhvcDFHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDFHUFIpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpT
VmFsdWVSZWdzKG9wMUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNz
SW5mbykpKTsKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDIoKSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyhv
cDJHUFIpLCBub2RlLmNoaWxkMigpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVS
ZWdzKG9wMkdQUiksIG5vZGUuY2hpbGQyKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiwgSlNDZWxsOjpjbGFz
c0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNsYXNzSW5mbykp
KTsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWxzZUNhc2UgPSBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBvcDFHUFIsIG9wMkdQUik7CiAgICAgbV9q
aXQubW92ZShJbW0zMihWYWx1ZVRydWUpLCByZXN1bHRHUFIpOwpAQCAtMTgwOCw3ICsxODA4LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlQWRkKE5vZGUmIG5vZGUpCiAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KE5vZGVJbmRleCBu
b2RlSW5kZXgsIHZvaWQgKnZwdHIsIGJvb2wgbmVlZFNwZWN1bGF0aW9uQ2hlY2spCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QoTm9kZUluZGV4IG5v
ZGVJbmRleCwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIGJvb2wgbmVlZFNwZWN1bGF0aW9u
Q2hlY2spCiB7CiAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZUluZGV4KTsKICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwpAQCAtMTgxNyw3ICsxODE3LDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KE5vZGVJbmRleCBu
b2RlSW5kZXgsIHZvaWQgKnYKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxs
ID0gbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdmFsdWVHUFIs
IEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgaWYgKG5lZWRTcGVjdWxhdGlvbkNoZWNr
KQotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZUlu
ZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh2YWx1ZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZw
dHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBu
b2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwg
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwogICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgcmVzdWx0
R1BSKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwogICAg
IApAQCAtMTg0OCwxMSArMTg0OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9n
aWNhbE5vdChOb2RlJiBub2RlKQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChhdChu
b2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdE9yT3RoZXIoKSkgewotICAg
ICAgICBjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qobm9kZS5jaGlsZDEoKSwgbV9qaXQu
Z2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0ciwgIWlzRmluYWxPYmplY3RPck90aGVyUHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSk7CisgICAgICAg
IGNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChub2RlLmNoaWxkMSgpLCAmSlNGaW5hbE9i
amVjdDo6c19pbmZvLCAhaXNGaW5hbE9iamVjdE9yT3RoZXJQcmVkaWN0aW9uKG1fc3RhdGUuZm9y
Tm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXlPck90aGVyKCkpIHsK
LSAgICAgICAgY29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KG5vZGUuY2hpbGQxKCksIG1f
aml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIsICFpc0FycmF5T3JPdGhlclByZWRpY3Rpb24o
bV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOworICAgICAgICBjb21waWxl
T2JqZWN0T3JPdGhlckxvZ2ljYWxOb3Qobm9kZS5jaGlsZDEoKSwgJkpTQXJyYXk6OnNfaW5mbywg
IWlzQXJyYXlPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSku
bV90eXBlKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKGF0KG5vZGUuY2hpbGQx
KCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkgewpAQCAtMTkxMiw3ICsxOTEyLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QoTm9kZSYgbm9kZSkKICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKU0Jvb2xlYW4s
IFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKE5vZGVJbmRleCBub2RlSW5kZXgsIEJsb2NrSW5kZXgg
dGFrZW4sIEJsb2NrSW5kZXggbm90VGFrZW4sIHZvaWQgKnZwdHIsIGJvb2wgbmVlZFNwZWN1bGF0
aW9uQ2hlY2spCit2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaChO
b2RlSW5kZXggbm9kZUluZGV4LCBCbG9ja0luZGV4IHRha2VuLCBCbG9ja0luZGV4IG5vdFRha2Vu
LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgYm9vbCBuZWVkU3BlY3VsYXRpb25DaGVjaykK
IHsKICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlSW5kZXgpOwogICAgIEdQUlRl
bXBvcmFyeSBzY3JhdGNoKHRoaXMpOwpAQCAtMTkyMSw3ICsxOTIxLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goTm9kZUluZGV4IG5vZGVJbmRleCwgQmxv
Y2tJbmRleCB0YWsKICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9q
aXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdmFsdWVHUFIsIEdQUklu
Zm86OnRhZ01hc2tSZWdpc3Rlcik7CiAgICAgaWYgKG5lZWRTcGVjdWxhdGlvbkNoZWNrKQotICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZUluZGV4LCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyh2YWx1ZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7
CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlSW5k
ZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHZhbHVlR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2xhc3NJbmZvKSkpOwogICAgIGFkZEJyYW5jaChtX2pp
dC5qdW1wKCksIHRha2VuKTsKICAgICAKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKQEAgLTE5
NjEsOSArMTk2MSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9kZSYgbm9k
ZSkKICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICB9IGVs
c2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0T3JPdGhl
cigpKSB7Ci0gICAgICAgIGVtaXRPYmplY3RPck90aGVyQnJhbmNoKG5vZGUuY2hpbGQxKCksIHRh
a2VuLCBub3RUYWtlbiwgbV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0ciwgIWlz
RmluYWxPYmplY3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSk7CisgICAgICAgIGVtaXRPYmplY3RPck90aGVyQnJhbmNoKG5vZGUuY2hpbGQx
KCksIHRha2VuLCBub3RUYWtlbiwgJkpTRmluYWxPYmplY3Q6OnNfaW5mbywgIWlzRmluYWxPYmpl
Y3RPck90aGVyUHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBl
KSk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcnJh
eU9yT3RoZXIoKSkgewotICAgICAgICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxk
MSgpLCB0YWtlbiwgbm90VGFrZW4sIG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIsICFp
c0FycmF5T3JPdGhlclByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1f
dHlwZSkpOworICAgICAgICBlbWl0T2JqZWN0T3JPdGhlckJyYW5jaChub2RlLmNoaWxkMSgpLCB0
YWtlbiwgbm90VGFrZW4sICZKU0FycmF5OjpzX2luZm8sICFpc0FycmF5T3JPdGhlclByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpOwogICAgIH0gZWxzZSBp
ZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlTnVtYmVyKCkpIHsKICAgICAgICAg
aWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSkgewogICAgICAg
ICAgICAgYm9vbCBpbnZlcnQgPSBmYWxzZTsKQEAgLTMyODMsNyArMzI4Myw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgLy8gZG8gdGhlIHNsb3cg
KHN0cnVjdHVyZS1iYXNlZCkgY2hlY2suCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVGaW5hbE9iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAoIWlzRmluYWxP
YmplY3RQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQot
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MocHJvdG9HUFIpLCBu
b2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwcm90b0dQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIpKSk7CisgICAgICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyhwcm90b0dQUiksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHByb3RvR1BSLCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoJkpTRmluYWxPYmplY3Q6OnNfaW5mbykpKTsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3MocHJvdG9HUFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoR1BS
KTsKICAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2g4KE1hY3JvQXNzZW1i
bGVyOjpCZWxvdywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJl
Ojp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoT2Jq
ZWN0VHlwZSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKaW5kZXggNzRlOGNjMy4u
NjFlYmEwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKQEAgLTMxOSw3ICszMTks
NyBAQCBIZWFwOjpIZWFwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSGVhcFNpemUgaGVhcFNp
emUpCiAgICAgLCBtX2FjdGl2aXR5Q2FsbGJhY2soRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6
Y3JlYXRlKHRoaXMpKQogICAgICwgbV9tYWNoaW5lVGhyZWFkcyh0aGlzKQogICAgICwgbV9zaGFy
ZWREYXRhKGdsb2JhbERhdGEpCi0gICAgLCBtX3Nsb3RWaXNpdG9yKG1fc2hhcmVkRGF0YSwgZ2xv
YmFsRGF0YS0+anNGaW5hbE9iamVjdFZQdHIpCisgICAgLCBtX3Nsb3RWaXNpdG9yKG1fc2hhcmVk
RGF0YSkKICAgICAsIG1faGFuZGxlSGVhcChnbG9iYWxEYXRhKQogICAgICwgbV9pc1NhZmVUb0Nv
bGxlY3QoZmFsc2UpCiAgICAgLCBtX2dsb2JhbERhdGEoZ2xvYmFsRGF0YSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCmluZGV4IGJlMDFhMmQuLjAzMzNjNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcApAQCAtMjE5LDcgKzIxOSw3IEBA
IHZvaWQgTWFya1N0YWNrQXJyYXk6OnN0ZWFsU29tZUNlbGxzRnJvbShNYXJrU3RhY2tBcnJheSYg
b3RoZXIpCiB2b2lkIE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGE6Om1hcmtpbmdUaHJlYWRNYWlu
KCkKIHsKICAgICBXVEY6OnJlZ2lzdGVyR0NUaHJlYWQoKTsKLSAgICBTbG90VmlzaXRvciBzbG90
VmlzaXRvcigqdGhpcywgbV9nbG9iYWxEYXRhLT5qc0ZpbmFsT2JqZWN0VlB0cik7CisgICAgU2xv
dFZpc2l0b3Igc2xvdFZpc2l0b3IoKnRoaXMpOwogICAgIFBhcmFsbGVsTW9kZUVuYWJsZXIgZW5h
YmxlcihzbG90VmlzaXRvcik7CiAgICAgc2xvdFZpc2l0b3IuZHJhaW5Gcm9tU2hhcmVkKFNsb3RW
aXNpdG9yOjpTbGF2ZURyYWluKTsKIH0KQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIE1hcmtTdGFj
azo6YXBwZW5kKENvbnNlcnZhdGl2ZVJvb3RzJiBjb25zZXJ2YXRpdmVSb290cykKICAgICAgICAg
aW50ZXJuYWxBcHBlbmQocm9vdHNbaV0pOwogfQogCi1BTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IEpTQ2VsbCogY2VsbCwg
dm9pZCoganNGaW5hbE9iamVjdFZQdHIpCitBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oU2xvdFZpc2l0b3ImIHZpc2l0b3IsIGNvbnN0IEpTQ2VsbCogY2VsbCkKIHsKICNp
ZiBFTkFCTEUoU0lNUExFX0hFQVBfUFJPRklMSU5HKQogICAgIG1fdmlzaXRlZFR5cGVDb3VudHMu
Y291bnQoY2VsbCk7CkBAIC0zMDcsNyArMzA3LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKFNsb3RWaXNpdG9yJiB2aXNpdG9yLCBjb25zdCBKU0NlbGwqIGNlbGwK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChjZWxsLT52cHRyKCkgPT0ganNGaW5h
bE9iamVjdFZQdHIpIHsKKyAgICBpZiAoY2VsbC0+Y2xhc3NJbmZvKCkgPT0gJkpTRmluYWxPYmpl
Y3Q6OnNfaW5mbykgewogICAgICAgICBKU09iamVjdDo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0
PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTMz
OCwxNCArMzM4LDEyIEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRyYWluKCkKIHsKICAgICBBU1NFUlQo
bV9pc0luUGFyYWxsZWxNb2RlKTsKICAgICAKLSAgICB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0ciA9
IG1fanNGaW5hbE9iamVjdFZQdHI7Ci0KICNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCiAgICAgaWYg
KEhldXJpc3RpY3M6Om51bWJlck9mR0NNYXJrZXJzID4gMSkgewogICAgICAgICB3aGlsZSAoIW1f
c3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX3N0YWNrLnJlZmlsbCgpOwogICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBjb3VudGRvd24gPSBIZXVyaXN0aWNzOjptaW5pbXVtTnVtYmVy
T2ZTY2Fuc0JldHdlZW5SZWJhbGFuY2U7IG1fc3RhY2suY2FuUmVtb3ZlTGFzdCgpICYmIGNvdW50
ZG93bi0tOykKLSAgICAgICAgICAgICAgICB2aXNpdENoaWxkcmVuKCp0aGlzLCBtX3N0YWNrLnJl
bW92ZUxhc3QoKSwganNGaW5hbE9iamVjdFZQdHIpOworICAgICAgICAgICAgICAgIHZpc2l0Q2hp
bGRyZW4oKnRoaXMsIG1fc3RhY2sucmVtb3ZlTGFzdCgpKTsKICAgICAgICAgICAgIGRvbmF0ZUtu
b3duUGFyYWxsZWwoKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTM1Nyw3ICszNTUsNyBAQCB2
b2lkIFNsb3RWaXNpdG9yOjpkcmFpbigpCiAgICAgd2hpbGUgKCFtX3N0YWNrLmlzRW1wdHkoKSkg
ewogICAgICAgICBtX3N0YWNrLnJlZmlsbCgpOwogICAgICAgICB3aGlsZSAobV9zdGFjay5jYW5S
ZW1vdmVMYXN0KCkpCi0gICAgICAgICAgICB2aXNpdENoaWxkcmVuKCp0aGlzLCBtX3N0YWNrLnJl
bW92ZUxhc3QoKSwganNGaW5hbE9iamVjdFZQdHIpOworICAgICAgICAgICAgdmlzaXRDaGlsZHJl
bigqdGhpcywgbV9zdGFjay5yZW1vdmVMYXN0KCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suaAppbmRleCA4NjUwYzhkLi4wM2RlZWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suaApAQCAtMjA0LDcgKzIwNCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBmcmllbmQgY2xhc3MgSGVhcFJvb3RWaXNpdG9yOyAvLyBBbGxvd2Vk
IHRvIG1hcmsgYSBKU1ZhbHVlKiBvciBKU0NlbGwqKiBkaXJlY3RseS4KIAogICAgIHB1YmxpYzoK
LSAgICAgICAgTWFya1N0YWNrKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEmLCB2b2lkKiBqc0Zp
bmFsT2JqZWN0VlB0cik7CisgICAgICAgIE1hcmtTdGFjayhNYXJrU3RhY2tUaHJlYWRTaGFyZWRE
YXRhJik7CiAgICAgICAgIH5NYXJrU3RhY2soKTsKIAogICAgICAgICB2b2lkIGFwcGVuZChDb25z
ZXJ2YXRpdmVSb290cyYpOwpAQCAtMjY3LDcgKzI2Nyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBNYXJrU3RhY2tBcnJheSBtX3N0YWNrOwotICAgICAg
ICB2b2lkKiBtX2pzRmluYWxPYmplY3RWUHRyOwogICAgICAgICBIYXNoU2V0PHZvaWQqPiBtX29w
YXF1ZVJvb3RzOyAvLyBIYW5kbGUtb3duaW5nIGRhdGEgc3RydWN0dXJlcyBub3QgdmlzaWJsZSB0
byB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuCiAgICAgICAgIAogI2lmICFBU1NFUlRfRElTQUJMRUQK
QEAgLTI4NCw5ICsyODMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFya1N0YWNrVGhy
ZWFkU2hhcmVkRGF0YSYgbV9zaGFyZWQ7CiAgICAgfTsKIAotICAgIGlubGluZSBNYXJrU3RhY2s6
Ok1hcmtTdGFjayhNYXJrU3RhY2tUaHJlYWRTaGFyZWREYXRhJiBzaGFyZWQsIHZvaWQqIGpzRmlu
YWxPYmplY3RWUHRyKQorICAgIGlubGluZSBNYXJrU3RhY2s6Ok1hcmtTdGFjayhNYXJrU3RhY2tU
aHJlYWRTaGFyZWREYXRhJiBzaGFyZWQpCiAgICAgICAgIDogbV9zdGFjayhzaGFyZWQubV9zZWdt
ZW50QWxsb2NhdG9yKQotICAgICAgICAsIG1fanNGaW5hbE9iamVjdFZQdHIoanNGaW5hbE9iamVj
dFZQdHIpCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAsIG1faXNDaGVja2luZ0ZvckRl
ZmF1bHRNYXJrVmlvbGF0aW9uKGZhbHNlKQogICAgICAgICAsIG1faXNEcmFpbmluZyhmYWxzZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAppbmRleCBkNmZiODUz
Li5jODA2ZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3Bw
CkBAIC02MCwxNyArNjAsMTYgQEAgTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKGNvbnN0IFBhZ2VB
bGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbiwgSGVhcCogaGVhcCwgc2kKICAgICBIRUFQX0xP
R19CTE9DS19TVEFURV9UUkFOU0lUSU9OKHRoaXMpOwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRC
bG9jazo6Y2FsbERlc3RydWN0b3IoSlNDZWxsKiBjZWxsLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0
cikKK2lubGluZSB2b2lkIE1hcmtlZEJsb2NrOjpjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqIGNlbGwp
CiB7CiAgICAgLy8gQSBwcmV2aW91cyBlYWdlciBzd2VlcCBtYXkgYWxyZWFkeSBoYXZlIHJ1biBj
ZWxsJ3MgZGVzdHJ1Y3Rvci4KICAgICBpZiAoY2VsbC0+aXNaYXBwZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgdm9pZCogdnB0ciA9IGNlbGwtPnZwdHIoKTsKICNpZiBFTkFCTEUoU0lNUExF
X0hFQVBfUFJPRklMSU5HKQogICAgIG1faGVhcC0+bV9kZXN0cm95ZWRUeXBlQ291bnRzLmNvdW50
VlB0cih2cHRyKTsKICNlbmRpZgotICAgIGlmICh2cHRyICE9IGpzRmluYWxPYmplY3RWUHRyKQor
ICAgIGlmIChjZWxsLT51bnZhbGlkYXRlZENsYXNzSW5mbygpICE9ICZKU0ZpbmFsT2JqZWN0Ojpz
X2luZm8pCiAgICAgICAgIGNlbGwtPn5KU0NlbGwoKTsKIAogICAgIGNlbGwtPnphcCgpOwpAQCAt
ODUsNyArODQsNiBAQCBNYXJrZWRCbG9jazo6RnJlZUNlbGwqIE1hcmtlZEJsb2NrOjpzcGVjaWFs
aXplZFN3ZWVwKCkKICAgICAvLyBUaGlzIGlzIGZpbmUsIHNpbmNlIHRoZSBhbGxvY2F0aW9uIGNv
ZGUgbWFrZXMgbm8gYXNzdW1wdGlvbnMgYWJvdXQgdGhlCiAgICAgLy8gb3JkZXIgb2YgdGhlIGZy
ZWUgbGlzdC4KICAgICBGcmVlQ2VsbCogaGVhZCA9IDA7Ci0gICAgdm9pZCoganNGaW5hbE9iamVj
dFZQdHIgPSBtX2hlYXAtPmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHI7CiAgICAgZm9y
IChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9IG1fYXRvbXNQZXJD
ZWxsKSB7CiAgICAgICAgIGlmIChibG9ja1N0YXRlID09IE1hcmtlZCAmJiBtX21hcmtzLmdldChp
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtOTUsNyArOTMsNyBAQCBNYXJrZWRCbG9jazo6
RnJlZUNlbGwqIE1hcmtlZEJsb2NrOjpzcGVjaWFsaXplZFN3ZWVwKCkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCiAgICAgICAgIGlmIChibG9ja1N0YXRlICE9IE5ldykKLSAgICAgICAgICAgIGNh
bGxEZXN0cnVjdG9yKGNlbGwsIGpzRmluYWxPYmplY3RWUHRyKTsKKyAgICAgICAgICAgIGNhbGxE
ZXN0cnVjdG9yKGNlbGwpOwogCiAgICAgICAgIGlmIChzd2VlcE1vZGUgPT0gU3dlZXBUb0ZyZWVM
aXN0KSB7CiAgICAgICAgICAgICBGcmVlQ2VsbCogZnJlZUNlbGwgPSByZWludGVycHJldF9jYXN0
PEZyZWVDZWxsKj4oY2VsbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRCbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2su
aAppbmRleCBhZGM2NTcyLi44YzY2NWRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZEJsb2NrLmgKQEAgLTE2NSw3ICsxNjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
TWFya2VkQmxvY2soY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiwgSGVhcCosIHNpemVfdCBj
ZWxsU2l6ZSk7CiAgICAgICAgIEF0b20qIGF0b21zKCk7CiAgICAgICAgIHNpemVfdCBhdG9tTnVt
YmVyKGNvbnN0IHZvaWQqKTsKLSAgICAgICAgdm9pZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwqLCB2
b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cik7CisgICAgICAgIHZvaWQgY2FsbERlc3RydWN0b3IoSlND
ZWxsKik7CiAgICAgICAgIHRlbXBsYXRlPEJsb2NrU3RhdGUsIFN3ZWVwTW9kZT4gRnJlZUNlbGwq
IHNwZWNpYWxpemVkU3dlZXAoKTsKICAgICAgICAgCiAjaWYgRU5BQkxFKEdHQykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCmluZGV4IDJiZmE1ZDEuLmJiMzAxZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaApAQCAtMzUsNyArMzUsNyBA
QCBjbGFzcyBIZWFwOwogY2xhc3MgU2xvdFZpc2l0b3IgOiBwdWJsaWMgTWFya1N0YWNrIHsKICAg
ICBmcmllbmQgY2xhc3MgSGVhcFJvb3RWaXNpdG9yOwogcHVibGljOgotICAgIFNsb3RWaXNpdG9y
KE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEmLCB2b2lkKiBqc0ZpbmFsT2JqZWN0VlB0cik7Cisg
ICAgU2xvdFZpc2l0b3IoTWFya1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYpOwogCiAgICAgdm9pZCBk
b25hdGUoKQogICAgIHsKQEAgLTcxLDggKzcxLDggQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCi1p
bmxpbmUgU2xvdFZpc2l0b3I6OlNsb3RWaXNpdG9yKE1hcmtTdGFja1RocmVhZFNoYXJlZERhdGEm
IHNoYXJlZCwgdm9pZCoganNGaW5hbE9iamVjdFZQdHIpCi0gICAgOiBNYXJrU3RhY2soc2hhcmVk
LCBqc0ZpbmFsT2JqZWN0VlB0cikKK2lubGluZSBTbG90VmlzaXRvcjo6U2xvdFZpc2l0b3IoTWFy
a1N0YWNrVGhyZWFkU2hhcmVkRGF0YSYgc2hhcmVkKQorICAgIDogTWFya1N0YWNrKHNoYXJlZCkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5j
cHAKaW5kZXggNTg2NTZjYi4uODIxMmFmYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwCkBAIC0xMTAsNyArMTEwLDYgQEAgZXh0ZXJuIGNvbnN0
IEhhc2hUYWJsZSBzdHJpbmdUYWJsZTsKIGV4dGVybiBjb25zdCBIYXNoVGFibGUgc3RyaW5nQ29u
c3RydWN0b3JUYWJsZTsKIAogdm9pZCogSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0VlB0cjsK
LXZvaWQqIEpTR2xvYmFsRGF0YTo6anNBcnJheVZQdHI7CiB2b2lkKiBKU0dsb2JhbERhdGE6Ompz
RnVuY3Rpb25WUHRyOwogCiAjaWYgQ09NUElMRVIoR0NDKQpAQCAtMTMzLDExICsxMzIsNiBAQCB2
b2lkIEpTR2xvYmFsRGF0YTo6c3RvcmVWUHRycygpCiAgICAgQ0xPQkJFUl9NRU1PUlkoKTsKICAg
ICBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RWUHRyID0ganNGaW5hbE9iamVjdC0+dnB0cigp
OwogCi0gICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTQXJyYXkpIDw9IHNpemVvZihzdG9yYWdl
KSwgc2l6ZW9mX0pTQXJyYXlfbXVzdF9iZV9sZXNzX3RoYW5fc3RvcmFnZSk7Ci0gICAgSlNDZWxs
KiBqc0FycmF5ID0gbmV3IChzdG9yYWdlKSBKU0FycmF5KEpTQXJyYXk6OlZQdHJTdGVhbGluZ0hh
Y2spOwotICAgIENMT0JCRVJfTUVNT1JZKCk7Ci0gICAgSlNHbG9iYWxEYXRhOjpqc0FycmF5VlB0
ciA9IGpzQXJyYXktPnZwdHIoKTsKLQogICAgIENPTVBJTEVfQVNTRVJUKHNpemVvZihKU0Z1bmN0
aW9uKSA8PSBzaXplb2Yoc3RvcmFnZSksIHNpemVvZl9KU0Z1bmN0aW9uX211c3RfYmVfbGVzc190
aGFuX3N0b3JhZ2UpOwogICAgIEpTQ2VsbCoganNGdW5jdGlvbiA9IG5ldyAoc3RvcmFnZSkgSlNG
dW5jdGlvbihKU0NlbGw6OlZQdHJTdGVhbGluZ0hhY2spOwogICAgIENMT0JCRVJfTUVNT1JZKCk7
CkBAIC0xNDUsOSArMTM5LDcgQEAgdm9pZCBKU0dsb2JhbERhdGE6OnN0b3JlVlB0cnMoKQogCiAg
ICAgLy8gVW50aWwgd2UgZnVsbHkgcmVtb3ZlIG91ciByZWxpYW5jZSBvbiB2cHRycywgd2UgbmVl
ZCB0byBtYWtlIHN1cmUgdGhhdCBldmVyeWJvZHkgdGhhdCAKICAgICAvLyB3ZSB0aGluayBoYXMg
YSB1bmlxdWUgdmlydHVhbCBwb2ludGVyIGFjdHVhbGx5IGRvZXMuCi0gICAgaWYgKGpzRmluYWxP
YmplY3RWUHRyID09IGpzQXJyYXlWUHRyCi0gICAgICAgIHx8IGpzRmluYWxPYmplY3RWUHRyID09
IGpzRnVuY3Rpb25WUHRyCi0gICAgICAgIHx8IGpzQXJyYXlWUHRyID09IGpzRnVuY3Rpb25WUHRy
KQorICAgIGlmIChqc0ZpbmFsT2JqZWN0VlB0ciA9PSBqc0Z1bmN0aW9uVlB0cikKICAgICAgICAg
Q1JBU0goKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuaAppbmRleCA4OTlmMDIyLi5jMTY2ZTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuaApAQCAtMTk1LDcgKzE5NSw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIHN0YXRpYyB2b2lkIHN0b3JlVlB0cnMoKTsKICAgICAgICAgc3RhdGljIEpT
X0VYUE9SVERBVEEgdm9pZCoganNGaW5hbE9iamVjdFZQdHI7Ci0gICAgICAgIHN0YXRpYyBKU19F
WFBPUlREQVRBIHZvaWQqIGpzQXJyYXlWUHRyOwogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFU
QSB2b2lkKiBqc0Z1bmN0aW9uVlB0cjsKIAogICAgICAgICBJZGVudGlmaWVyVGFibGUqIGlkZW50
aWZpZXJUYWJsZTsKLS0gCjEuNy40LjQKCg==
</data>
<flag name="review"
          id="118719"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>