<?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>29534</bug_id>
          
          <creation_ts>2009-09-20 21:13:26 -0700</creation_ts>
          <short_desc>SNES is too slow</short_desc>
          <delta_ts>2009-09-21 14:53:20 -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>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://benfirshman.com/projects/jsnes/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aroben</cc>
    
    <cc>darin</cc>
    
    <cc>jon</cc>
    
    <cc>loki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>148597</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-20 21:13:26 -0700</bug_when>
    <thetext>The SNES emulator at http://benfirshman.com/projects/jsnes/ runs to slowly for me to play games instead of working.

rdar://7231790</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148598</commentid>
    <comment_count>1</comment_count>
      <attachid>39839</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-20 21:36:53 -0700</bug_when>
    <thetext>Created attachment 39839
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148599</commentid>
    <comment_count>2</comment_count>
      <attachid>39839</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-09-20 21:57:13 -0700</bug_when>
    <thetext>Comment on attachment 39839
Patch v1

Idea looks good, but there are some errors where it does isCachedDictionary() where a cacheable non-dictionary should be allowed too. Discussed w/ oliver, waiting for new patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148600</commentid>
    <comment_count>3</comment_count>
      <attachid>39840</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-20 22:15:23 -0700</bug_when>
    <thetext>Created attachment 39840
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148601</commentid>
    <comment_count>4</comment_count>
      <attachid>39840</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2009-09-20 22:36:07 -0700</bug_when>
    <thetext>Comment on attachment 39840
Patch v1

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148602</commentid>
    <comment_count>5</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-20 22:42:40 -0700</bug_when>
    <thetext>Committed r48573</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148617</commentid>
    <comment_count>6</comment_count>
    <who name="Jon">jon</who>
    <bug_when>2009-09-21 02:22:04 -0700</bug_when>
    <thetext>While this patch improved performance on my Quad G5 running 10.5.8, only from 4fps to ~6fps running Super Mario. I take it this fix mostly helped Intel machines?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148634</commentid>
    <comment_count>7</comment_count>
    <who name="Gabor Loki">loki</who>
    <bug_when>2009-09-21 06:08:55 -0700</bug_when>
    <thetext>The landed patch breaks Qt-linux port in Debug mode on x86 and ARM as well. In Release there is not any regression.


 $&gt; WebKitBuild/Debug/JavaScriptCore/jsc JavaScriptCore/tests/mozilla/ecma/shell.js JavaScriptCore/tests/mozilla/ecma/Array/15.4-1.js

ASSERTION FAILED: !structure-&gt;isDictionary()
(../../../JavaScriptCore/runtime/Structure.cpp:559 static WTF::PassRefPtr&lt;JSC::Structure&gt; JSC::Structure::toDictionaryTransition(JSC::Structure*, JSC::Structure::DictionaryKind))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148653</commentid>
    <comment_count>8</comment_count>
      <attachid>39840</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-09-21 07:45:49 -0700</bug_when>
    <thetext>Comment on attachment 39840
Patch v1

I reverted this patch in r48580, as it caused many assertion failures (see comment 7 and bug 29554).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148655</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2009-09-21 07:46:10 -0700</bug_when>
    <thetext>*** Bug 29554 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148725</commentid>
    <comment_count>10</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-21 09:57:59 -0700</bug_when>
    <thetext>Relanded in r48582</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148849</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-09-21 14:53:20 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; While this patch improved performance on my Quad G5 running 10.5.8, only from
&gt; 4fps to ~6fps running Super Mario. I take it this fix mostly helped Intel
&gt; machines?

Yes, helps machines with the JIT turned on a lot more than machines where the interpreter is used. The JIR is on for Intel but also ARM, for example.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39839</attachid>
            <date>2009-09-20 21:36:53 -0700</date>
            <delta_ts>2009-09-20 22:15:19 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-29534-20090920213652.patch</filename>
            <type>text/plain</type>
            <size>17715</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlMzA3OWU5Li5iYjY4MjE2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIg
QEAKKzIwMDktMDktMjAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTTkVTIGlzIHRvbyBzbG93
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTUzNAor
CisgICAgICAgIFRoZSBwcm9ibGVtIHdhcyB0aGF0IHRoZSBlbXVsYXRvciB1c2VkIG11bHRpcGxl
IGNsYXNzZXMgd2l0aAorICAgICAgICBtb3JlIHByb3BlcnRpZXMgdGhhbiBvdXIgZGljdGlvbmFy
eSBjdXRvZmYgYWxsb3dlZCwgdGhpcyByZXN1bHRlZAorICAgICAgICBpbiBtb3JlIG9yIGxlc3Mg
YWxsIGNyaXRpY2FsIGxvZ2ljIGluc2lkZSB0aGUgZW11bGF0b3IgcmVxdWlyaW5nCisgICAgICAg
IHVuY2FjaGVkIHByb3BlcnR5IGFjY2Vzcy4KKworICAgICAgICBSYXRoZXIgdGhhbiBzaW1wbHkg
YnVtcGluZyB0aGUgZGljdGlvbmFyeSBjdXRvZmYsIHRoaXMgcGF0Y2gKKyAgICAgICAgcmVjb2du
aXNlcyB0aGF0IHRoZXJlIGFyZSB0d28gd2F5cyB0byBjcmVhdGUgYSAiZGljdGlvbmFyeSIKKyAg
ICAgICAgc3RydWN0dXJlLiAgRWl0aGVyIGJ5IGFkZGluZyBhIGxhcmdlIG51bWJlciBvZiBwcm9w
ZXJ0aWVzLCBvcgorICAgICAgICBieSByZW1vdmluZyBhIHByb3BlcnR5LiAgSW4gdGhlIGNhc2Ug
b2YgYWRkaW5nIHByb3BlcnRpZXMgd2UKKyAgICAgICAga25vdyBhbGwgdGhlIGV4aXN0aW5nIHBy
b3BlcnRpZXMgd2lsbCBtYWludGFpbiB0aGVpciBleGlzdGluZworICAgICAgICBvZmZzZXRzLCBz
byB3ZSBjb3VsZCBjYWNoZSBhY2Nlc3MgdG8gdGhvc2UgcHJvcGVydGllcywgaWYgd2UKKyAgICAg
ICAga25vdyB0aGV5IHdvbid0IGJlIHJlbW92ZWQuCisKKyAgICAgICAgVG8gbWFrZSB0aGlzIHBv
c3NpYmxlLCB0aGlzIHBhdGNoIGFkZHMgdGhlIGxvZ2ljIHJlcXVpcmVkIHRvCisgICAgICAgIGRp
c3Rpbmd1aXNoIGEgZGljdGlvbmFyeSBjcmVhdGVkIGJ5IGFkZGl0aW9uIGZyb20gb25lIGNyZWF0
ZWQKKyAgICAgICAgYnkgcmVtb3ZhbC4gIFdpdGggdGhpcyBsb2dpYyBpbiBwbGFjZSB3ZSBjYW4g
bm93IGNhY2hlIGFjY2VzcworICAgICAgICB0byBvYmplY3RzIHdpdGggbGFyZ2UgbnVtYmVycyBv
ZiBwcm9wZXJ0aWVzLgorCisgICAgICAgIFNORVMgcGVyZm9ybWFuY2UgaW1wcm92ZWQgYnkgbW9y
ZSB0aGFuIDZ4LgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cmVzb2x2ZUdsb2JhbCk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAo
SlNDOjpKSVRUaHVua3M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OkpJVFRodW5r
czo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04p
OgorICAgICAgICAqIHJ1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaDoKKyAgICAg
ICAgKEpTQzo6QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI6OkJhdGNoZWRUcmFuc2l0aW9uT3B0
aW1pemVyKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6Z2V0RW51bWVyYWJsZVByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnRvRGljdGlvbmFyeVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnRvQ2FjaGVkRGljdGlvbmFyeVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnRvVW5jYWNoZWREaWN0aW9uYXJ5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6ZnJvbURpY3Rpb25hcnlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzRGljdGlvbmFyeSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6aXNDYWNoZWREaWN0aW9uYXJ5KToKKyAgICAgICAgKEpTQzo6U3Ry
dWN0dXJlOjppc1VuY2FjaGVkRGljdGlvbmFyeSk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlQ2hhaW46OmlzQ2FjaGVhYmxlKToKKwogMjAwOS0wOS0xOSAgT2xpdmVyIEh1bnQg
IDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93
aWFrLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IGRk
YTY2N2UuLjk4ZGIxMzAgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKQEAgLTE2OSw3ICsxNjksNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6
cmVzb2x2ZUdsb2JhbChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5zdHJ1Y3Rpb24qCiAgICAgUHJv
cGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQ
cm9wZXJ0eVNsb3QoY2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBzbG90LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwotICAgICAgICBpZiAoc2xv
dC5pc0NhY2hlYWJsZSgpICYmICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25h
cnkoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgIGlmIChz
bG90LmlzQ2FjaGVhYmxlKCkgJiYgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNDYWNoZWRE
aWN0aW9uYXJ5KCkgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgewogICAgICAg
ICAgICAgaWYgKHZQQ1s0XS51LnN0cnVjdHVyZSkKICAgICAgICAgICAgICAgICB2UENbNF0udS5z
dHJ1Y3R1cmUtPmRlcmVmKCk7CiAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgp
LT5yZWYoKTsKQEAgLTk1Myw3ICs5NTMsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRl
cjo6dHJ5Q2FjaGVQdXRCeUlEKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqCiAgICAg
SlNDZWxsKiBiYXNlQ2VsbCA9IGFzQ2VsbChiYXNlVmFsdWUpOwogICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOwogCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNE
aWN0aW9uYXJ5KCkpIHsKKyAgICBpZiAoc3RydWN0dXJlLT5pc1VuY2FjaGVkRGljdGlvbmFyeSgp
KSB7CiAgICAgICAgIHZQQ1swXSA9IGdldE9wY29kZShvcF9wdXRfYnlfaWRfZ2VuZXJpYyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDQwLDcgKzEwNDAsNyBAQCBORVZFUl9JTkxJTkUg
dm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRCeUlEKENhbGxGcmFtZSogY2FsbEZyYW1lLCBD
b2RlQmxvY2sqCiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFzQ2VsbChiYXNlVmFsdWUp
LT5zdHJ1Y3R1cmUoKTsKIAotICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Cisg
ICAgaWYgKHN0cnVjdHVyZS0+aXNVbmNhY2hlZERpY3Rpb25hcnkoKSkgewogICAgICAgICB2UENb
MF0gPSBnZXRPcGNvZGUob3BfZ2V0X2J5X2lkX2dlbmVyaWMpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggNTgxNTE3NS4uOTI1NzFhYiAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuY3BwCkBAIC02NzksNyArNjc5LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQg
SklUVGh1bmtzOjp0cnlDYWNoZVB1dEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9j
ayogY28KICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYXNDZWxsKGJhc2VWYWx1ZSk7CiAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CiAKLSAgICBpZiAoc3Ry
dWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgIGlmIChzdHJ1Y3R1cmUtPmlzVW5jYWNoZWRE
aWN0aW9uYXJ5KCkpIHsKICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKGNvZGVC
bG9jaywgcmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX3B1dF9ieV9pZF9nZW5lcmlj
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03NDMsNyArNzQzLDcgQEAgTkVWRVJfSU5M
SU5FIHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUs
IENvZGVCbG9jayogY28KICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYXNDZWxsKGJhc2VWYWx1ZSk7
CiAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CiAKLSAg
ICBpZiAoc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgIGlmIChzdHJ1Y3R1cmUtPmlz
VW5jYWNoZWREaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRy
ZXNzKGNvZGVCbG9jaywgcmV0dXJuQWRkcmVzcywgRnVuY3Rpb25QdHIoY3RpX29wX2dldF9ieV9p
ZF9nZW5lcmljKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMTU0LDcgKzExNTQsNyBA
QCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lkX21ldGhv
ZF9jaGVjaykKICAgICBKU09iamVjdCogc2xvdEJhc2VPYmplY3Q7CiAgICAgaWYgKGJhc2VWYWx1
ZS5pc0NlbGwoKQogICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKLSAgICAgICAgJiYgIShz
dHJ1Y3R1cmUgPSBhc0NlbGwoYmFzZVZhbHVlKS0+c3RydWN0dXJlKCkpLT5pc0RpY3Rpb25hcnko
KQorICAgICAgICAmJiAoc3RydWN0dXJlID0gYXNDZWxsKGJhc2VWYWx1ZSktPnN0cnVjdHVyZSgp
KS0+aXNDYWNoZWREaWN0aW9uYXJ5KCkKICAgICAgICAgJiYgKHNsb3RCYXNlT2JqZWN0ID0gYXNP
YmplY3Qoc2xvdC5zbG90QmFzZSgpKSktPmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShjYWxsRnJh
bWUsIGlkZW50LCBzcGVjaWZpYykKICAgICAgICAgJiYgc3BlY2lmaWMKICAgICAgICAgKSB7CkBA
IC0xMjI4LDcgKzEyMjgsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNWYWx1ZSwg
b3BfZ2V0X2J5X2lkX3NlbGZfZmFpbCkKIAogICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKICAg
ICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCi0gICAgICAgICYmICFhc0NlbGwoYmFzZVZhbHVl
KS0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpCisgICAgICAgICYmIGFzQ2VsbChiYXNlVmFs
dWUpLT5zdHJ1Y3R1cmUoKS0+aXNDYWNoZWREaWN0aW9uYXJ5KCkKICAgICAgICAgJiYgc2xvdC5z
bG90QmFzZSgpID09IGJhc2VWYWx1ZSkgewogCiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKQEAgLTEyOTksNyArMTI5OSw3IEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkKIAog
ICAgIENIRUNLX0ZPUl9FWENFUFRJT04oKTsKIAotICAgIGlmICghYmFzZVZhbHVlLmlzQ2VsbCgp
IHx8ICFzbG90LmlzQ2FjaGVhYmxlKCkgfHwgYXNDZWxsKGJhc2VWYWx1ZSktPnN0cnVjdHVyZSgp
LT5pc0RpY3Rpb25hcnkoKSkgeworICAgIGlmICghYmFzZVZhbHVlLmlzQ2VsbCgpIHx8ICFzbG90
LmlzQ2FjaGVhYmxlKCkgfHwgYXNDZWxsKGJhc2VWYWx1ZSktPnN0cnVjdHVyZSgpLT5pc1VuY2Fj
aGVkRGljdGlvbmFyeSgpKSB7CiAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhj
YWxsRnJhbWUtPmNvZGVCbG9jaygpLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBGdW5jdGlvblB0cihj
dGlfb3BfZ2V0X2J5X2lkX3Byb3RvX2ZhaWwpKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwogICAgIH0KQEAgLTIxODgsNyArMjE4OCw3IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKEVuY29kZWRKU1ZhbHVlLCBvcF9yZXNvbHZlX2dsb2JhbCkKICAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChnbG9iYWxPYmplY3QpOwogICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5
U2xvdChjYWxsRnJhbWUsIGlkZW50LCBzbG90KSkgewogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHNsb3QuZ2V0VmFsdWUoY2FsbEZyYW1lLCBpZGVudCk7Ci0gICAgICAgIGlmIChzbG90LmlzQ2Fj
aGVhYmxlKCkgJiYgIWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpICYm
IHNsb3Quc2xvdEJhc2UoKSA9PSBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgaWYgKHNsb3QuaXND
YWNoZWFibGUoKSAmJiBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc0NhY2hlZERpY3Rpb25h
cnkoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CiAgICAgICAgICAgICBH
bG9iYWxSZXNvbHZlSW5mbyYgZ2xvYmFsUmVzb2x2ZUluZm8gPSBjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLT5nbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5mb0luZGV4KTsKICAgICAgICAg
ICAgIGlmIChnbG9iYWxSZXNvbHZlSW5mby5zdHJ1Y3R1cmUpCiAgICAgICAgICAgICAgICAgZ2xv
YmFsUmVzb2x2ZUluZm8uc3RydWN0dXJlLT5kZXJlZigpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIGIvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oCmluZGV4IGI5ZjczOGYuLmY3
YzE1OTkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmF0Y2hlZFRyYW5zaXRp
b25PcHRpbWl6ZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyLmgKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICA6IG1fb2JqZWN0KG9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX29i
amVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQotICAgICAgICAgICAgICAgIG1fb2Jq
ZWN0LT5zZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjp0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKG1fb2Jq
ZWN0LT5zdHJ1Y3R1cmUoKSkpOworICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5zZXRTdHJ1Y3R1
cmUoU3RydWN0dXJlOjp0b0NhY2hlZERpY3Rpb25hcnlUcmFuc2l0aW9uKG1fb2JqZWN0LT5zdHJ1
Y3R1cmUoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgfkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1p
emVyKCkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggOGMxNGZkZC4uMjQ4M2Zh
MCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTQ3MSw3ICs0NzEsNyBAQCBK
U09iamVjdCogSlNPYmplY3Q6OnVud3JhcHBlZE9iamVjdCgpCiB2b2lkIEpTT2JqZWN0OjpyZW1v
dmVEaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIHNpemVfdCBv
ZmZzZXQ7Ci0gICAgaWYgKG1fc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgIGlmICht
X3N0cnVjdHVyZS0+aXNVbmNhY2hlZERpY3Rpb25hcnkoKSkgewogICAgICAgICBvZmZzZXQgPSBt
X3N0cnVjdHVyZS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihwcm9wZXJ0eU5hbWUp
OwogICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCiAgICAgICAgICAgICBwdXRE
aXJlY3RPZmZzZXQob2Zmc2V0LCBqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcAppbmRleCAzNGMyN2I3Li43OThlYmVkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgU3RydWN0dXJlOjpTdHJ1Y3R1cmUoSlNW
YWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbykKICAgICAsIG1fcHJvcGVy
dHlUYWJsZSgwKQogICAgICwgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eShKU09iamVjdDo6aW5s
aW5lU3RvcmFnZUNhcGFjaXR5KQogICAgICwgbV9vZmZzZXQobm9PZmZzZXQpCi0gICAgLCBtX2lz
RGljdGlvbmFyeShmYWxzZSkKKyAgICAsIG1fZGljdGlvbmFyeUtpbmQoTm9uZURpY3Rpb25hcnlL
aW5kKQogICAgICwgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUoZmFsc2UpCiAgICAgLCBtX2hhc0dl
dHRlclNldHRlclByb3BlcnRpZXMoZmFsc2UpCiAgICAgLCBtX2F0dHJpYnV0ZXNJblByZXZpb3Vz
KDApCkBAIC0yOTAsNyArMjkwLDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmdldE93bkVudW1lcmFibGVQ
cm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkKIAogdm9pZCBT
dHJ1Y3R1cmU6OmdldEVudW1lcmFibGVQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEpTT2JqZWN0KiBiYXNlT2JqZWN0KQogewot
ICAgIGJvb2wgc2hvdWxkQ2FjaGUgPSBwcm9wZXJ0eU5hbWVzLnNob3VsZENhY2hlKCkgJiYgIShw
cm9wZXJ0eU5hbWVzLnNpemUoKSB8fCBtX2lzRGljdGlvbmFyeSk7CisgICAgYm9vbCBzaG91bGRD
YWNoZSA9IHByb3BlcnR5TmFtZXMuc2hvdWxkQ2FjaGUoKSAmJiAhKHByb3BlcnR5TmFtZXMuc2l6
ZSgpIHx8IGlzRGljdGlvbmFyeSgpKTsKIAogICAgIGlmIChzaG91bGRDYWNoZSAmJiBtX2NhY2hl
ZFByb3BlcnR5TmFtZUFycmF5RGF0YSkgewogICAgICAgICBpZiAobV9jYWNoZWRQcm9wZXJ0eU5h
bWVBcnJheURhdGEtPmNhY2hlZFByb3RvdHlwZUNoYWluKCkgPT0gcHJvdG90eXBlQ2hhaW4oZXhl
YykpIHsKQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlv
bmFyeUZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIAogICAgIG1hdGVy
aWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOwogCi0gICAgQVNTRVJUKG1faXNEaWN0aW9u
YXJ5KTsKKyAgICBBU1NFUlQoaXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChtX3Byb3BlcnR5
VGFibGUpOwogCiAgICAgdW5zaWduZWQgaSA9IHJlcC0+Y29tcHV0ZWRIYXNoKCk7CkBAIC0zOTEs
NyArMzkxLDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiAKIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBT
dHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQg
YXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCkKIHsKLSAg
ICBBU1NFUlQoIXN0cnVjdHVyZS0+bV9pc0RpY3Rpb25hcnkpOworICAgIEFTU0VSVCghc3RydWN0
dXJlLT5pc0RpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50
eXBlKCkgPT0gT2JqZWN0VHlwZSk7CiAKICAgICBpZiAoU3RydWN0dXJlKiBleGlzdGluZ1RyYW5z
aXRpb24gPSBzdHJ1Y3R1cmUtPnRhYmxlLmdldChtYWtlX3BhaXIocHJvcGVydHlOYW1lLnVzdHJp
bmcoKS5yZXAoKSwgYXR0cmlidXRlcyksIHNwZWNpZmljVmFsdWUpKSB7CkBAIC00MDUsMTIgKzQw
NSwxMiBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5z
aXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdAogCiBQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCkKIHsKLSAgICBBU1NFUlQoIXN0cnVjdHVy
ZS0+bV9pc0RpY3Rpb25hcnkpOworICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnko
KSk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gT2JqZWN0VHlw
ZSk7CiAgICAgQVNTRVJUKCFTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3Rp
bmdTdHJ1Y3R1cmUoc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmlj
VmFsdWUsIG9mZnNldCkpOwogCiAgICAgaWYgKHN0cnVjdHVyZS0+dHJhbnNpdGlvbkNvdW50KCkg
PiBzX21heFRyYW5zaXRpb25MZW5ndGgpIHsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJh
bnNpdGlvbiA9IHRvRGljdGlvbmFyeVRyYW5zaXRpb24oc3RydWN0dXJlKTsKKyAgICAgICAgUmVm
UHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IHRvQ2FjaGVkRGljdGlvbmFyeVRyYW5zaXRpb24o
c3RydWN0dXJlKTsKICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSB0cmFuc2l0aW9uKTsKICAg
ICAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0KHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
c3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIGlmICh0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VT
aXplKCkgPiB0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQpAQCAtNDU0LDkg
KzQ1NCw5IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uCiAKIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCkKIHsKLSAg
ICBBU1NFUlQoIXN0cnVjdHVyZS0+bV9pc0RpY3Rpb25hcnkpOworICAgIEFTU0VSVCghc3RydWN0
dXJlLT5pc1VuY2FjaGVkRGljdGlvbmFyeSgpKTsKIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRy
YW5zaXRpb24gPSB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKHN0cnVjdHVyZSk7CisgICAgUmVmUHRy
PFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IHRvVW5jYWNoZWREaWN0aW9uYXJ5VHJhbnNpdGlvbihz
dHJ1Y3R1cmUpOwogCiAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cmVtb3ZlKHByb3BlcnR5TmFt
ZSk7CiAKQEAgLTU1NCwyNSArNTU0LDM1IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1
cmU6OmdldHRlclNldHRlclRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgcmV0
dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3Ry
dWN0dXJlOjp0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKQorUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgRGljdGlvbmFyeUtpbmQga2luZCkKIHsKLSAgICBBU1NFUlQoIXN0
cnVjdHVyZS0+bV9pc0RpY3Rpb25hcnkpOwotCisgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzRGlj
dGlvbmFyeSgpKTsKKyAgICAKICAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3Jl
YXRlKHN0cnVjdHVyZS0+bV9wcm90b3R5cGUsIHN0cnVjdHVyZS0+dHlwZUluZm8oKSk7Ci0gICAg
dHJhbnNpdGlvbi0+bV9pc0RpY3Rpb25hcnkgPSB0cnVlOworICAgIHRyYW5zaXRpb24tPm1fZGlj
dGlvbmFyeUtpbmQgPSBraW5kOwogICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7CiAgICAgdHJhbnNp
dGlvbi0+bV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzID0gc3RydWN0dXJlLT5tX2hhc0dldHRl
clNldHRlclByb3BlcnRpZXM7Ci0KKyAgICAKICAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJv
cGVydHlNYXBJZk5lY2Vzc2FyeSgpOwogICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9
IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoKTsKICAgICB0cmFuc2l0aW9uLT5tX2lzUGlu
bmVkUHJvcGVydHlUYWJsZSA9IHRydWU7Ci0KKyAgICAKICAgICByZXR1cm4gdHJhbnNpdGlvbi5y
ZWxlYXNlKCk7CiB9CiAKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvQ2FjaGVk
RGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgcmV0dXJu
IHRvRGljdGlvbmFyeVRyYW5zaXRpb24oc3RydWN0dXJlLCBDYWNoZWREaWN0aW9uYXJ5S2luZCk7
Cit9CisKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvVW5jYWNoZWREaWN0aW9u
YXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICByZXR1cm4gdG9EaWN0
aW9uYXJ5VHJhbnNpdGlvbihzdHJ1Y3R1cmUsIFVuY2FjaGVkRGljdGlvbmFyeUtpbmQpOworfQor
CiBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpmcm9tRGljdGlvbmFyeVRyYW5zaXRp
b24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgQVNTRVJUKHN0cnVjdHVyZS0+bV9pc0Rp
Y3Rpb25hcnkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKTsKIAogICAg
IC8vIFNpbmNlIGRpY3Rpb25hcnkgU3RydWN0dXJlcyBhcmUgbm90IHNoYXJlZCwgYW5kIG5vIG9w
Y29kZXMgc3BlY2lhbGl6ZQogICAgIC8vIGZvciB0aGVtLCB3ZSBkb24ndCBuZWVkIHRvIGFsbG9j
YXRlIGEgbmV3IFN0cnVjdHVyZSB3aGVuIHRyYW5zaXRpb25pbmcKQEAgLTU4MSw3ICs1OTEsNyBA
QCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpmcm9tRGljdGlvbmFyeVRyYW5zaXRp
b24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgLy8gRklNWEU6IFdlIGNhbiBtYWtlIHRoaXMg
bW9yZSBlZmZpY2llbnQgYnkgY2Fub25pY2FsaXppbmcgdGhlIFN0cnVjdHVyZSAoZHJhaW5pbmcg
dGhlCiAgICAgLy8gZGVsZXRlZCBvZmZzZXRzIHZlY3RvcikgYmVmb3JlIHRyYW5zaXRpb25pbmcg
ZnJvbSBkaWN0aW9uYXJ5LiAKICAgICBpZiAoIXN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlIHx8
ICFzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+ZGVsZXRlZE9mZnNldHMgfHwgc3RydWN0dXJl
LT5tX3Byb3BlcnR5VGFibGUtPmRlbGV0ZWRPZmZzZXRzLT5pc0VtcHR5KCkpCi0gICAgICAgIHN0
cnVjdHVyZS0+bV9pc0RpY3Rpb25hcnkgPSBmYWxzZTsKKyAgICAgICAgc3RydWN0dXJlLT5tX2Rp
Y3Rpb25hcnlLaW5kID0gTm9uZURpY3Rpb25hcnlLaW5kOwogCiAgICAgcmV0dXJuIHN0cnVjdHVy
ZTsKIH0KQEAgLTYwMCw3ICs2MTAsNyBAQCBzaXplX3QgU3RydWN0dXJlOjphZGRQcm9wZXJ0eVdp
dGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdQogCiBzaXpl
X3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKLSAgICBBU1NFUlQobV9pc0RpY3Rpb25hcnkpOworICAg
IEFTU0VSVChpc1VuY2FjaGVkRGljdGlvbmFyeSgpKTsKIAogICAgIG1hdGVyaWFsaXplUHJvcGVy
dHlNYXBJZk5lY2Vzc2FyeSgpOwogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCBm
N2NiMDRiLi4zMTkzOWQyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTcwLDcg
KzcwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKFN0cnVjdHVyZSosIGNvbnN0IElkZW50
aWZpZXImKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBhZGRBbm9ueW1v
dXNTbG90c1RyYW5zaXRpb24oU3RydWN0dXJlKiwgdW5zaWduZWQgY291bnQpOwogICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGdldHRlclNldHRlclRyYW5zaXRpb24oU3RydWN0
dXJlKik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9EaWN0aW9uYXJ5
VHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiB0b0NhY2hlZERpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSopOworICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvVW5jYWNoZWREaWN0aW9uYXJ5VHJhbnNpdGlv
bihTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBmcm9t
RGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKik7CiAKICAgICAgICAgflN0cnVjdHVyZSgp
OwpAQCAtODEsOCArODIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHNpemVfdCBhZGRQ
cm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6
ZV90IHJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihK
U1ZhbHVlIHByb3RvdHlwZSkgeyBtX3Byb3RvdHlwZSA9IHByb3RvdHlwZTsgfQotCi0gICAgICAg
IGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9pc0RpY3Rpb25hcnk7IH0KKyAg
ICAgICAgCisgICAgICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWN0
aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFyeUtpbmQ7IH0KKyAgICAgICAgYm9vbCBpc0NhY2hl
ZERpY3Rpb25hcnkoKSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnlLaW5kID09IENhY2hlZERp
Y3Rpb25hcnlLaW5kOyB9CisgICAgICAgIGJvb2wgaXNVbmNhY2hlZERpY3Rpb25hcnkoKSBjb25z
dCB7IHJldHVybiBtX2RpY3Rpb25hcnlLaW5kID09IFVuY2FjaGVkRGljdGlvbmFyeUtpbmQ7IH0K
IAogICAgICAgICBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8oKSBjb25zdCB7IHJldHVybiBtX3R5
cGVJbmZvOyB9CiAKQEAgLTEyNyw2ICsxMzAsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBTdHJ1Y3R1cmUoSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJ
bmZvJik7CisgICAgICAgIAorICAgICAgICB0eXBlZGVmIGVudW0geyAKKyAgICAgICAgICAgIE5v
bmVEaWN0aW9uYXJ5S2luZCA9IDAsCisgICAgICAgICAgICBDYWNoZWREaWN0aW9uYXJ5S2luZCA9
IDEsCisgICAgICAgICAgICBVbmNhY2hlZERpY3Rpb25hcnlLaW5kID0gMgorICAgICAgICB9IERp
Y3Rpb25hcnlLaW5kOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvRGlj
dGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCiAgICAgICAg
IHNpemVfdCBwdXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXplX3QgcmVtb3ZlKGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CkBAIC0xODcsNyArMTk3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHNpemVfdCBtX3Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5OwogICAg
ICAgICBzaWduZWQgY2hhciBtX29mZnNldDsKIAotICAgICAgICBib29sIG1faXNEaWN0aW9uYXJ5
IDogMTsKKyAgICAgICAgdW5zaWduZWQgbV9kaWN0aW9uYXJ5S2luZCA6IDI7CiAgICAgICAgIGJv
b2wgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgOiAxOwogICAgICAgICBib29sIG1faGFzR2V0dGVy
U2V0dGVyUHJvcGVydGllcyA6IDE7CiAjaWYgQ09NUElMRVIoV0lOU0NXKQpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5jcHAgYi9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAppbmRleCBlYjU3YTVhLi42ZThhMGVlIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAorKysgYi9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcApAQCAtNTEsNiArNTEsNyBA
QCBib29sIFN0cnVjdHVyZUNoYWluOjppc0NhY2hlYWJsZSgpIGNvbnN0CiAgICAgdWludDMyX3Qg
aSA9IDA7CiAgICAgCiAgICAgd2hpbGUgKG1fdmVjdG9yW2ldKSB7CisgICAgICAgIC8vIEJvdGgg
Y2xhc3NlcyBvZiBkaWN0aW9uYXJ5IHN0cnVjdHVyZSBtYXkgY2hhbmdlIGFyYml0cmFyaWx5IHNv
IHdlIGNhbid0IGNhY2hlIHRoZW0KICAgICAgICAgaWYgKG1fdmVjdG9yW2ldLT5pc0RpY3Rpb25h
cnkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFtX3ZlY3Rvcltp
KytdLT50eXBlSW5mbygpLmhhc0RlZmF1bHRHZXRQcm9wZXJ0eU5hbWVzKCkp
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39840</attachid>
            <date>2009-09-20 22:15:23 -0700</date>
            <delta_ts>2009-09-21 07:45:49 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-29534-20090920221521.patch</filename>
            <type>text/plain</type>
            <size>17654</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBlMzA3OWU5Li45YjBiMzUxIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEg
QEAKKzIwMDktMDktMjAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTTkVTIGlzIHRvbyBzbG93
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTUzNAor
CisgICAgICAgIFRoZSBwcm9ibGVtIHdhcyB0aGF0IHRoZSBlbXVsYXRvciB1c2VkIG11bHRpcGxl
IGNsYXNzZXMgd2l0aAorICAgICAgICBtb3JlIHByb3BlcnRpZXMgdGhhbiBvdXIgZGljdGlvbmFy
eSBjdXRvZmYgYWxsb3dlZCwgdGhpcyByZXN1bHRlZAorICAgICAgICBpbiBtb3JlIG9yIGxlc3Mg
YWxsIGNyaXRpY2FsIGxvZ2ljIGluc2lkZSB0aGUgZW11bGF0b3IgcmVxdWlyaW5nCisgICAgICAg
IHVuY2FjaGVkIHByb3BlcnR5IGFjY2Vzcy4KKworICAgICAgICBSYXRoZXIgdGhhbiBzaW1wbHkg
YnVtcGluZyB0aGUgZGljdGlvbmFyeSBjdXRvZmYsIHRoaXMgcGF0Y2gKKyAgICAgICAgcmVjb2du
aXNlcyB0aGF0IHRoZXJlIGFyZSB0d28gd2F5cyB0byBjcmVhdGUgYSAiZGljdGlvbmFyeSIKKyAg
ICAgICAgc3RydWN0dXJlLiAgRWl0aGVyIGJ5IGFkZGluZyBhIGxhcmdlIG51bWJlciBvZiBwcm9w
ZXJ0aWVzLCBvcgorICAgICAgICBieSByZW1vdmluZyBhIHByb3BlcnR5LiAgSW4gdGhlIGNhc2Ug
b2YgYWRkaW5nIHByb3BlcnRpZXMgd2UKKyAgICAgICAga25vdyBhbGwgdGhlIGV4aXN0aW5nIHBy
b3BlcnRpZXMgd2lsbCBtYWludGFpbiB0aGVpciBleGlzdGluZworICAgICAgICBvZmZzZXRzLCBz
byB3ZSBjb3VsZCBjYWNoZSBhY2Nlc3MgdG8gdGhvc2UgcHJvcGVydGllcywgaWYgd2UKKyAgICAg
ICAga25vdyB0aGV5IHdvbid0IGJlIHJlbW92ZWQuCisKKyAgICAgICAgVG8gbWFrZSB0aGlzIHBv
c3NpYmxlLCB0aGlzIHBhdGNoIGFkZHMgdGhlIGxvZ2ljIHJlcXVpcmVkIHRvCisgICAgICAgIGRp
c3Rpbmd1aXNoIGEgZGljdGlvbmFyeSBjcmVhdGVkIGJ5IGFkZGl0aW9uIGZyb20gb25lIGNyZWF0
ZWQKKyAgICAgICAgYnkgcmVtb3ZhbC4gIFdpdGggdGhpcyBsb2dpYyBpbiBwbGFjZSB3ZSBjYW4g
bm93IGNhY2hlIGFjY2VzcworICAgICAgICB0byBvYmplY3RzIHdpdGggbGFyZ2UgbnVtYmVycyBv
ZiBwcm9wZXJ0aWVzLgorCisgICAgICAgIFNORVMgcGVyZm9ybWFuY2UgaW1wcm92ZWQgYnkgbW9y
ZSB0aGFuIDZ4LgorCisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAg
ICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cmVzb2x2ZUdsb2JhbCk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjp0cnlDYWNoZVB1dEJ5SUQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAo
SlNDOjpKSVRUaHVua3M6OnRyeUNhY2hlUHV0QnlJRCk6CisgICAgICAgIChKU0M6OkpJVFRodW5r
czo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04p
OgorICAgICAgICAqIHJ1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaDoKKyAgICAg
ICAgKEpTQzo6QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXI6OkJhdGNoZWRUcmFuc2l0aW9uT3B0
aW1pemVyKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6
SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6Z2V0RW51bWVyYWJsZVByb3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZSk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnRvRGljdGlvbmFyeVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6
OnRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1
cmU6OnRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6ZnJvbURpY3Rpb25hcnlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzRGljdGlvbmFyeSk6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZTo6aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkpOgorICAgICAg
ICAoSlNDOjpTdHJ1Y3R1cmU6Oik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5j
cHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZUNoYWluOjppc0NhY2hlYWJsZSk6CisKIDIwMDkt
MDktMTkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBNYWNpZWogU3RhY2hvd2lhay4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcCBiL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAppbmRleCBkZGE2NjdlLi42MjQ4MzJjIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgTkVWRVJfSU5MSU5F
IGJvb2wgSW50ZXJwcmV0ZXI6OnJlc29sdmVHbG9iYWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIElu
c3RydWN0aW9uKgogICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCk7CiAgICAgaWYg
KGdsb2JhbE9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGNhbGxGcmFtZSwgaWRlbnQsIHNsb3QpKSB7
CiAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShjYWxsRnJhbWUsIGlkZW50
KTsKLSAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVj
dCkgeworICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZSgpICYmICFnbG9iYWxPYmplY3QtPnN0
cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9
PSBnbG9iYWxPYmplY3QpIHsKICAgICAgICAgICAgIGlmICh2UENbNF0udS5zdHJ1Y3R1cmUpCiAg
ICAgICAgICAgICAgICAgdlBDWzRdLnUuc3RydWN0dXJlLT5kZXJlZigpOwogICAgICAgICAgICAg
Z2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+cmVmKCk7CkBAIC05NTMsNyArOTUzLDcgQEAgTkVW
RVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlUHV0QnlJRChDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgQ29kZUJsb2NrKgogICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBhc0NlbGwoYmFzZVZh
bHVlKTsKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsK
IAotICAgIGlmIChzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgaWYgKHN0cnVjdHVy
ZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSkgewogICAgICAgICB2UENbMF0gPSBnZXRPcGNv
ZGUob3BfcHV0X2J5X2lkX2dlbmVyaWMpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTA0
MCw3ICsxMDQwLDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgSW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0
QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKgogCiAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBhc0NlbGwoYmFzZVZhbHVlKS0+c3RydWN0dXJlKCk7CiAKLSAgICBpZiAoc3Ry
dWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgIGlmIChzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFi
bGVEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgdlBDWzBdID0gZ2V0T3Bjb2RlKG9wX2dldF9ieV9p
ZF9nZW5lcmljKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3Bw
CmluZGV4IDU4MTUxNzUuLjcwMGQyYzkgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtNjc5
LDcgKzY3OSw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEpJVFRodW5rczo6dHJ5Q2FjaGVQdXRCeUlE
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvCiAgICAgSlNDZWxsKiBiYXNlQ2Vs
bCA9IGFzQ2VsbChiYXNlVmFsdWUpOwogICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNl
bGwtPnN0cnVjdHVyZSgpOwogCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsK
KyAgICBpZiAoc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKSB7CiAgICAgICAg
IGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjb2RlQmxvY2ssIHJldHVybkFkZHJlc3MsIEZ1
bmN0aW9uUHRyKGN0aV9vcF9wdXRfYnlfaWRfZ2VuZXJpYykpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNzQzLDcgKzc0Myw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEpJVFRodW5rczo6dHJ5
Q2FjaGVHZXRCeUlEKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqIGNvCiAgICAgSlND
ZWxsKiBiYXNlQ2VsbCA9IGFzQ2VsbChiYXNlVmFsdWUpOwogICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOwogCi0gICAgaWYgKHN0cnVjdHVyZS0+aXNEaWN0
aW9uYXJ5KCkpIHsKKyAgICBpZiAoc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgp
KSB7CiAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhjb2RlQmxvY2ssIHJldHVy
bkFkZHJlc3MsIEZ1bmN0aW9uUHRyKGN0aV9vcF9nZXRfYnlfaWRfZ2VuZXJpYykpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTE1NCw3ICsxMTU0LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJ
T04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9tZXRob2RfY2hlY2spCiAgICAgSlNPYmpl
Y3QqIHNsb3RCYXNlT2JqZWN0OwogICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKICAgICAgICAg
JiYgc2xvdC5pc0NhY2hlYWJsZSgpCi0gICAgICAgICYmICEoc3RydWN0dXJlID0gYXNDZWxsKGJh
c2VWYWx1ZSktPnN0cnVjdHVyZSgpKS0+aXNEaWN0aW9uYXJ5KCkKKyAgICAgICAgJiYgIShzdHJ1
Y3R1cmUgPSBhc0NlbGwoYmFzZVZhbHVlKS0+c3RydWN0dXJlKCkpLT5pc1VuY2FjaGVhYmxlRGlj
dGlvbmFyeSgpCiAgICAgICAgICYmIChzbG90QmFzZU9iamVjdCA9IGFzT2JqZWN0KHNsb3Quc2xv
dEJhc2UoKSkpLT5nZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoY2FsbEZyYW1lLCBpZGVudCwgc3Bl
Y2lmaWMpCiAgICAgICAgICYmIHNwZWNpZmljCiAgICAgICAgICkgewpAQCAtMTIyOCw3ICsxMjI4
LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9z
ZWxmX2ZhaWwpCiAKICAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCiAgICAgICAgICYmIHNsb3Qu
aXNDYWNoZWFibGUoKQotICAgICAgICAmJiAhYXNDZWxsKGJhc2VWYWx1ZSktPnN0cnVjdHVyZSgp
LT5pc0RpY3Rpb25hcnkoKQorICAgICAgICAmJiAhYXNDZWxsKGJhc2VWYWx1ZSktPnN0cnVjdHVy
ZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCiAgICAgICAgICYmIHNsb3Quc2xvdEJhc2Uo
KSA9PSBiYXNlVmFsdWUpIHsKIAogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0xMjk5LDcgKzEyOTksNyBAQCBERUZJTkVfU1RVQl9GVU5D
VElPTihFbmNvZGVkSlNWYWx1ZSwgb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpCiAKICAgICBDSEVD
S19GT1JfRVhDRVBUSU9OKCk7CiAKLSAgICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwoKSB8fCAhc2xv
dC5pc0NhY2hlYWJsZSgpIHx8IGFzQ2VsbChiYXNlVmFsdWUpLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0
aW9uYXJ5KCkpIHsKKyAgICBpZiAoIWJhc2VWYWx1ZS5pc0NlbGwoKSB8fCAhc2xvdC5pc0NhY2hl
YWJsZSgpIHx8IGFzQ2VsbChiYXNlVmFsdWUpLT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKSkgewogICAgICAgICBjdGlQYXRjaENhbGxCeVJldHVybkFkZHJlc3MoY2FsbEZy
YW1lLT5jb2RlQmxvY2soKSwgU1RVQl9SRVRVUk5fQUREUkVTUywgRnVuY3Rpb25QdHIoY3RpX29w
X2dldF9ieV9pZF9wcm90b19mYWlsKSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKICAgICB9CkBAIC0yMTg4LDcgKzIxODgsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElP
TihFbmNvZGVkSlNWYWx1ZSwgb3BfcmVzb2x2ZV9nbG9iYWwpCiAgICAgUHJvcGVydHlTbG90IHNs
b3QoZ2xvYmFsT2JqZWN0KTsKICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3Qo
Y2FsbEZyYW1lLCBpZGVudCwgc2xvdCkpIHsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90
LmdldFZhbHVlKGNhbGxGcmFtZSwgaWRlbnQpOwotICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJs
ZSgpICYmICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSAmJiBzbG90
LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVh
YmxlKCkgJiYgIWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9u
YXJ5KCkgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgewogICAgICAgICAgICAg
R2xvYmFsUmVzb2x2ZUluZm8mIGdsb2JhbFJlc29sdmVJbmZvID0gY2FsbEZyYW1lLT5jb2RlQmxv
Y2soKS0+Z2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVzb2x2ZUluZm9JbmRleCk7CiAgICAgICAg
ICAgICBpZiAoZ2xvYmFsUmVzb2x2ZUluZm8uc3RydWN0dXJlKQogICAgICAgICAgICAgICAgIGds
b2JhbFJlc29sdmVJbmZvLnN0cnVjdHVyZS0+ZGVyZWYoKTsKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBiL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaAppbmRleCBiOWY3MzhmLi45
MjlhNWU3IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNp
dGlvbk9wdGltaXplci5oCkBAIC0zOCw3ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgOiBtX29iamVjdChvYmplY3QpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9v
YmplY3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkKLSAgICAgICAgICAgICAgICBtX29i
amVjdC0+c2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihtX29i
amVjdC0+c3RydWN0dXJlKCkpKTsKKyAgICAgICAgICAgICAgICBtX29iamVjdC0+c2V0U3RydWN0
dXJlKFN0cnVjdHVyZTo6dG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihtX29iamVjdC0+
c3RydWN0dXJlKCkpKTsKICAgICAgICAgfQogCiAgICAgICAgIH5CYXRjaGVkVHJhbnNpdGlvbk9w
dGltaXplcigpCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNw
cCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDhjMTRmZGQuLjc0
YWY0YjEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisr
KyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC00NzEsNyArNDcxLDcg
QEAgSlNPYmplY3QqIEpTT2JqZWN0Ojp1bndyYXBwZWRPYmplY3QoKQogdm9pZCBKU09iamVjdDo6
cmVtb3ZlRGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKICAgICBzaXpl
X3Qgb2Zmc2V0OwotICAgIGlmIChtX3N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICBp
ZiAobV9zdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgb2Zm
c2V0ID0gbV9zdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24ocHJvcGVy
dHlOYW1lKTsKICAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQogICAgICAgICAg
ICAgcHV0RGlyZWN0T2Zmc2V0KG9mZnNldCwganNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQgYS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMzRjMjdiNy4uMDVlNTM5ZiAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIFN0cnVjdHVyZTo6U3RydWN0
dXJlKEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYgdHlwZUluZm8pCiAgICAgLCBt
X3Byb3BlcnR5VGFibGUoMCkKICAgICAsIG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoSlNPYmpl
Y3Q6OmlubGluZVN0b3JhZ2VDYXBhY2l0eSkKICAgICAsIG1fb2Zmc2V0KG5vT2Zmc2V0KQotICAg
ICwgbV9pc0RpY3Rpb25hcnkoZmFsc2UpCisgICAgLCBtX2RpY3Rpb25hcnlLaW5kKE5vbmVEaWN0
aW9uYXJ5S2luZCkKICAgICAsIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKGZhbHNlKQogICAgICwg
bV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKGZhbHNlKQogICAgICwgbV9hdHRyaWJ1dGVzSW5Q
cmV2aW91cygwKQpAQCAtMjkwLDcgKzI5MCw3IEBAIHZvaWQgU3RydWN0dXJlOjpnZXRPd25FbnVt
ZXJhYmxlUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5CiAK
IHZvaWQgU3RydWN0dXJlOjpnZXRFbnVtZXJhYmxlUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBKU09iamVjdCogYmFzZU9iamVj
dCkKIHsKLSAgICBib29sIHNob3VsZENhY2hlID0gcHJvcGVydHlOYW1lcy5zaG91bGRDYWNoZSgp
ICYmICEocHJvcGVydHlOYW1lcy5zaXplKCkgfHwgbV9pc0RpY3Rpb25hcnkpOworICAgIGJvb2wg
c2hvdWxkQ2FjaGUgPSBwcm9wZXJ0eU5hbWVzLnNob3VsZENhY2hlKCkgJiYgIShwcm9wZXJ0eU5h
bWVzLnNpemUoKSB8fCBpc0RpY3Rpb25hcnkoKSk7CiAKICAgICBpZiAoc2hvdWxkQ2FjaGUgJiYg
bV9jYWNoZWRQcm9wZXJ0eU5hbWVBcnJheURhdGEpIHsKICAgICAgICAgaWYgKG1fY2FjaGVkUHJv
cGVydHlOYW1lQXJyYXlEYXRhLT5jYWNoZWRQcm90b3R5cGVDaGFpbigpID09IHByb3RvdHlwZUNo
YWluKGV4ZWMpKSB7CkBAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lm
eURpY3Rpb25hcnlGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiAKICAg
ICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoKTsKIAotICAgIEFTU0VSVChtX2lz
RGljdGlvbmFyeSk7CisgICAgQVNTRVJUKGlzRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQobV9w
cm9wZXJ0eVRhYmxlKTsKIAogICAgIHVuc2lnbmVkIGkgPSByZXAtPmNvbXB1dGVkSGFzaCgpOwpA
QCAtMzkxLDcgKzM5MSw3IEBAIHZvaWQgU3RydWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVu
Y3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogCiBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJl
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQp
CiB7Ci0gICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1faXNEaWN0aW9uYXJ5KTsKKyAgICBBU1NFUlQo
IXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkudHlwZSgpID09IE9iamVjdFR5cGUpOwogCiAgICAgaWYgKFN0cnVjdHVyZSogZXhpc3Rp
bmdUcmFuc2l0aW9uID0gc3RydWN0dXJlLT50YWJsZS5nZXQobWFrZV9wYWlyKHByb3BlcnR5TmFt
ZS51c3RyaW5nKCkucmVwKCksIGF0dHJpYnV0ZXMpLCBzcGVjaWZpY1ZhbHVlKSkgewpAQCAtNDA1
LDEyICs0MDUsMTIgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6YWRkUHJvcGVy
dHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZShTdHJ1Y3QKIAogUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0
dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpCiB7Ci0gICAgQVNTRVJUKCFz
dHJ1Y3R1cmUtPm1faXNEaWN0aW9uYXJ5KTsKKyAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNEaWN0
aW9uYXJ5KCkpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IE9i
amVjdFR5cGUpOwogICAgIEFTU0VSVCghU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25U
b0V4aXN0aW5nU3RydWN0dXJlKHN0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY1ZhbHVlLCBvZmZzZXQpKTsKIAogICAgIGlmIChzdHJ1Y3R1cmUtPnRyYW5zaXRpb25D
b3VudCgpID4gc19tYXhUcmFuc2l0aW9uTGVuZ3RoKSB7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+IHRyYW5zaXRpb24gPSB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKHN0cnVjdHVyZSk7CisgICAg
ICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSB0b0NhY2hlYWJsZURpY3Rpb25hcnlU
cmFuc2l0aW9uKHN0cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gdHJhbnNp
dGlvbik7CiAgICAgICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnB1dChwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVy
dHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkK
QEAgLTQ1NCw5ICs0NTQsOSBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbgogCiBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZz
ZXQpCiB7Ci0gICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1faXNEaWN0aW9uYXJ5KTsKKyAgICBBU1NF
UlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAKLSAgICBSZWZQdHI8
U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gdG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihzdHJ1Y3R1cmUp
OworICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSB0b1VuY2FjaGVhYmxlRGljdGlv
bmFyeVRyYW5zaXRpb24oc3RydWN0dXJlKTsKIAogICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnJl
bW92ZShwcm9wZXJ0eU5hbWUpOwogCkBAIC01NTQsMjUgKzU1NCwzNSBAQCBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gU3RydWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQogICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvRGljdGlvbmFy
eVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERpY3Rpb25hcnlLaW5kIGtpbmQpCiB7
Ci0gICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1faXNEaWN0aW9uYXJ5KTsKLQorICAgIEFTU0VSVCgh
c3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSk7CisgICAgCiAgICAgUmVmUHRyPFN0cnVjdHVyZT4g
dHJhbnNpdGlvbiA9IGNyZWF0ZShzdHJ1Y3R1cmUtPm1fcHJvdG90eXBlLCBzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkpOwotICAgIHRyYW5zaXRpb24tPm1faXNEaWN0aW9uYXJ5ID0gdHJ1ZTsKKyAgICB0
cmFuc2l0aW9uLT5tX2RpY3Rpb25hcnlLaW5kID0ga2luZDsKICAgICB0cmFuc2l0aW9uLT5tX3By
b3BlcnR5U3RvcmFnZUNhcGFjaXR5ID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5U3RvcmFnZUNhcGFj
aXR5OwogICAgIHRyYW5zaXRpb24tPm1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyA9IHN0cnVj
dHVyZS0+bV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzOwotCisgICAgCiAgICAgc3RydWN0dXJl
LT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoKTsKICAgICB0cmFuc2l0aW9uLT5t
X3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKCk7CiAgICAgdHJh
bnNpdGlvbi0+bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgPSB0cnVlOwotCisgICAgCiAgICAgcmV0
dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOwogfQogCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3Ry
dWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0
dXJlKQoreworICAgIHJldHVybiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKHN0cnVjdHVyZSwgQ2Fj
aGVkRGljdGlvbmFyeUtpbmQpOworfQorCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJl
Ojp0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
Cit7CisgICAgcmV0dXJuIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oc3RydWN0dXJlLCBVbmNhY2hl
ZERpY3Rpb25hcnlLaW5kKTsKK30KKwogUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6
ZnJvbURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIEFT
U0VSVChzdHJ1Y3R1cmUtPm1faXNEaWN0aW9uYXJ5KTsKKyAgICBBU1NFUlQoc3RydWN0dXJlLT5p
c0RpY3Rpb25hcnkoKSk7CiAKICAgICAvLyBTaW5jZSBkaWN0aW9uYXJ5IFN0cnVjdHVyZXMgYXJl
IG5vdCBzaGFyZWQsIGFuZCBubyBvcGNvZGVzIHNwZWNpYWxpemUKICAgICAvLyBmb3IgdGhlbSwg
d2UgZG9uJ3QgbmVlZCB0byBhbGxvY2F0ZSBhIG5ldyBTdHJ1Y3R1cmUgd2hlbiB0cmFuc2l0aW9u
aW5nCkBAIC01ODEsNyArNTkxLDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6
ZnJvbURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgIC8vIEZJ
TVhFOiBXZSBjYW4gbWFrZSB0aGlzIG1vcmUgZWZmaWNpZW50IGJ5IGNhbm9uaWNhbGl6aW5nIHRo
ZSBTdHJ1Y3R1cmUgKGRyYWluaW5nIHRoZQogICAgIC8vIGRlbGV0ZWQgb2Zmc2V0cyB2ZWN0b3Ip
IGJlZm9yZSB0cmFuc2l0aW9uaW5nIGZyb20gZGljdGlvbmFyeS4gCiAgICAgaWYgKCFzdHJ1Y3R1
cmUtPm1fcHJvcGVydHlUYWJsZSB8fCAhc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmRlbGV0
ZWRPZmZzZXRzIHx8IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5kZWxldGVkT2Zmc2V0cy0+
aXNFbXB0eSgpKQotICAgICAgICBzdHJ1Y3R1cmUtPm1faXNEaWN0aW9uYXJ5ID0gZmFsc2U7Cisg
ICAgICAgIHN0cnVjdHVyZS0+bV9kaWN0aW9uYXJ5S2luZCA9IE5vbmVEaWN0aW9uYXJ5S2luZDsK
IAogICAgIHJldHVybiBzdHJ1Y3R1cmU7CiB9CkBAIC02MDAsNyArNjEwLDcgQEAgc2l6ZV90IFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIHUKIAogc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0
VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgQVNTRVJU
KG1faXNEaWN0aW9uYXJ5KTsKKyAgICBBU1NFUlQoaXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7
CiAKICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoKTsKIApkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggZjdjYjA0Yi4uZWQ5ZjZlNSAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCkBAIC03MCw3ICs3MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlv
bihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gYWRkQW5vbnltb3VzU2xvdHNUcmFuc2l0aW9uKFN0cnVjdHVyZSosIHVu
c2lnbmVkIGNvdW50KTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBnZXR0
ZXJTZXR0ZXJUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IHRvRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKik7CisgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNp
dGlvbihTdHJ1Y3R1cmUqKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0
b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKik7CiAgICAgICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZnJvbURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVj
dHVyZSopOwogCiAgICAgICAgIH5TdHJ1Y3R1cmUoKTsKQEAgLTgxLDggKzgyLDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IHJlbW92ZVByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBz
ZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihKU1ZhbHVlIHByb3RvdHlwZSkgeyBtX3Byb3Rv
dHlwZSA9IHByb3RvdHlwZTsgfQotCi0gICAgICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29uc3Qg
eyByZXR1cm4gbV9pc0RpY3Rpb25hcnk7IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgaXNEaWN0
aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFy
eUtpbmQ7IH0KKyAgICAgICAgYm9vbCBpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGljdGlvbmFyeUtpbmQgPT0gVW5jYWNoZWREaWN0aW9uYXJ5S2luZDsgfQogCiAg
ICAgICAgIGNvbnN0IFR5cGVJbmZvJiB0eXBlSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZUlu
Zm87IH0KIApAQCAtMTI3LDYgKzEyOSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZh
dGU6CiAgICAgICAgIFN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8m
KTsKKyAgICAgICAgCisgICAgICAgIHR5cGVkZWYgZW51bSB7IAorICAgICAgICAgICAgTm9uZURp
Y3Rpb25hcnlLaW5kID0gMCwKKyAgICAgICAgICAgIENhY2hlZERpY3Rpb25hcnlLaW5kID0gMSwK
KyAgICAgICAgICAgIFVuY2FjaGVkRGljdGlvbmFyeUtpbmQgPSAyCisgICAgICAgIH0gRGljdGlv
bmFyeUtpbmQ7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9EaWN0aW9u
YXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBEaWN0aW9uYXJ5S2luZCk7CiAKICAgICAgICAgc2l6
ZV90IHB1dChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIHNpemVfdCByZW1vdmUoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKQEAgLTE4Nyw3ICsxOTYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgc2l6ZV90IG1fcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHk7CiAgICAgICAg
IHNpZ25lZCBjaGFyIG1fb2Zmc2V0OwogCi0gICAgICAgIGJvb2wgbV9pc0RpY3Rpb25hcnkgOiAx
OworICAgICAgICB1bnNpZ25lZCBtX2RpY3Rpb25hcnlLaW5kIDogMjsKICAgICAgICAgYm9vbCBt
X2lzUGlubmVkUHJvcGVydHlUYWJsZSA6IDE7CiAgICAgICAgIGJvb2wgbV9oYXNHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzIDogMTsKICNpZiBDT01QSUxFUihXSU5TQ1cpCmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCmluZGV4IGViNTdhNWEuLjZlOGEwZWUgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uY3BwCkBAIC01MSw2ICs1MSw3IEBAIGJv
b2wgU3RydWN0dXJlQ2hhaW46OmlzQ2FjaGVhYmxlKCkgY29uc3QKICAgICB1aW50MzJfdCBpID0g
MDsKICAgICAKICAgICB3aGlsZSAobV92ZWN0b3JbaV0pIHsKKyAgICAgICAgLy8gQm90aCBjbGFz
c2VzIG9mIGRpY3Rpb25hcnkgc3RydWN0dXJlIG1heSBjaGFuZ2UgYXJiaXRyYXJpbHkgc28gd2Ug
Y2FuJ3QgY2FjaGUgdGhlbQogICAgICAgICBpZiAobV92ZWN0b3JbaV0tPmlzRGljdGlvbmFyeSgp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIW1fdmVjdG9yW2krK10t
PnR5cGVJbmZvKCkuaGFzRGVmYXVsdEdldFByb3BlcnR5TmFtZXMoKSk=
</data>

          </attachment>
      

    </bug>

</bugzilla>