<?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>92420</bug_id>
          
          <creation_ts>2012-07-26 13:39:59 -0700</creation_ts>
          <short_desc>Allocate Structures in a separate part of the Heap</short_desc>
          <delta_ts>2012-07-26 16:28:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>679714</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-07-26 13:39:59 -0700</bug_when>
    <thetext>To fix our issue with destruction/finalization of Structures before their objects, we can move Structures to a separate part of the Heap that will be swept after all other objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679717</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-07-26 13:40:52 -0700</bug_when>
    <thetext>This first patch will just be separating Structures out into their own separate MarkedAllocator. Everything else will behave identically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679719</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-26 13:42:51 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; To fix our issue with destruction/finalization of Structures before their objects, we can move Structures to a separate part of the Heap that will be swept after all other objects.

I like this approach!  It also enables us to compress structure pointers in various sneaky ways even if we don&apos;t do it for all pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679836</commentid>
    <comment_count>3</comment_count>
      <attachid>154769</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-07-26 15:28:05 -0700</bug_when>
    <thetext>Created attachment 154769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679841</commentid>
    <comment_count>4</comment_count>
      <attachid>154769</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-07-26 15:30:22 -0700</bug_when>
    <thetext>Comment on attachment 154769
Patch

seems reasonable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679910</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-07-26 16:28:15 -0700</bug_when>
    <thetext>Committed r123813: &lt;http://trac.webkit.org/changeset/123813&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154769</attachid>
            <date>2012-07-26 15:28:05 -0700</date>
            <delta_ts>2012-07-26 16:18:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92420-20120726152754.patch</filename>
            <type>text/plain</type>
            <size>17697</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIzODAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBA
CisyMDEyLTA3LTI2ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQWxsb2NhdGUgU3RydWN0dXJlcyBpbiBhIHNlcGFyYXRlIHBhcnQgb2YgdGhlIEhl
YXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyNDIw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8gZml4
IG91ciBpc3N1ZSB3aXRoIGRlc3RydWN0aW9uL2ZpbmFsaXphdGlvbiBvZiBTdHJ1Y3R1cmVzIGJl
Zm9yZSB0aGVpciBvYmplY3RzLCB3ZSBjYW4gbW92ZSBTdHJ1Y3R1cmVzIHRvIGEgc2VwYXJhdGUg
CisgICAgICAgIHBhcnQgb2YgdGhlIEhlYXAgdGhhdCB3aWxsIGJlIHN3ZXB0IGFmdGVyIGFsbCBv
dGhlciBvYmplY3RzLiBUaGlzIGZpcnN0IHBhdGNoIHdpbGwganVzdCBiZSBzZXBhcmF0aW5nIFN0
cnVjdHVyZXMgCisgICAgICAgIG91dCBpbnRvIHRoZWlyIG93biBzZXBhcmF0ZSBNYXJrZWRBbGxv
Y2F0b3IuIEV2ZXJ5dGhpbmcgZWxzZSB3aWxsIGJlaGF2ZSBpZGVudGljYWxseS4KKworICAgICAg
ICAqIGhlYXAvSGVhcC5oOiBOZXcgZnVuY3Rpb24gdG8gYWxsb2NhdGUgU3RydWN0dXJlcyBpbiB0
aGUgSGVhcC4KKyAgICAgICAgKEhlYXApOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6
SGVhcDo6YWxsb2NhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9y
LmNwcDogUGFzcyB3aGV0aGVyIG9yIG5vdCB3ZSdyZSBhbGxvY2F0ZWQgU3RydWN0dXJlcyB0byB0
aGUgTWFya2VkQmxvY2suCisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVC
bG9jayk6CisgICAgICAgICogaGVhcC9NYXJrZWRBbGxvY2F0b3IuaDogQWRkIHRyYWNraW5nIGZv
ciB3aGV0aGVyIG9yIG5vdCB3ZSdyZSBhbGxvY2F0aW5nIG9ubHkgU3RydWN0dXJlcy4KKyAgICAg
ICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjpvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKToKKyAgICAg
ICAgKE1hcmtlZEFsbG9jYXRvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRvcjo6TWFy
a2VkQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6TWFya2VkQWxsb2NhdG9yOjppbml0KToKKyAg
ICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmNwcDogQWRkIHRyYWNraW5nIGZvciB3aGV0aGVyIG9y
IG5vdCB3ZSdyZSBhbGxvY2F0aW5nIG9ubHkgU3RydWN0dXJlcy4gV2UgbmVlZCB0aGlzIHRvIGJl
IGFibGUgdG8gCisgICAgICAgIGRpc3Rpbmd1aXNoIHRoZSB2YXJpb3VzIE1hcmtlZEJsb2NrIHR5
cGVzIGluIE1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3IoTWFya2VkQmxvY2sqKS4KKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpN
YXJrZWRCbG9jayk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoTWFy
a2VkQmxvY2spOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6b25seUNvbnRhaW5zU3RydWN0
dXJlcyk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuY3BwOiBJ
bmNsdWRlIHRoZSBuZXcgU3RydWN0dXJlIGFsbG9jYXRvciBpbiBhbGwgdGhlIHBsYWNlcyB0aGF0
IGFsbCB0aGUgb3RoZXIgYWxsb2NhdG9ycyBhcmUgdXNlZC9tb2RpZmllZC4KKyAgICAgICAgKEpT
Qzo6TWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6
OnJlc2V0QWxsb2NhdG9ycyk6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpjYW5vbmljYWxp
emVDZWxsTGl2ZW5lc3NEYXRhKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OmlzUGFnZWRP
dXQpOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDogQWRkIG5ldyBNYXJrZWRBbGxvY2F0
b3IganVzdCBmb3IgU3RydWN0dXJlcy4KKyAgICAgICAgKE1hcmtlZFNwYWNlKToKKyAgICAgICAg
KEpTQzo6TWFya2VkU3BhY2U6OmFsbG9jYXRvckZvcik6CisgICAgICAgIChKU0M6Ok1hcmtlZFNw
YWNlOjphbGxvY2F0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpN
YXJrZWRTcGFjZTo6Zm9yRWFjaEJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5o
OiBNb3ZlIGFsbCBvZiB0aGUgZnVuY3Rpb25zIHRoYXQgY2FsbCBhbGxvY2F0ZUNlbGw8U3RydWN0
dXJlPiBkb3duIGJlbG93IHRoZSBleHBsaWNpdCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbgorICAg
ICAgICBmb3IgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4uIFRoZSBuZXcgaW5saW5lIHNwZWNpYWxp
emF0aW9uIGZvciBhbGxvY2F0ZUNlbGwgZGlyZWN0bHkgY2FsbHMgdGhlIGFsbG9jYXRlU3RydWN0
dXJlKCkgZnVuY3Rpb24gaW4gdGhlCisgICAgICAgIEhlYXAuCisgICAgICAgIChTdHJ1Y3R1cmUp
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZVN0
cnVjdHVyZSk6CisKIDIwMTItMDctMjYgIFpvbHRhbiBIZXJjemVnICA8emhlcmN6ZWdAd2Via2l0
Lm9yZz4KIAogICAgICAgICBbUXRdW0FSTV1BUk1Bc3NlbWJsZXIgbmVlZHMgYnVpbGRmaXggYWZl
cnQgcjEyMzQxNwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTIz
NzY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODMsNiArMTgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCogYWxs
b2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QpOwogICAgICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhv
dXREZXN0cnVjdG9yKHNpemVfdCk7CisgICAgICAgIHZvaWQqIGFsbG9jYXRlU3RydWN0dXJlKCk7
CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5FeHRyYUNvc3QgPSAyNTY7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RXh0cmFDb3N0ID0gMTAyNCAqIDEwMjQ7CkBAIC0z
NjcsNyArMzY4LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBBU1NFUlQoaXNWYWxpZEFs
bG9jYXRpb24oYnl0ZXMpKTsKICAgICAgICAgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdGVX
aXRob3V0RGVzdHJ1Y3RvcihieXRlcyk7CiAgICAgfQotICAgIAorICAgCisgICAgaW5saW5lIHZv
aWQqIEhlYXA6OmFsbG9jYXRlU3RydWN0dXJlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX29i
amVjdFNwYWNlLmFsbG9jYXRlU3RydWN0dXJlKCk7CisgICAgfQorIAogICAgIGlubGluZSBDaGVj
a2VkQm9vbGVhbiBIZWFwOjp0cnlBbGxvY2F0ZVN0b3JhZ2Uoc2l6ZV90IGJ5dGVzLCB2b2lkKiog
b3V0UHRyKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc3RvcmFnZVNwYWNlLnRyeUFsbG9jYXRl
KGJ5dGVzLCBvdXRQdHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAxMjM3NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Miw3ICs5
Miw3IEBAIHZvaWQqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVTbG93Q2FzZSgKIAogTWFya2Vk
QmxvY2sqIE1hcmtlZEFsbG9jYXRvcjo6YWxsb2NhdGVCbG9jaygpCiB7Ci0gICAgTWFya2VkQmxv
Y2sqIGJsb2NrID0gTWFya2VkQmxvY2s6OmNyZWF0ZShtX2hlYXAtPmJsb2NrQWxsb2NhdG9yKCku
YWxsb2NhdGUoKSwgbV9oZWFwLCBtX2NlbGxTaXplLCBtX2NlbGxzTmVlZERlc3RydWN0aW9uKTsK
KyAgICBNYXJrZWRCbG9jayogYmxvY2sgPSBNYXJrZWRCbG9jazo6Y3JlYXRlKG1faGVhcC0+Ymxv
Y2tBbGxvY2F0b3IoKS5hbGxvY2F0ZSgpLCBtX2hlYXAsIG1fY2VsbFNpemUsIG1fY2VsbHNOZWVk
RGVzdHJ1Y3Rpb24sIG1fb25seUNvbnRhaW5zU3RydWN0dXJlcyk7CiAgICAgbV9tYXJrZWRTcGFj
ZS0+ZGlkQWRkQmxvY2soYmxvY2spOwogICAgIHJldHVybiBibG9jazsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCShyZXZpc2lvbiAxMjM3
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB6YXBGcmVlTGlz
dCgpOwogICAgIHNpemVfdCBjZWxsU2l6ZSgpIHsgcmV0dXJuIG1fY2VsbFNpemU7IH0KICAgICBi
b29sIGNlbGxzTmVlZERlc3RydWN0aW9uKCkgeyByZXR1cm4gbV9jZWxsc05lZWREZXN0cnVjdGlv
bjsgfQorICAgIGJvb2wgb25seUNvbnRhaW5zU3RydWN0dXJlcygpIHsgcmV0dXJuIG1fb25seUNv
bnRhaW5zU3RydWN0dXJlczsgfQogICAgIHZvaWQqIGFsbG9jYXRlKCk7CiAgICAgSGVhcCogaGVh
cCgpIHsgcmV0dXJuIG1faGVhcDsgfQogICAgIApAQCAtMzEsNyArMzIsNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgdm9pZCBhZGRCbG9jayhNYXJrZWRCbG9jayopOwogICAgIHZvaWQgcmVtb3ZlQmxv
Y2soTWFya2VkQmxvY2sqKTsKLSAgICB2b2lkIGluaXQoSGVhcCosIE1hcmtlZFNwYWNlKiwgc2l6
ZV90IGNlbGxTaXplLCBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uKTsKKyAgICB2b2lkIGluaXQo
SGVhcCosIE1hcmtlZFNwYWNlKiwgc2l6ZV90IGNlbGxTaXplLCBib29sIGNlbGxzTmVlZERlc3Ry
dWN0aW9uLCBib29sIG9ubHlDb250YWluc1N0cnVjdHVyZXMpOwogCiAgICAgYm9vbCBpc1BhZ2Vk
T3V0KGRvdWJsZSBkZWFkbGluZSk7CiAgICAKQEAgLTQ4LDYgKzQ5LDcgQEAgcHJpdmF0ZToKICAg
ICBEb3VibHlMaW5rZWRMaXN0PEhlYXBCbG9jaz4gbV9ibG9ja0xpc3Q7CiAgICAgc2l6ZV90IG1f
Y2VsbFNpemU7CiAgICAgYm9vbCBtX2NlbGxzTmVlZERlc3RydWN0aW9uOworICAgIGJvb2wgbV9v
bmx5Q29udGFpbnNTdHJ1Y3R1cmVzOwogICAgIEhlYXAqIG1faGVhcDsKICAgICBNYXJrZWRTcGFj
ZSogbV9tYXJrZWRTcGFjZTsKIH07CkBAIC01NiwxNyArNTgsMTkgQEAgaW5saW5lIE1hcmtlZEFs
bG9jYXRvcjo6TWFya2VkQWxsb2NhdG9yKAogICAgIDogbV9jdXJyZW50QmxvY2soMCkKICAgICAs
IG1fY2VsbFNpemUoMCkKICAgICAsIG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb24odHJ1ZSkKKyAgICAs
IG1fb25seUNvbnRhaW5zU3RydWN0dXJlcyhmYWxzZSkKICAgICAsIG1faGVhcCgwKQogICAgICwg
bV9tYXJrZWRTcGFjZSgwKQogewogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6Omlu
aXQoSGVhcCogaGVhcCwgTWFya2VkU3BhY2UqIG1hcmtlZFNwYWNlLCBzaXplX3QgY2VsbFNpemUs
IGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24pCitpbmxpbmUgdm9pZCBNYXJrZWRBbGxvY2F0b3I6
OmluaXQoSGVhcCogaGVhcCwgTWFya2VkU3BhY2UqIG1hcmtlZFNwYWNlLCBzaXplX3QgY2VsbFNp
emUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24sIGJvb2wgb25seUNvbnRhaW5zU3RydWN0dXJl
cykKIHsKICAgICBtX2hlYXAgPSBoZWFwOwogICAgIG1fbWFya2VkU3BhY2UgPSBtYXJrZWRTcGFj
ZTsKICAgICBtX2NlbGxTaXplID0gY2VsbFNpemU7CiAgICAgbV9jZWxsc05lZWREZXN0cnVjdGlv
biA9IGNlbGxzTmVlZERlc3RydWN0aW9uOworICAgIG1fb25seUNvbnRhaW5zU3RydWN0dXJlcyA9
IG9ubHlDb250YWluc1N0cnVjdHVyZXM7CiB9CiAKIGlubGluZSB2b2lkKiBNYXJrZWRBbGxvY2F0
b3I6OmFsbG9jYXRlKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJs
b2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRC
bG9jay5jcHAJKHJldmlzaW9uIDEyMzc2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZEJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAotTWFya2VkQmxvY2sqIE1hcmtlZEJsb2NrOjpjcmVhdGUoY29uc3QgUGFn
ZUFsbG9jYXRpb25BbGlnbmVkJiBhbGxvY2F0aW9uLCBIZWFwKiBoZWFwLCBzaXplX3QgY2VsbFNp
emUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24pCitNYXJrZWRCbG9jayogTWFya2VkQmxvY2s6
OmNyZWF0ZShjb25zdCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmIGFsbG9jYXRpb24sIEhlYXAqIGhl
YXAsIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWREZXN0cnVjdGlvbiwgYm9vbCBvbmx5
Q29udGFpbnNTdHJ1Y3R1cmVzKQogewotICAgIHJldHVybiBuZXcgKE5vdE51bGwsIGFsbG9jYXRp
b24uYmFzZSgpKSBNYXJrZWRCbG9jayhhbGxvY2F0aW9uLCBoZWFwLCBjZWxsU2l6ZSwgY2VsbHNO
ZWVkRGVzdHJ1Y3Rpb24pOworICAgIHJldHVybiBuZXcgKE5vdE51bGwsIGFsbG9jYXRpb24uYmFz
ZSgpKSBNYXJrZWRCbG9jayhhbGxvY2F0aW9uLCBoZWFwLCBjZWxsU2l6ZSwgY2VsbHNOZWVkRGVz
dHJ1Y3Rpb24sIG9ubHlDb250YWluc1N0cnVjdHVyZXMpOwogfQogCiBQYWdlQWxsb2NhdGlvbkFs
aWduZWQgTWFya2VkQmxvY2s6OmRlc3Ryb3koTWFya2VkQmxvY2sqIGJsb2NrKQpAQCAtNDYsMTEg
KzQ2LDEyIEBAIFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCBNYXJrZWRCbG9jazo6ZGVzdHIKICAgICBy
ZXR1cm4gYWxsb2NhdGlvbjsKIH0KIAotTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2NrKGNvbnN0IFBh
Z2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbiwgSGVhcCogaGVhcCwgc2l6ZV90IGNlbGxT
aXplLCBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uKQorTWFya2VkQmxvY2s6Ok1hcmtlZEJsb2Nr
KGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYgYWxsb2NhdGlvbiwgSGVhcCogaGVhcCwgc2l6
ZV90IGNlbGxTaXplLCBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uLCBib29sIG9ubHlDb250YWlu
c1N0cnVjdHVyZXMpCiAgICAgOiBIZWFwQmxvY2soYWxsb2NhdGlvbikKICAgICAsIG1fYXRvbXNQ
ZXJDZWxsKChjZWxsU2l6ZSArIGF0b21TaXplIC0gMSkgLyBhdG9tU2l6ZSkKICAgICAsIG1fZW5k
QXRvbShhdG9tc1BlckJsb2NrIC0gbV9hdG9tc1BlckNlbGwgKyAxKQogICAgICwgbV9jZWxsc05l
ZWREZXN0cnVjdGlvbihjZWxsc05lZWREZXN0cnVjdGlvbikKKyAgICAsIG1fb25seUNvbnRhaW5z
U3RydWN0dXJlcyhvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKQogICAgICwgbV9zdGF0ZShOZXcpIC8v
IEFsbCBjZWxscyBzdGFydCBvdXQgdW5tYXJrZWQuCiAgICAgLCBtX3dlYWtTZXQoaGVhcCkKIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24g
MTIzNzY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMTEzLDcgKzExMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgUmV0dXJuVHlwZSBtX2NvdW50OwogICAgICAgICB9OwogCi0gICAgICAgIHN0YXRpYyBNYXJr
ZWRCbG9jayogY3JlYXRlKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYsIEhlYXAqLCBzaXpl
X3QgY2VsbFNpemUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24pOworICAgICAgICBzdGF0aWMg
TWFya2VkQmxvY2sqIGNyZWF0ZShjb25zdCBQYWdlQWxsb2NhdGlvbkFsaWduZWQmLCBIZWFwKiwg
c2l6ZV90IGNlbGxTaXplLCBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uLCBib29sIG9ubHlDb250
YWluc1N0cnVjdHVyZXMpOwogICAgICAgICBzdGF0aWMgUGFnZUFsbG9jYXRpb25BbGlnbmVkIGRl
c3Ryb3koTWFya2VkQmxvY2sqKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBpc0F0b21BbGlnbmVk
KGNvbnN0IHZvaWQqKTsKQEAgLTE0NSw2ICsxNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBzaXplX3QgY2VsbFNpemUoKTsKICAgICAgICAgYm9vbCBjZWxsc05lZWREZXN0cnVjdGlv
bigpOworICAgICAgICBib29sIG9ubHlDb250YWluc1N0cnVjdHVyZXMoKTsKIAogICAgICAgICBz
aXplX3Qgc2l6ZSgpOwogICAgICAgICBzaXplX3QgY2FwYWNpdHkoKTsKQEAgLTE5NSw3ICsxOTYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB0eXBlZGVmIGNoYXIgQXRvbVthdG9tU2l6
ZV07CiAKLSAgICAgICAgTWFya2VkQmxvY2soY29uc3QgUGFnZUFsbG9jYXRpb25BbGlnbmVkJiwg
SGVhcCosIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWREZXN0cnVjdGlvbik7CisgICAg
ICAgIE1hcmtlZEJsb2NrKGNvbnN0IFBhZ2VBbGxvY2F0aW9uQWxpZ25lZCYsIEhlYXAqLCBzaXpl
X3QgY2VsbFNpemUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24sIGJvb2wgb25seUNvbnRhaW5z
U3RydWN0dXJlcyk7CiAgICAgICAgIEF0b20qIGF0b21zKCk7CiAgICAgICAgIHNpemVfdCBhdG9t
TnVtYmVyKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBjYWxsRGVzdHJ1Y3RvcihKU0NlbGwq
KTsKQEAgLTIxMyw2ICsyMTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV1RGOjpCaXRt
YXA8YXRvbXNQZXJCbG9jaywgV1RGOjpCaXRtYXBOb3RBdG9taWM+IG1fbWFya3M7CiAjZW5kaWYK
ICAgICAgICAgYm9vbCBtX2NlbGxzTmVlZERlc3RydWN0aW9uOworICAgICAgICBib29sIG1fb25s
eUNvbnRhaW5zU3RydWN0dXJlczsKICAgICAgICAgQmxvY2tTdGF0ZSBtX3N0YXRlOwogICAgICAg
ICBXZWFrU2V0IG1fd2Vha1NldDsKICAgICB9OwpAQCAtMzIyLDYgKzMyNCwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgcmV0dXJuIG1fY2VsbHNOZWVkRGVzdHJ1Y3Rpb247IAogICAgIH0K
IAorICAgIGlubGluZSBib29sIE1hcmtlZEJsb2NrOjpvbmx5Q29udGFpbnNTdHJ1Y3R1cmVzKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX29ubHlDb250YWluc1N0cnVjdHVyZXM7CisgICAgfQor
CiAgICAgaW5saW5lIHNpemVfdCBNYXJrZWRCbG9jazo6c2l6ZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gbWFya0NvdW50KCkgKiBjZWxsU2l6ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24gMTIzNzY2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCwx
NCArODAsMTYgQEAgTWFya2VkU3BhY2U6Ok1hcmtlZFNwYWNlKEhlYXAqIGhlYXApCiAgICAgOiBt
X2hlYXAoaGVhcCkKIHsKICAgICBmb3IgKHNpemVfdCBjZWxsU2l6ZSA9IHByZWNpc2VTdGVwOyBj
ZWxsU2l6ZSA8PSBwcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBwcmVjaXNlU3RlcCkgewotICAg
ICAgICBhbGxvY2F0b3JGb3IoY2VsbFNpemUpLmluaXQoaGVhcCwgdGhpcywgY2VsbFNpemUsIGZh
bHNlKTsKLSAgICAgICAgZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5pdChoZWFw
LCB0aGlzLCBjZWxsU2l6ZSwgdHJ1ZSk7CisgICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSku
aW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgZGVzdHJ1
Y3RvckFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBjZWxsU2l6ZSwgdHJ1
ZSwgZmFsc2UpOwogICAgIH0KIAogICAgIGZvciAoc2l6ZV90IGNlbGxTaXplID0gaW1wcmVjaXNl
U3RlcDsgY2VsbFNpemUgPD0gaW1wcmVjaXNlQ3V0b2ZmOyBjZWxsU2l6ZSArPSBpbXByZWNpc2VT
dGVwKSB7Ci0gICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkuaW5pdChoZWFwLCB0aGlzLCBj
ZWxsU2l6ZSwgZmFsc2UpOwotICAgICAgICBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXpl
KS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCB0cnVlKTsKKyAgICAgICAgYWxsb2NhdG9yRm9y
KGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNlbGxTaXplLCBmYWxzZSwgZmFsc2UpOworICAg
ICAgICBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGNlbGxTaXplKS5pbml0KGhlYXAsIHRoaXMsIGNl
bGxTaXplLCB0cnVlLCBmYWxzZSk7CiAgICAgfQorCisgICAgbV9zdHJ1Y3R1cmVBbGxvY2F0b3Iu
aW5pdChoZWFwLCB0aGlzLCBXVEY6OnJvdW5kVXBUb011bHRpcGxlT2YoMzIsIHNpemVvZihTdHJ1
Y3R1cmUpKSwgdHJ1ZSwgdHJ1ZSk7CiB9CiAKIE1hcmtlZFNwYWNlOjp+TWFya2VkU3BhY2UoKQpA
QCAtMTE3LDYgKzExOSw4IEBAIHZvaWQgTWFya2VkU3BhY2U6OnJlc2V0QWxsb2NhdG9ycygpCiAg
ICAgICAgIGFsbG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKICAgICAgICAgZGVzdHJ1Y3Rv
ckFsbG9jYXRvckZvcihjZWxsU2l6ZSkucmVzZXQoKTsKICAgICB9CisKKyAgICBtX3N0cnVjdHVy
ZUFsbG9jYXRvci5yZXNldCgpOwogfQogCiB2b2lkIE1hcmtlZFNwYWNlOjp2aXNpdFdlYWtTZXRz
KEhlYXBSb290VmlzaXRvciYgaGVhcFJvb3RWaXNpdG9yKQpAQCAtMTQxLDYgKzE0NSw4IEBAIHZv
aWQgTWFya2VkU3BhY2U6OmNhbm9uaWNhbGl6ZUNlbGxMaXZlbmUKICAgICAgICAgYWxsb2NhdG9y
Rm9yKGNlbGxTaXplKS56YXBGcmVlTGlzdCgpOwogICAgICAgICBkZXN0cnVjdG9yQWxsb2NhdG9y
Rm9yKGNlbGxTaXplKS56YXBGcmVlTGlzdCgpOwogICAgIH0KKworICAgIG1fc3RydWN0dXJlQWxs
b2NhdG9yLnphcEZyZWVMaXN0KCk7CiB9CiAKIGJvb2wgTWFya2VkU3BhY2U6OmlzUGFnZWRPdXQo
ZG91YmxlIGRlYWRsaW5lKQpAQCAtMTU1LDYgKzE2MSw5IEBAIGJvb2wgTWFya2VkU3BhY2U6Omlz
UGFnZWRPdXQoZG91YmxlIGRlYWQKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAor
ICAgIGlmIChtX3N0cnVjdHVyZUFsbG9jYXRvci5pc1BhZ2VkT3V0KGRlYWRsaW5lKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTIzNzY2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
ODAsNyArODAsOCBAQCBwdWJsaWM6CiAgICAgTWFya2VkQWxsb2NhdG9yJiBkZXN0cnVjdG9yQWxs
b2NhdG9yRm9yKHNpemVfdCk7CiAgICAgdm9pZCogYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXpl
X3QpOwogICAgIHZvaWQqIGFsbG9jYXRlV2l0aG91dERlc3RydWN0b3Ioc2l6ZV90KTsKLSAgICAK
KyAgICB2b2lkKiBhbGxvY2F0ZVN0cnVjdHVyZSgpOworIAogICAgIHZvaWQgcmVzZXRBbGxvY2F0
b3JzKCk7CiAKICAgICB2b2lkIHZpc2l0V2Vha1NldHMoSGVhcFJvb3RWaXNpdG9yJik7CkBAIC0x
MzIsNiArMTMzLDcgQEAgcHJpdmF0ZToKIAogICAgIFN1YnNwYWNlIG1fZGVzdHJ1Y3RvclNwYWNl
OwogICAgIFN1YnNwYWNlIG1fbm9ybWFsU3BhY2U7CisgICAgTWFya2VkQWxsb2NhdG9yIG1fc3Ry
dWN0dXJlQWxsb2NhdG9yOwogCiAgICAgSGVhcCogbV9oZWFwOwogICAgIE1hcmtlZEJsb2NrU2V0
IG1fYmxvY2tzOwpAQCAtMTY4LDggKzE3MCwxMiBAQCBpbmxpbmUgTWFya2VkQWxsb2NhdG9yJiBN
YXJrZWRTcGFjZTo6YWxsCiAKIGlubGluZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjph
bGxvY2F0b3JGb3IoTWFya2VkQmxvY2sqIGJsb2NrKQogeworICAgIGlmIChibG9jay0+b25seUNv
bnRhaW5zU3RydWN0dXJlcygpKQorICAgICAgICByZXR1cm4gbV9zdHJ1Y3R1cmVBbGxvY2F0b3I7
CisKICAgICBpZiAoYmxvY2stPmNlbGxzTmVlZERlc3RydWN0aW9uKCkpCiAgICAgICAgIHJldHVy
biBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGJsb2NrLT5jZWxsU2l6ZSgpKTsKKwogICAgIHJldHVy
biBhbGxvY2F0b3JGb3IoYmxvY2stPmNlbGxTaXplKCkpOwogfQogCkBAIC0xOTEsNiArMTk3LDEx
IEBAIGlubGluZSB2b2lkKiBNYXJrZWRTcGFjZTo6YWxsb2NhdGVXaXRoRGUKICAgICByZXR1cm4g
ZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcykuYWxsb2NhdGUoKTsKIH0KIAoraW5saW5lIHZv
aWQqIE1hcmtlZFNwYWNlOjphbGxvY2F0ZVN0cnVjdHVyZSgpCit7CisgICAgcmV0dXJuIG1fc3Ry
dWN0dXJlQWxsb2NhdG9yLmFsbG9jYXRlKCk7Cit9CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5j
dG9yPiBpbmxpbmUgdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBNYXJrZWRTcGFjZTo6Zm9y
RWFjaEJsb2NrKEZ1bmN0b3ImIGZ1bmN0b3IpCiB7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBwcmVjaXNlQ291bnQ7ICsraSkgewpAQCAtMjAzLDYgKzIxNCw4IEBAIHRlbXBsYXRlIDx0eXBl
bmFtZSBGdW5jdG9yPiBpbmxpbmUgdHlwZW4KICAgICAgICAgbV9kZXN0cnVjdG9yU3BhY2UuaW1w
cmVjaXNlQWxsb2NhdG9yc1tpXS5mb3JFYWNoQmxvY2soZnVuY3Rvcik7CiAgICAgfQogCisgICAg
bV9zdHJ1Y3R1cmVBbGxvY2F0b3IuZm9yRWFjaEJsb2NrKGZ1bmN0b3IpOworCiAgICAgcmV0dXJu
IGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEyMzc2NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCwxNCArNjgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB0eXBlZGVmIEpTQ2VsbCBCYXNlOwogCi0g
ICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBU
eXBlSW5mbyYgdHlwZUluZm8sIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQotICAgICAgICB7
Ci0gICAgICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOwotICAg
ICAgICAgICAgQVNTRVJUKGNsYXNzSW5mbyk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5o
ZWFwKSkgU3RydWN0dXJlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCB0eXBl
SW5mbywgY2xhc3NJbmZvKTsKLSAgICAgICAgICAgIHN0cnVjdHVyZS0+ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsRGF0YSk7Ci0gICAgICAgICAgICByZXR1cm4gc3RydWN0dXJlOwotICAgICAgICB9Cisg
ICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5m
byopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSkKQEAgLTMzMCwxMyArMzIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFN0cnVjdHVyZSwgbV90eXBlSW5m
bykgKyBUeXBlSW5mbzo6dHlwZU9mZnNldCgpOwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGlj
IFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKLSAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKCFnbG9iYWxEYXRhLnN0cnVjdHVyZVN0cnVjdHVy
ZSk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxs
b2NhdGVDZWxsPFN0cnVjdHVyZT4oZ2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlKGdsb2JhbERh
dGEpOwotICAgICAgICAgICAgc3RydWN0dXJlLT5maW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhLCBD
cmVhdGluZ0Vhcmx5Q2VsbCk7Ci0gICAgICAgICAgICByZXR1cm4gc3RydWN0dXJlOwotICAgICAg
ICB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0dsb2JhbERh
dGEmKTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgdHJhbnNpdGlvbldhdGNocG9pbnRTZXRIYXNC
ZWVuSW52YWxpZGF0ZWQoKSBjb25zdAogICAgICAgICB7CkBAIC0zNjgsMTMgKzM1NSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAg
IFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKIAotICAgICAgICBz
dGF0aWMgU3RydWN0dXJlKiBjcmVhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdsb2Jh
bERhdGEuc3RydWN0dXJlU3RydWN0dXJlKTsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPihnbG9iYWxEYXRh
LmhlYXApKSBTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKLSAgICAgICAgICAgIG5l
d1N0cnVjdHVyZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7Ci0gICAgICAgICAgICByZXR1
cm4gbmV3U3RydWN0dXJlOwotICAgICAgICB9CisgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgCiAgICAgICAg
IHR5cGVkZWYgZW51bSB7IAogICAgICAgICAgICAgTm9uZURpY3Rpb25hcnlLaW5kID0gMCwKQEAg
LTQ2MSw2ICs0NDIsNDIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIG1fc3Rh
dGljRnVuY3Rpb25SZWlmaWVkOwogICAgIH07CiAKKyAgICB0ZW1wbGF0ZSA8PiBpbmxpbmUgdm9p
ZCogYWxsb2NhdGVDZWxsPFN0cnVjdHVyZT4oSGVhcCYgaGVhcCkKKyAgICB7CisjaWYgRU5BQkxF
KEdDX1ZBTElEQVRJT04pCisgICAgICAgIEFTU0VSVCghaGVhcC5nbG9iYWxEYXRhKCktPmlzSW5p
dGlhbGl6aW5nT2JqZWN0KCkpOworICAgICAgICBoZWFwLmdsb2JhbERhdGEoKS0+c2V0SW5pdGlh
bGl6aW5nT2JqZWN0Q2xhc3MoJlN0cnVjdHVyZTo6c19pbmZvKTsKKyNlbmRpZgorICAgICAgICBK
U0NlbGwqIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KGhlYXAuYWxsb2NhdGVTdHJ1Y3R1
cmUoKSk7CisgICAgICAgIHJlc3VsdC0+Y2xlYXJTdHJ1Y3R1cmUoKTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKKyAgICBpbmxpbmUgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmNyZWF0
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8sIGNvbnN0IENsYXNz
SW5mbyogY2xhc3NJbmZvKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGdsb2JhbERhdGEuc3RydWN0
dXJlU3RydWN0dXJlKTsKKyAgICAgICAgQVNTRVJUKGNsYXNzSW5mbyk7CisgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPihn
bG9iYWxEYXRhLmhlYXApKSBTdHJ1Y3R1cmUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIHR5cGVJbmZvLCBjbGFzc0luZm8pOworICAgICAgICBzdHJ1Y3R1cmUtPmZpbmlzaENy
ZWF0aW9uKGdsb2JhbERhdGEpOworICAgICAgICByZXR1cm4gc3RydWN0dXJlOworICAgIH0KKyAg
ICAgICAgCisgICAgaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlOjpjcmVhdGVTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFnbG9iYWxE
YXRhLnN0cnVjdHVyZVN0cnVjdHVyZSk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RydWN0dXJlPihnbG9iYWxEYXRhLmhlYXApKSBT
dHJ1Y3R1cmUoZ2xvYmFsRGF0YSk7CisgICAgICAgIHN0cnVjdHVyZS0+ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsRGF0YSwgQ3JlYXRpbmdFYXJseUNlbGwpOworICAgICAgICByZXR1cm4gc3RydWN0dXJl
OworICAgIH0KKworICAgIGlubGluZSBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6Y3JlYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgewor
ICAgICAgICBBU1NFUlQoZ2xvYmFsRGF0YS5zdHJ1Y3R1cmVTdHJ1Y3R1cmUpOworICAgICAgICBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cnVj
dHVyZT4oZ2xvYmFsRGF0YS5oZWFwKSkgU3RydWN0dXJlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7
CisgICAgICAgIG5ld1N0cnVjdHVyZS0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsRGF0YSk7CisgICAg
ICAgIHJldHVybiBuZXdTdHJ1Y3R1cmU7CisgICAgfQorICAgICAgICAKICAgICBpbmxpbmUgUHJv
cGVydHlPZmZzZXQgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogICAgIHsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSgp
LT5jbGFzc0luZm8oKSA9PSAmc19pbmZvKTsK
</data>
<flag name="review"
          id="164094"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>