<?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>74718</bug_id>
          
          <creation_ts>2011-12-16 07:23:33 -0800</creation_ts>
          <short_desc>Remove the `value&apos; argument to op_push_new_scope</short_desc>
          <delta_ts>2012-03-24 12:07:53 -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>INVALID</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>74708</dependson>
          <blocked>74725</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Andy Wingo">wingo</reporter>
          <assigned_to name="Andy Wingo">wingo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>522747</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-16 07:23:33 -0800</bug_when>
    <thetext>Quoth the changelog:

        For exception scopes, instead of pushing a scope with a value
        already set in it, push a fresh scope and use op_put_scoped_var to
        bind the var.  This will allow op_push_new_scope to be used for
        multi-variable scopes, like ES6 block scopes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522748</commentid>
    <comment_count>1</comment_count>
      <attachid>119611</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-16 07:25:37 -0800</bug_when>
    <thetext>Created attachment 119611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522749</commentid>
    <comment_count>2</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-16 07:26:54 -0800</bug_when>
    <thetext>Depends on earlier work.  Next patch finally adds block scope, though without temporal dead zones.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522774</commentid>
    <comment_count>3</comment_count>
      <attachid>119620</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-16 09:22:16 -0800</bug_when>
    <thetext>Created attachment 119620
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>522776</commentid>
    <comment_count>4</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-16 09:23:10 -0800</bug_when>
    <thetext>New patch introduces a new helper, BytecodeGenerator::emitInitializeBlockScopedLocal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524349</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-19 18:11:09 -0800</bug_when>
    <thetext>It&apos;s not sound to use the same mechanism for block scope as we currently use for catch. Catch is rare, and already slow, so it&apos;s OK that catch requires an object allocation and scope chain push/pop. But if &quot;let is the new var&quot;, it&apos;s not acceptable to allocate a new scope object and push/pop the head of the scope chain every time you enter/exit a let scope. We want a new solution that distinguishes between variables that are captured and variables that aren&apos;t, allocates uncultured variables on the stack, and tears of captured variables as needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524784</commentid>
    <comment_count>6</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-12-20 13:21:36 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; It&apos;s not sound to use the same mechanism for block scope as we currently use for catch. Catch is rare, and already slow, so it&apos;s OK that catch requires an object allocation and scope chain push/pop. But if &quot;let is the new var&quot;, it&apos;s not acceptable to allocate a new scope object and push/pop the head of the scope chain every time you enter/exit a let scope. We want a new solution that distinguishes between variables that are captured and variables that aren&apos;t, allocates uncultured variables on the stack, and tears of captured variables as needed.

Hey Geoff,

Actually I think Andy&apos;s approach may be the right one here.  For scopes that contain captured let/const variables we&apos;re going to potentially need multiple copies of the value, each with share-by-reference semantics between a set of closures (basically the same as catch, which is by intention).  Clearly for the common case where values are not captured we will want something that is more optimal, but I think it makes sense to develop the correct and compete form first, and then optimize.

By landing a scope based mechanism first, we can get this checked in (disabled by default, but being switched on in some cases by DRT to test it) with layout tests checking for correct behavior – and then add the complexity of a mechanism to optimize let/const values that are not captured to regular locals (also perhaps merging nested block scopes where safe - particularly it may make sense to merge outer scopes into the activation).

Having a functional (but not yet optimal) implementation for const will also allow us to answer another question, which is that we&apos;d like to be able to test enabling this in place of the existing const implementation would be compatibility with the web (if so we&apos;ll only need to support one set of semantics going forwards).

What are your thoughts? - we could implement this the other way around - we could start out by treating let/const as a block-scoped version of locals with var-like capture semantics, and then bolt on a scope-based mechanism to handle correct capture semantics, but that seems less desirable to me.

G.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524863</commentid>
    <comment_count>7</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-12-20 15:09:00 -0800</bug_when>
    <thetext>Andy, I&apos;m really worried that you&apos;ll have to redo most of this code once you start considering performance issues -- eager vs lazy tear-off, optimizing out uncaptured lets, merging captured lets, etc. 

That said, Gavin, I guess I don&apos;t want to let my worry stand in the way of a first-cut implementation, if you think the approach is sound. 

&gt; 1944            generator.emitPushBlockScope(generator.newTemporary(), scopeTemplate);
&gt; 1945            generator.emitInitializeBlockScopedLocal(m_exceptionIdent, exceptionRegister.get());

Building on the refactoring I suggested in bug 74708, I think this would be clearer as:

emitPushBlockScope(...)
ResolveResult result = resolve(...)
emitPutScopedVar(result, m_exceptionIdent, exceptionRegister.get())

Then you can get rid of emitInitializeBlockScopedLocal(). As long as you&apos;re not optimizing for let yet, you should avoid, as much as possible, building let-specific functionality into the bytecompiler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524935</commentid>
    <comment_count>8</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-12-20 16:21:30 -0800</bug_when>
    <thetext>Actually I think you have a really good point about eager vs lazy tear-off – I hadn&apos;t considered that.  I think the other issues can be treated as optimizations to be added, but we should probably make tear-off lazy from the start.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525578</commentid>
    <comment_count>9</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2011-12-21 14:24:05 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Andy, I&apos;m really worried that you&apos;ll have to redo most of this code once you start considering performance issues -- eager vs lazy tear-off, optimizing out uncaptured lets, merging captured lets, etc. 

I agree that there are many places where optimizations can be made.  The read barrier will also complicate things.  At some point it might make sense to implement display closures, too.  Still, though, the mechanism is similar enough to `catch&apos; (modulo read barriers) that it does seem like a path to a correct implementation, that can be incrementally turned into a fast implementation in many common cases.

Using JSStaticScope also has the advantage that the code can be tested, even in the absence of ENABLE(HARMONY) or ENABLE(ES6_BLOCK_SCOPE) or whatever.

If you or Gavin gets a chance, I would appreciate a few words on lazy tear-off; it is not something that I ran into yet.

&gt; emitPushBlockScope(...)
&gt; ResolveResult result = resolve(...)
&gt; emitPutScopedVar(result, m_exceptionIdent, exceptionRegister.get())

Will do.

&gt; Then you can get rid of emitInitializeBlockScopedLocal(). As long as you&apos;re not optimizing for let yet, you should avoid, as much as possible, building let-specific functionality into the bytecompiler.

Sure.  Note that in ES6, const also has block scope.  And, the catch-bound var and the name of a named function expression also have block scope.  But I like your suggested refactor anyway.

Regards,

Andy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537980</commentid>
    <comment_count>10</comment_count>
      <attachid>122961</attachid>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-01-18 10:36:50 -0800</bug_when>
    <thetext>Created attachment 122961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>582996</commentid>
    <comment_count>11</comment_count>
    <who name="Andy Wingo">wingo</who>
    <bug_when>2012-03-20 06:10:01 -0700</bug_when>
    <thetext>Marking as invalid, given that bug 74708 seems to be subsuming these micro-changes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119611</attachid>
            <date>2011-12-16 07:25:37 -0800</date>
            <delta_ts>2011-12-16 09:22:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74718-20111216162535.patch</filename>
            <type>text/plain</type>
            <size>10760</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyOTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZTEyNGQ2MDA5YWEwN2RiNmQxZmE0ZGUxZDk3MGE3YWQ4MzJlNjA2Li5jNjdmNzk2ZDFhOGI4Njc2
ZjFkYjc4NGUxMTQxODQ5YzdjODcyMTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzOCBAQAogMjAxMS0xMi0xNiAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CiAK
KyAgICAgICAgUmVtb3ZlIHRoZSBgdmFsdWUnIGFyZ3VtZW50IHRvIG9wX3B1c2hfbmV3X3Njb3Bl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDcxOAor
CisgICAgICAgIEZvciBleGNlcHRpb24gc2NvcGVzLCBpbnN0ZWFkIG9mIHB1c2hpbmcgYSBzY29w
ZSB3aXRoIGEgdmFsdWUKKyAgICAgICAgYWxyZWFkeSBzZXQgaW4gaXQsIHB1c2ggYSBmcmVzaCBz
Y29wZSBhbmQgdXNlIG9wX3B1dF9zY29wZWRfdmFyIHRvCisgICAgICAgIGJpbmQgdGhlIHZhci4g
IFRoaXMgd2lsbCBhbGxvdyBvcF9wdXNoX25ld19zY29wZSB0byBiZSB1c2VkIGZvcgorICAgICAg
ICBtdWx0aS12YXJpYWJsZSBzY29wZXMsIGxpa2UgRVM2IGJsb2NrIHNjb3Blcy4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKTogVXBkYXRlIGR1bXAuCisgICAgICAgICog
Ynl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoQmxvY2tT
Y29wZSk6IFVzZSB0aGUgdmFyaWFudCBvZgorICAgICAgICBKU1N0YXRpY1Njb3BlOjpjbG9uZSB0
aGF0IGRvZXNuJ3QgYmluZCBhIHZhcmlhYmxlLiAgKFRoZSBvdGhlciBvbmUKKyAgICAgICAgaXMg
dXNlZCBieSBuYW1lZCBmdW5jdGlvbiBleHByZXNzaW9ucy4pCisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6IFVwZGF0ZSBkZWNsYXJhdGlvbnMuCisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlRyeU5vZGU6OmVt
aXRCeXRlY29kZSk6IEZhdC1maW5nZXIgb3BfcHV0X3Njb3BlZF92YXIgd2l0aAorICAgICAgICBr
bm93biBpbmRpY2VzLiAgV2UgY291bGQgY2FsbCBmaW5kU2NvcGVkUHJvcGVydHksIGJ1dCBpdCBt
aWdodAorICAgICAgICBmYWlsIGlmIHRoZXJlIGlzIGEgYHdpdGgnIGluIHNjb3BlLgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmNyZWF0ZUV4Y2VwdGlvblNjb3BlKTogU2ltcGxpZnkuCisgICAgICAgIChKU0M6OkludGVy
cHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgor
ICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHVzaF9uZXdfc2NvcGUpOgorICAgICAgICAqIGpp
dC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHVzaF9u
ZXdfc2NvcGUpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRF
RklORV9TVFVCX0ZVTkNUSU9OKTogQWRhcHQgdG8gb3BfcHVzaF9uZXdfc2NvcGUgY2hhbmdlLgor
CisyMDExLTEyLTE2ICBBbmR5IFdpbmdvICA8d2luZ29AaWdhbGlhLmNvbT4KKwogICAgICAgICBP
cHRpbWl6ZSBhY2Nlc3MgdG8gYmxvY2stc2NvcGVkIGxvY2FsIHZhcmlhYmxlcwogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3MDgKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBjYTJlNWM3ZDIxZGU3
Mjg5NTU2N2RlNDc5ZGFkZmE2NzMyZmZhMGVmLi42NmQzODU1MzA2NTg2ZWM0MTI0NDRmNGRmN2Vh
NTRkYWZiMGJhOTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcApAQCAtMTIyMCw4ICsxMjIwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYKICAg
ICAgICAgY2FzZSBvcF9wdXNoX25ld19zY29wZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsK
LSAgICAgICAgICAgIGludCByMiA9ICgrK2l0KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJp
bnRmKCJbJTRkXSBwdXNoX25ld19zY29wZSBcdCVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdp
c3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCks
IHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0YSgpKTsKKyAgICAgICAgICAgIHByaW50ZigiWyU0
ZF0gcHVzaF9uZXdfc2NvcGUgXHQlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhl
YywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCkpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9qbXBfc2NvcGVzOiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKaW5kZXggOTQ5ZDY5ZmQ4YWM3MjQ3MGJm
NjVmZTUxMzQ5YmQzOTYxZWU1ODIzOC4uNTJhMmY3MDQzZTI3ZGFmNDYwZGE0MjJiM2E2NDAzNDBm
MGNkNzM2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtMTgz
LDcgKzE4Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBcCiAgICAgICAgIG1hY3JvKG9w
X3B1c2hfc2NvcGUsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfcG9wX3Njb3BlLCAxKSBcCi0gICAg
ICAgIG1hY3JvKG9wX3B1c2hfbmV3X3Njb3BlLCA0KSBcCisgICAgICAgIG1hY3JvKG9wX3B1c2hf
bmV3X3Njb3BlLCAzKSBcCiAgICAgICAgIFwKICAgICAgICAgbWFjcm8ob3BfY2F0Y2gsIDIpIFwK
ICAgICAgICAgbWFjcm8ob3BfdGhyb3csIDIpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggMjVjZGI1
OGQyNDMwZjFmMzlmMDEyYzhmNGRjNzUyMjZhOTFhMjBiZC4uNjg5ZTJmN2UwYmZjYmIzNzIwZDg2
NTcxOTExMmY5YjIzM2IzYTY3NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTIyMjYsNyArMjIyNiw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRTdWJyb3V0aW5lUmV0dXJuKFJlZ2lzdGVy
SUQqIHJldEFkZHJTcmMpCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHJldEFkZHJTcmMtPmlu
ZGV4KCkpOwogfQogCi12b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHVzaEJsb2NrU2NvcGUo
UmVnaXN0ZXJJRCogZHN0LCBKU1N0YXRpY1Njb3BlT2JqZWN0ICpzY29wZVRlbXBsYXRlLCBSZWdp
c3RlcklEKiB2YWx1ZSkKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoQmxvY2tTY29w
ZShSZWdpc3RlcklEKiBkc3QsIEpTU3RhdGljU2NvcGVPYmplY3QgKnNjb3BlVGVtcGxhdGUpCiB7
CiAgICAgQ29udHJvbEZsb3dDb250ZXh0IGNvbnRleHQ7CiAgICAgY29udGV4dC5ibG9ja1R5cGUg
PSBTY29wZUJsb2NrOwpAQCAtMjIzOCw3ICsyMjM4LDYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFB1c2hCbG9ja1Njb3BlKFJlZ2lzdGVySUQqIGRzdCwgSlNTdGF0aWNTY29wZU9iamVj
dAogICAgIGVtaXRPcGNvZGUob3BfcHVzaF9uZXdfc2NvcGUpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0ZW1wbC0+
aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKIH0K
IAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFBvcEJsb2NrU2NvcGUoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IDNlZjg4NWIzNmI3OTgwYjI3NzI5ODM5OGZmZDljMGE2OWZmMTFiYTEuLmNiMDQyYmUz
YTk3MTZiM2Y5OGExZGQ0ZWIyNGZjMGZlYjgzMTBiYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTM3Miw3
ICszNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXRUaHJvd1JlZmVy
ZW5jZUVycm9yKGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpOwogCi0gICAgICAgIHZvaWQgZW1pdFB1
c2hCbG9ja1Njb3BlKFJlZ2lzdGVySUQqIGRzdCwgSlNTdGF0aWNTY29wZU9iamVjdCAqc2NvcGVU
ZW1wbGF0ZSwgUmVnaXN0ZXJJRCogdmFsdWUpOworICAgICAgICB2b2lkIGVtaXRQdXNoQmxvY2tT
Y29wZShSZWdpc3RlcklEKiBkc3QsIEpTU3RhdGljU2NvcGVPYmplY3QgKnNjb3BlVGVtcGxhdGUp
OwogICAgICAgICB2b2lkIGVtaXRQb3BCbG9ja1Njb3BlKCk7CiAKICAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdFB1c2hTY29wZShSZWdpc3RlcklEKiBzY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggYmVkNzJkMzQw
NzdmOGJkNmI0ZjM4YTI3MGJlYmI3NTU4M2U3MTk5Yi4uMmIzOGU2Yzg5NjY3ZDc5MGQ2Mzg3MTRh
ZGIxMGU1MzA5MjU1MGFlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMTk0MSw3ICsxOTQxLDE0IEBAIFJlZ2lzdGVy
SUQqIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBKU1N0YXRpY1Nj
b3BlT2JqZWN0KiBzY29wZVRlbXBsYXRlID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGdl
bmVyYXRvci5zY29wZUNoYWluKCktPmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKICAgICAg
ICAgICAgIHNjb3BlVGVtcGxhdGUtPmFkZFZhcmlhYmxlKG1fZXhjZXB0aW9uSWRlbnQsIERvbnRE
ZWxldGUpOwotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXNoQmxvY2tTY29wZShleGNlcHRp
b25SZWdpc3Rlci5nZXQoKSwgc2NvcGVUZW1wbGF0ZSwgZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkp
OworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXNoQmxvY2tTY29wZShnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHNjb3BlVGVtcGxhdGUpOworICAgICAgICAgICAgSlNPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IDA7CisgICAgICAgICAgICBpbnQgaW5kZXggPSAwOworICAgICAgICAgICAgaW50
IGRlcHRoID0gLTE7CisgICAgICAgICAgICAvLyBXZSBjb3VsZCBjYWxsIGZpbmRTY29wZWRQcm9w
ZXJ0eSwgYnV0IHdlIGFscmVhZHkgd2hlcmUgdG8gc3RvcmUKKyAgICAgICAgICAgIC8vIHRoZSB2
YXI6IGF0IHRoZSB0b3Agb2YgdGhlIHNjb3BlIGNoYWluLCBpbiB0aGUgMHRoIHNsb3QsIGV2ZW4g
aWYKKyAgICAgICAgICAgIC8vIHRoZXJlIGlzIGEgYHdpdGgnIGFyb3VuZCBvciBvdGhlciBzdWNo
IGNyYXp5IHRoaW5ncy4KKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0U2NvcGVkVmFyKGRl
cHRoLCBpbmRleCwgZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCksIGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIH0KICAgICAgICAgZ2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9jYXRjaEJsb2NrKTsKICAg
ICAgICAgaWYgKG1fY2F0Y2hIYXNFdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKaW5kZXggMDUzNjRkN2NlZDVhZjZkMjU2Nzg1Njc4
NjJjMTM3ODJjZTQ3NjMyMS4uNWE3NmJhMDgxMjZiMmZhNjUzOTkwNjY1ZDU3ZGNjYmU4NzU0Mzhl
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCkBAIC0xNDA5LDEyICsxNDA5LDExIEBAIE5FVkVSX0lOTElORSBTY29wZUNoYWluTm9k
ZSogSW50ZXJwcmV0ZXI6OmNyZWF0ZUV4Y2VwdGlvblNjb3BlKENhbGxGcmFtZSogY2FsbEZyCiB7
CiAgICAgaW50IGRzdCA9IHZQQ1sxXS51Lm9wZXJhbmQ7CiAgICAgaW50IHRlbXBsID0gdlBDWzJd
LnUub3BlcmFuZDsKLSAgICBpbnQgdmFsdWUgPSB2UENbM10udS5vcGVyYW5kOwogCiAgICAgQVNT
RVJUKGNhbGxGcmFtZS0+cih0ZW1wbCkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOwogICAgIEpTT2Jq
ZWN0KiBzY29wZVRlbXBsYXRlID0gYXNPYmplY3QoY2FsbEZyYW1lLT5yKHRlbXBsKS5qc1ZhbHVl
KCkpOwogICAgIEFTU0VSVChzY29wZVRlbXBsYXRlLT5pc1N0YXRpY1Njb3BlT2JqZWN0KCkpOwot
ICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIG5ld1Njb3BlID0gc3RhdGljX2Nhc3Q8SlNTdGF0aWNT
Y29wZU9iamVjdCo+KHNjb3BlVGVtcGxhdGUpLT5jbG9uZShjYWxsRnJhbWUsIGNhbGxGcmFtZS0+
cih2YWx1ZSkuanNWYWx1ZSgpKTsKKyAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBuZXdTY29wZSA9
IHN0YXRpY19jYXN0PEpTU3RhdGljU2NvcGVPYmplY3QqPihzY29wZVRlbXBsYXRlKS0+Y2xvbmUo
Y2FsbEZyYW1lKTsKICAgICBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoZHN0KSA9IG5ld1Njb3BlOwog
CiAgICAgcmV0dXJuIGNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5wdXNoKG5ld1Njb3BlKTsKQEAg
LTQ4NjksMTEgKzQ4NjgsMTEgQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICAgICBnb3RvICooJiZz
a2lwX25ld19zY29wZSk7CiAjZW5kaWYKICAgICBERUZJTkVfT1BDT0RFKG9wX3B1c2hfbmV3X3Nj
b3BlKSB7Ci0gICAgICAgIC8qIG5ld19zY29wZSBkc3QocikgdGVtcGwocikgdmFsdWUocikKKyAg
ICAgICAgLyogbmV3X3Njb3BlIGRzdChyKSB0ZW1wbChyKQogICAgICAgICAgCi0gICAgICAgICAg
IENvbnN0cnVjdHMgYSBuZXcgU3RhdGljU2NvcGVPYmplY3Qgd2hvc2Ugb25lIHByb3BlcnR5IGlz
IHNldCB0bwotICAgICAgICAgICB2YWx1ZS4gIFRoYXQgc2NvcGUgb2JqZWN0IGlzIHRoZW4gcHVz
aGVkIG9udG8gdGhlIFNjb3BlQ2hhaW4uICBUaGUKLSAgICAgICAgICAgc2NvcGUgb2JqZWN0IGlz
IHRoZW4gc3RvcmVkIGluIGRzdCBmb3IgR0MuCisgICAgICAgICAgIENvbnN0cnVjdHMgYSBuZXcg
U3RhdGljU2NvcGVPYmplY3QsIHVzaW5nIHRlbXBsIGFzIGEgdGVtcGxhdGUuIFRoYXQKKyAgICAg
ICAgICAgc2NvcGUgb2JqZWN0IGlzIHRoZW4gcHVzaGVkIG9udG8gdGhlIFNjb3BlQ2hhaW4uIFRo
ZSBzY29wZSBvYmplY3QgaXMKKyAgICAgICAgICAgdGhlbiBzdG9yZWQgaW4gZHN0IGZvciBHQy4K
ICAgICAgICAgICovCiAgICAgICAgIGNhbGxGcmFtZS0+c2V0U2NvcGVDaGFpbihjcmVhdGVFeGNl
cHRpb25TY29wZShjYWxsRnJhbWUsIHZQQykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzLmNwcAppbmRleCAzYmI2MDBhYzFkMWJhOTlmNWU3OGEwNzAwODQzNWVhY2Y0ZWQz
MGI5Li5mZmNkOGVlOGZiYTYzMTU0ZjkxNzZkZDg5MGVjNzQ4M2E4MjI4MWNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgUGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29t
PgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTAxMyw3ICsxMDEzLDYgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfcHVzaF9uZXdfc2NvcGUoSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAg
ICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBjdGlfb3BfcHVzaF9uZXdfc2NvcGUpOwogICAg
IHN0dWJDYWxsLmFkZEFyZ3VtZW50KGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQsIHJl
Z1QxKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5v
cGVyYW5kLCByZWdUMik7CiAgICAgc3R1YkNhbGwuY2FsbChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
MzJfNjQuY3BwCmluZGV4IDVkNTg2NWY5ZTVmYzA0ZDZkZDYyMTgzZDEyNTg0ZDBlYmZiYWZiYjMu
LjY5ZTNmZGZlMjMwYTk0NTJiMjkwMjU4OTg3MTgyYjNmNTQwMWNiMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKQEAgLTEzMzIsNyArMTMzMiw2
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1c2hfbmV3X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3B1
c2hfbmV3X3Njb3BlKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kKTsKLSAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3Bw
CmluZGV4IGE3MzJmZTY3MmIwYjVlMWIxZTllODcyZDZkMjE2ODEzOTBiYTMzNmUuLmExZGRmN2M4
NTU4NGE5OGQ1NWE5Mzc4MmYwYmUyNWYzOWUwNGFjOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCkBAIC0zNTM1LDggKzM1MzUsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElP
TihKU09iamVjdCosIG9wX3B1c2hfbmV3X3Njb3BlKQogICAgIEFTU0VSVChzY29wZVRlbXBsYXRl
LT5pc1N0YXRpY1Njb3BlT2JqZWN0KCkpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKLSAgICBKU1ZhbHVlIHZhbHVlID0gc3RhY2tGcmFtZS5hcmdz
WzFdLmpzVmFsdWUoKTsKLSAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBuZXdTY29wZSA9IHN0YXRp
Y19jYXN0PEpTU3RhdGljU2NvcGVPYmplY3QqPihzY29wZVRlbXBsYXRlKS0+Y2xvbmUoY2FsbEZy
YW1lLCB2YWx1ZSk7CisgICAgSlNTdGF0aWNTY29wZU9iamVjdCogbmV3U2NvcGUgPSBzdGF0aWNf
Y2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oc2NvcGVUZW1wbGF0ZSktPmNsb25lKGNhbGxGcmFt
ZSk7CiAgICAgY2FsbEZyYW1lLT5zZXRTY29wZUNoYWluKGNhbGxGcmFtZS0+c2NvcGVDaGFpbigp
LT5wdXNoKG5ld1Njb3BlKSk7CiAgICAgcmV0dXJuIG5ld1Njb3BlOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119620</attachid>
            <date>2011-12-16 09:22:16 -0800</date>
            <delta_ts>2012-01-18 10:36:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74718-20111216182214.patch</filename>
            <type>text/plain</type>
            <size>11634</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyOTMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZTEyNGQ2MDA5YWEwN2RiNmQxZmE0ZGUxZDk3MGE3YWQ4MzJlNjA2Li45YjU2ZjEzYmJlMGMxMzJl
ZjkwOWYzNjk3NjI3M2FhYjUzYzYxOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0MCBAQAogMjAxMS0xMi0xNiAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CiAK
KyAgICAgICAgUmVtb3ZlIHRoZSBgdmFsdWUnIGFyZ3VtZW50IHRvIG9wX3B1c2hfbmV3X3Njb3Bl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDcxOAor
CisgICAgICAgIEZvciBleGNlcHRpb24gc2NvcGVzLCBpbnN0ZWFkIG9mIHB1c2hpbmcgYSBzY29w
ZSB3aXRoIGEgdmFsdWUKKyAgICAgICAgYWxyZWFkeSBzZXQgaW4gaXQsIHB1c2ggYSBmcmVzaCBz
Y29wZSBhbmQgdXNlIG9wX3B1dF9zY29wZWRfdmFyIHRvCisgICAgICAgIGJpbmQgdGhlIHZhci4g
IFRoaXMgd2lsbCBhbGxvdyBvcF9wdXNoX25ld19zY29wZSB0byBiZSB1c2VkIGZvcgorICAgICAg
ICBtdWx0aS12YXJpYWJsZSBzY29wZXMsIGxpa2UgRVM2IGJsb2NrIHNjb3Blcy4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKTogVXBkYXRlIGR1bXAuCisgICAgICAgICog
Ynl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoQmxvY2tT
Y29wZSk6IFVzZSB0aGUgdmFyaWFudCBvZgorICAgICAgICBKU1N0YXRpY1Njb3BlOjpjbG9uZSB0
aGF0IGRvZXNuJ3QgYmluZCBhIHZhcmlhYmxlLiAgKFRoZSBvdGhlciBvbmUKKyAgICAgICAgaXMg
dXNlZCBieSBuYW1lZCBmdW5jdGlvbiBleHByZXNzaW9ucy4pCisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SW5pdGlhbGl6ZUJsb2NrU2NvcGVkTG9jYWwpOiBOZXcKKyAgICAg
ICAgaGVscGVyIHRvIGluaXRpYWxpemUgYSB2YXJpYWJsZSBrbm93biB0byBiZSBhdCB0aGUgbGFz
dC1wdXNoZWQKKyAgICAgICAgYmxvY2sgc2NvcGUuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6IFVwZGF0ZSBkZWNsYXJhdGlvbnMuCisgICAgICAgICogYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlRyeU5vZGU6OmVtaXRCeXRl
Y29kZSk6IFVzZSBlbWl0SW5pdGlhbGl6ZUJsb2NrU2NvcGVkTG9jYWwKKyAgICAgICAgdG8gaW5p
dGlhbGl6ZSBleGNlcHRpb24gdmFyLgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmNyZWF0ZUV4Y2VwdGlvblNjb3BlKTog
U2ltcGxpZnkuCisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cHVzaF9uZXdfc2NvcGUpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHVzaF9uZXdfc2NvcGUpOgorICAgICAgICAqIGppdC9K
SVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKTogQWRhcHQg
dG8gb3BfcHVzaF9uZXdfc2NvcGUgY2hhbmdlLgorCisyMDExLTEyLTE2ICBBbmR5IFdpbmdvICA8
d2luZ29AaWdhbGlhLmNvbT4KKwogICAgICAgICBPcHRpbWl6ZSBhY2Nlc3MgdG8gYmxvY2stc2Nv
cGVkIGxvY2FsIHZhcmlhYmxlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzQ3MDgKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAppbmRleCBjYTJlNWM3ZDIxZGU3Mjg5NTU2N2RlNDc5ZGFkZmE2NzMyZmZhMGVm
Li42NmQzODU1MzA2NTg2ZWM0MTI0NDRmNGRmN2VhNTRkYWZiMGJhOTNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTIyMCw4ICsxMjIwLDcg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBWZWN0b3I8SW5z
dHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYKICAgICAgICAgY2FzZSBvcF9wdXNoX25ld19zY29w
ZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMiA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBwdXNoX25ld19zY29wZSBc
dCVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpKTsKKyAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcHVzaF9uZXdfc2NvcGUgXHQlcywgJXNc
biIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9qbXBfc2NvcGVzOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgKaW5kZXggOTQ5ZDY5ZmQ4YWM3MjQ3MGJmNjVmZTUxMzQ5YmQzOTYxZWU1ODIzOC4uNTJh
MmY3MDQzZTI3ZGFmNDYwZGE0MjJiM2E2NDAzNDBmMGNkNzM2NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtMTgzLDcgKzE4Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBcCiAgICAgICAgIG1hY3JvKG9wX3B1c2hfc2NvcGUsIDIpIFwKICAgICAgICAg
bWFjcm8ob3BfcG9wX3Njb3BlLCAxKSBcCi0gICAgICAgIG1hY3JvKG9wX3B1c2hfbmV3X3Njb3Bl
LCA0KSBcCisgICAgICAgIG1hY3JvKG9wX3B1c2hfbmV3X3Njb3BlLCAzKSBcCiAgICAgICAgIFwK
ICAgICAgICAgbWFjcm8ob3BfY2F0Y2gsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfdGhyb3csIDIp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKaW5kZXggMjVjZGI1OGQyNDMwZjFmMzlmMDEyYzhmNGRjNzUyMjZh
OTFhMjBiZC4uYmYwNTI4ZDZhN2NlMGQ3YWUwMTI2MDk0ZmY3ZWYwMThjMjUyN2JkNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKQEAgLTIyMjYsNyArMjIyNiw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRTdWJyb3V0aW5lUmV0dXJuKFJlZ2lzdGVySUQqIHJldEFkZHJTcmMpCiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHJldEFkZHJTcmMtPmluZGV4KCkpOwogfQogCi12b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UHVzaEJsb2NrU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBKU1N0YXRpY1Nj
b3BlT2JqZWN0ICpzY29wZVRlbXBsYXRlLCBSZWdpc3RlcklEKiB2YWx1ZSkKK3ZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXNoQmxvY2tTY29wZShSZWdpc3RlcklEKiBkc3QsIEpTU3RhdGlj
U2NvcGVPYmplY3QgKnNjb3BlVGVtcGxhdGUpCiB7CiAgICAgQ29udHJvbEZsb3dDb250ZXh0IGNv
bnRleHQ7CiAgICAgY29udGV4dC5ibG9ja1R5cGUgPSBTY29wZUJsb2NrOwpAQCAtMjIzOCw3ICsy
MjM4LDYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hCbG9ja1Njb3BlKFJlZ2lz
dGVySUQqIGRzdCwgSlNTdGF0aWNTY29wZU9iamVjdAogICAgIGVtaXRPcGNvZGUob3BfcHVzaF9u
ZXdfc2NvcGUpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCh0ZW1wbC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFBvcEJsb2NrU2NvcGUoKQpAQCAtMjI1NCw2ICsyMjUzLDIyIEBAIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQb3BCbG9ja1Njb3BlKCkKICAgICBtX3Njb3BlQ29udGV4dFN0YWNrLnJl
bW92ZUxhc3QoKTsKIH0KIAordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluaXRpYWxpemVC
bG9ja1Njb3BlZExvY2FsKGNvbnN0IElkZW50aWZpZXImIG5hbWUsIFJlZ2lzdGVySUQqIHZhbHVl
KQoreworICAgIC8vIFdlIGNvdWxkIGNhbGwgZmluZFNjb3BlZFByb3BlcnR5LCBidXQgd2UgYWxy
ZWFkeSBrbm93IHRoYXQgdGhlIHZhcmlhYmxlCisgICAgLy8gaXMgYm91bmQgYXQgdGhlIHRvcCBv
ZiB0aGUgc2NvcGUgY2hhaW4sIGV2ZW4gaWYgdGhlcmUgaXMgYSBgd2l0aCcgYXJvdW5kCisgICAg
Ly8gb3Igb3RoZXIgc3VjaCBjcmF6eSB0aGluZ3MuCisgICAgQVNTRVJUKG1fYmxvY2tTY29wZURl
cHRoKTsKKyAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBzY29wZSA9IHN0YXRpY19jYXN0PEpTU3Rh
dGljU2NvcGVPYmplY3QqPihtX3Njb3BlQ2hhaW4tPm9iamVjdC5nZXQoKSk7CisgICAgQVNTRVJU
KHNjb3BlLT5pc1N0YXRpY1Njb3BlT2JqZWN0KCkpOworICAgIFN5bWJvbFRhYmxlRW50cnkgZW50
cnkgPSBzY29wZS0+c3ltYm9sVGFibGUoKS5nZXQobmFtZS5pbXBsKCkpOworICAgIEFTU0VSVCgh
ZW50cnkuaXNOdWxsKCkpOworICAgIEpTT2JqZWN0KiBnbG9iYWxPYmplY3QgPSAwOworICAgIGlu
dCBpbmRleCA9IGVudHJ5LmdldEluZGV4KCk7CisgICAgaW50IGRlcHRoID0gLTE7CisgICAgZW1p
dFB1dFNjb3BlZFZhcihkZXB0aCwgaW5kZXgsIHZhbHVlLCBnbG9iYWxPYmplY3QpOworfQorCiB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpiZWdpblN3aXRjaChSZWdpc3RlcklEKiBzY3J1dGluZWVS
ZWdpc3RlciwgU3dpdGNoSW5mbzo6U3dpdGNoVHlwZSB0eXBlKQogewogICAgIFN3aXRjaEluZm8g
aW5mbyA9IHsgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCB0eXBlIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXgg
M2VmODg1YjM2Yjc5ODBiMjc3Mjk4Mzk4ZmZkOWMwYTY5ZmYxMWJhMS4uMmM2N2FjNTBkYWI3ZDVh
NDQ2OTkxZDM5MWVmZDk4MDA1NGE1ZTFjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMzcyLDggKzM3Miw5
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgZW1pdFRocm93UmVmZXJlbmNlRXJy
b3IoY29uc3QgVVN0cmluZyYgbWVzc2FnZSk7CiAKLSAgICAgICAgdm9pZCBlbWl0UHVzaEJsb2Nr
U2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBKU1N0YXRpY1Njb3BlT2JqZWN0ICpzY29wZVRlbXBsYXRl
LCBSZWdpc3RlcklEKiB2YWx1ZSk7CisgICAgICAgIHZvaWQgZW1pdFB1c2hCbG9ja1Njb3BlKFJl
Z2lzdGVySUQqIGRzdCwgSlNTdGF0aWNTY29wZU9iamVjdCAqc2NvcGVUZW1wbGF0ZSk7CiAgICAg
ICAgIHZvaWQgZW1pdFBvcEJsb2NrU2NvcGUoKTsKKyAgICAgICAgdm9pZCBlbWl0SW5pdGlhbGl6
ZUJsb2NrU2NvcGVkTG9jYWwoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0UHVzaFNjb3BlKFJlZ2lzdGVySUQq
IHNjb3BlKTsKICAgICAgICAgdm9pZCBlbWl0UG9wU2NvcGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCBiZWQ3MmQz
NDA3N2Y4YmQ2YjRmMzhhMjcwYmViYjc1NTgzZTcxOTliLi43YTZkOTM1MThhMjE5NGQ2MjI0NzIy
NWMxZWE3NzQ2YzA4ZWJmYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xOTQxLDcgKzE5NDEsOCBAQCBSZWdpc3Rl
cklEKiBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgSlNTdGF0aWNT
Y29wZU9iamVjdCogc2NvcGVUZW1wbGF0ZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShn
ZW5lcmF0b3Iuc2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7CiAgICAg
ICAgICAgICBzY29wZVRlbXBsYXRlLT5hZGRWYXJpYWJsZShtX2V4Y2VwdGlvbklkZW50LCBEb250
RGVsZXRlKTsKLSAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHVzaEJsb2NrU2NvcGUoZXhjZXB0
aW9uUmVnaXN0ZXIuZ2V0KCksIHNjb3BlVGVtcGxhdGUsIGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgp
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHVzaEJsb2NrU2NvcGUoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBzY29wZVRlbXBsYXRlKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
SW5pdGlhbGl6ZUJsb2NrU2NvcGVkTG9jYWwobV9leGNlcHRpb25JZGVudCwgZXhjZXB0aW9uUmVn
aXN0ZXIuZ2V0KCkpOwogICAgICAgICB9CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3Qs
IG1fY2F0Y2hCbG9jayk7CiAgICAgICAgIGlmIChtX2NhdGNoSGFzRXZhbCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDA1MzY0
ZDdjZWQ1YWY2ZDI1Njc4NTY3ODYyYzEzNzgyY2U0NzYzMjEuLjVhNzZiYTA4MTI2YjJmYTY1Mzk5
MDY2NWQ1N2RjY2JlODc1NDM4ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtMTQwOSwxMiArMTQwOSwxMSBAQCBORVZFUl9J
TkxJTkUgU2NvcGVDaGFpbk5vZGUqIEludGVycHJldGVyOjpjcmVhdGVFeGNlcHRpb25TY29wZShD
YWxsRnJhbWUqIGNhbGxGcgogewogICAgIGludCBkc3QgPSB2UENbMV0udS5vcGVyYW5kOwogICAg
IGludCB0ZW1wbCA9IHZQQ1syXS51Lm9wZXJhbmQ7Ci0gICAgaW50IHZhbHVlID0gdlBDWzNdLnUu
b3BlcmFuZDsKIAogICAgIEFTU0VSVChjYWxsRnJhbWUtPnIodGVtcGwpLmpzVmFsdWUoKS5pc09i
amVjdCgpKTsKICAgICBKU09iamVjdCogc2NvcGVUZW1wbGF0ZSA9IGFzT2JqZWN0KGNhbGxGcmFt
ZS0+cih0ZW1wbCkuanNWYWx1ZSgpKTsKICAgICBBU1NFUlQoc2NvcGVUZW1wbGF0ZS0+aXNTdGF0
aWNTY29wZU9iamVjdCgpKTsKLSAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBuZXdTY29wZSA9IHN0
YXRpY19jYXN0PEpTU3RhdGljU2NvcGVPYmplY3QqPihzY29wZVRlbXBsYXRlKS0+Y2xvbmUoY2Fs
bEZyYW1lLCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CisgICAgSlNTdGF0aWNTY29w
ZU9iamVjdCogbmV3U2NvcGUgPSBzdGF0aWNfY2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oc2Nv
cGVUZW1wbGF0ZSktPmNsb25lKGNhbGxGcmFtZSk7CiAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRS
KGRzdCkgPSBuZXdTY29wZTsKIAogICAgIHJldHVybiBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+
cHVzaChuZXdTY29wZSk7CkBAIC00ODY5LDExICs0ODY4LDExIEBAIHNraXBfaWRfY3VzdG9tX3Nl
bGY6CiAgICAgZ290byAqKCYmc2tpcF9uZXdfc2NvcGUpOwogI2VuZGlmCiAgICAgREVGSU5FX09Q
Q09ERShvcF9wdXNoX25ld19zY29wZSkgewotICAgICAgICAvKiBuZXdfc2NvcGUgZHN0KHIpIHRl
bXBsKHIpIHZhbHVlKHIpCisgICAgICAgIC8qIG5ld19zY29wZSBkc3QocikgdGVtcGwocikKICAg
ICAgICAgIAotICAgICAgICAgICBDb25zdHJ1Y3RzIGEgbmV3IFN0YXRpY1Njb3BlT2JqZWN0IHdo
b3NlIG9uZSBwcm9wZXJ0eSBpcyBzZXQgdG8KLSAgICAgICAgICAgdmFsdWUuICBUaGF0IHNjb3Bl
IG9iamVjdCBpcyB0aGVuIHB1c2hlZCBvbnRvIHRoZSBTY29wZUNoYWluLiAgVGhlCi0gICAgICAg
ICAgIHNjb3BlIG9iamVjdCBpcyB0aGVuIHN0b3JlZCBpbiBkc3QgZm9yIEdDLgorICAgICAgICAg
ICBDb25zdHJ1Y3RzIGEgbmV3IFN0YXRpY1Njb3BlT2JqZWN0LCB1c2luZyB0ZW1wbCBhcyBhIHRl
bXBsYXRlLiBUaGF0CisgICAgICAgICAgIHNjb3BlIG9iamVjdCBpcyB0aGVuIHB1c2hlZCBvbnRv
IHRoZSBTY29wZUNoYWluLiBUaGUgc2NvcGUgb2JqZWN0IGlzCisgICAgICAgICAgIHRoZW4gc3Rv
cmVkIGluIGRzdCBmb3IgR0MuCiAgICAgICAgICAqLwogICAgICAgICBjYWxsRnJhbWUtPnNldFNj
b3BlQ2hhaW4oY3JlYXRlRXhjZXB0aW9uU2NvcGUoY2FsbEZyYW1lLCB2UEMpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rlcy5jcHAKaW5kZXggM2JiNjAwYWMxZDFiYTk5ZjVl
NzhhMDcwMDg0MzVlYWNmNGVkMzBiOS4uZmZjZDhlZThmYmE2MzE1NGY5MTc2ZGQ4OTBlYzc0ODNh
ODIyODFjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIFBhdHJpY2sgR2Fuc3RlcmVy
IDxwYXJvZ2FAcGFyb2dhLmNvbT4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTEwMTMsNyArMTAxMyw2
IEBAIHZvaWQgSklUOjplbWl0X29wX3B1c2hfbmV3X3Njb3BlKEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiB7CiAgICAgSklUU3R1YkNhbGwgc3R1YkNhbGwodGhpcywgY3RpX29wX3B1
c2hfbmV3X3Njb3BlKTsKICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kLCByZWdUMSk7Ci0gICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoY3VycmVu
dEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCwgcmVnVDIpOwogICAgIHN0dWJDYWxsLmNhbGwoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcAppbmRleCA1ZDU4NjVmOWU1ZmMwNGQ2ZGQ2MjE4
M2QxMjU4NGQwZWJmYmFmYmIzLi42OWUzZmRmZTIzMGE5NDUyYjI5MDI1ODk4NzE4MmIzZjU0MDFj
YjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82
NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3Bw
CkBAIC0xMzMyLDcgKzEzMzIsNiBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9wdXNoX25ld19zY29wZShJ
bnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAgIEpJVFN0dWJDYWxsIHN0dWJD
YWxsKHRoaXMsIGN0aV9vcF9wdXNoX25ld19zY29wZSk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1l
bnQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCk7Ci0gICAgc3R1YkNhbGwuYWRkQXJn
dW1lbnQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgc3R1YkNhbGwuY2Fs
bChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcAppbmRleCBhNzMyZmU2NzJiMGI1ZTFiMWU5ZTg3MmQ2ZDIxNjgx
MzkwYmEzMzZlLi5hMWRkZjdjODU1ODRhOThkNTVhOTM3ODJmMGJlMjVmMzllMDRhYzk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcApAQCAtMzUzNSw4ICszNTM1LDcgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04oSlNPYmplY3QqLCBvcF9wdXNoX25ld19zY29wZSkKICAgICBB
U1NFUlQoc2NvcGVUZW1wbGF0ZS0+aXNTdGF0aWNTY29wZU9iamVjdCgpKTsKIAogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IHN0YWNrRnJhbWUuYXJnc1sxXS5qc1ZhbHVlKCk7Ci0gICAgSlNTdGF0aWNTY29wZU9iamVj
dCogbmV3U2NvcGUgPSBzdGF0aWNfY2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oc2NvcGVUZW1w
bGF0ZSktPmNsb25lKGNhbGxGcmFtZSwgdmFsdWUpOworICAgIEpTU3RhdGljU2NvcGVPYmplY3Qq
IG5ld1Njb3BlID0gc3RhdGljX2Nhc3Q8SlNTdGF0aWNTY29wZU9iamVjdCo+KHNjb3BlVGVtcGxh
dGUpLT5jbG9uZShjYWxsRnJhbWUpOwogICAgIGNhbGxGcmFtZS0+c2V0U2NvcGVDaGFpbihjYWxs
RnJhbWUtPnNjb3BlQ2hhaW4oKS0+cHVzaChuZXdTY29wZSkpOwogICAgIHJldHVybiBuZXdTY29w
ZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122961</attachid>
            <date>2012-01-18 10:36:50 -0800</date>
            <delta_ts>2012-03-24 12:07:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74718-20120118193648.patch</filename>
            <type>text/plain</type>
            <size>10255</size>
            <attacher name="Andy Wingo">wingo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1MjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MGEwMWJiYWJmNTVlMjZiYjJmZTIzY2E1YTFhNWNiMjE4YjgwYTY0Li45ZDIyYWRlYzRlZmM5NTdh
OWU3NmIxZDc3YjY5NGZlY2U4OGVmZWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw0MCBAQAogMjAxMS0xMi0xNiAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CiAK
KyAgICAgICAgUmVtb3ZlIHRoZSBgdmFsdWUnIGFyZ3VtZW50IHRvIG9wX3B1c2hfbmV3X3Njb3Bl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDcxOAor
CisgICAgICAgIEZvciBleGNlcHRpb24gc2NvcGVzLCBpbnN0ZWFkIG9mIHB1c2hpbmcgYSBzY29w
ZSB3aXRoIGEgdmFsdWUKKyAgICAgICAgYWxyZWFkeSBzZXQgaW4gaXQsIHB1c2ggYSBmcmVzaCBz
Y29wZSBhbmQgdXNlIG9wX3B1dF9zY29wZWRfdmFyIHRvCisgICAgICAgIGJpbmQgdGhlIHZhci4g
IFRoaXMgd2lsbCBhbGxvdyBvcF9wdXNoX25ld19zY29wZSB0byBiZSB1c2VkIGZvcgorICAgICAg
ICBtdWx0aS12YXJpYWJsZSBzY29wZXMsIGxpa2UgRVM2IGJsb2NrIHNjb3Blcy4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKTogVXBkYXRlIGR1bXAuCisgICAgICAgICog
Ynl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXNoQmxvY2tT
Y29wZSk6IFVzZSB0aGUgdmFyaWFudCBvZgorICAgICAgICBKU1N0YXRpY1Njb3BlOjpjbG9uZSB0
aGF0IGRvZXNuJ3QgYmluZCBhIHZhcmlhYmxlLiAgKFRoZSBvdGhlciBvbmUKKyAgICAgICAgaXMg
dXNlZCBieSBuYW1lZCBmdW5jdGlvbiBleHByZXNzaW9ucy4pCisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SW5pdGlhbGl6ZUJsb2NrU2NvcGVkTG9jYWwpOiBOZXcKKyAgICAg
ICAgaGVscGVyIHRvIGluaXRpYWxpemUgYSB2YXJpYWJsZSBrbm93biB0byBiZSBhdCB0aGUgbGFz
dC1wdXNoZWQKKyAgICAgICAgYmxvY2sgc2NvcGUuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmg6IFVwZGF0ZSBkZWNsYXJhdGlvbnMuCisgICAgICAgICogYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlRyeU5vZGU6OmVtaXRCeXRl
Y29kZSk6IFVzZSBlbWl0SW5pdGlhbGl6ZUJsb2NrU2NvcGVkTG9jYWwKKyAgICAgICAgdG8gaW5p
dGlhbGl6ZSBleGNlcHRpb24gdmFyLgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmNyZWF0ZUV4Y2VwdGlvblNjb3BlKTog
U2ltcGxpZnkuCisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6Cisg
ICAgICAgICogaml0L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3Bf
cHVzaF9uZXdfc2NvcGUpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfcHVzaF9uZXdfc2NvcGUpOgorICAgICAgICAqIGppdC9K
SVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKTogQWRhcHQg
dG8gb3BfcHVzaF9uZXdfc2NvcGUgY2hhbmdlLgorCisyMDExLTEyLTE2ICBBbmR5IFdpbmdvICA8
d2luZ29AaWdhbGlhLmNvbT4KKwogICAgICAgICBPcHRpbWl6ZSBhY2Nlc3MgdG8gYmxvY2stc2Nv
cGVkIGxvY2FsIHZhcmlhYmxlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzQ3MDgKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAppbmRleCA3ODY5ZTk5MjU5YjVlYzcxNDQ0OGYyYjEzNGUwMzVmZTM1MDYyMTli
Li5mMWJiNWNkMTAxZWM0ZWM2MTk5MjRiMGQyMzMxMWIwNGY3YWNmODNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMTIyMCw4ICsxMjIwLDcg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBWZWN0b3I8SW5z
dHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYKICAgICAgICAgY2FzZSBvcF9wdXNoX25ld19zY29w
ZTogewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAg
ICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKLSAgICAgICAgICAgIGludCByMiA9ICgrK2l0
KS0+dS5vcGVyYW5kOwotICAgICAgICAgICAgcHJpbnRmKCJbJTRkXSBwdXNoX25ld19zY29wZSBc
dCVzLCAlcywgJXNcbiIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpKTsKKyAgICAgICAgICAgIHByaW50ZigiWyU0ZF0gcHVzaF9uZXdfc2NvcGUgXHQlcywgJXNc
biIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9qbXBfc2NvcGVzOiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgKaW5kZXggNDgwMWU0YzMyMWYzMjMwZDY0NDgzYzY3MzkwZTg2MWJlNjEyYTZkMi4uYjZi
M2Y5MWZmNWM5MTU0NDk3YWJkZWE4NGQ4MmNiMmVmYjc2M2FhNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PcGNvZGUuaApAQCAtMTgzLDcgKzE4Myw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBcCiAgICAgICAgIG1hY3JvKG9wX3B1c2hfc2NvcGUsIDIpIFwKICAgICAgICAg
bWFjcm8ob3BfcG9wX3Njb3BlLCAxKSBcCi0gICAgICAgIG1hY3JvKG9wX3B1c2hfbmV3X3Njb3Bl
LCA0KSBcCisgICAgICAgIG1hY3JvKG9wX3B1c2hfbmV3X3Njb3BlLCAzKSBcCiAgICAgICAgIFwK
ICAgICAgICAgbWFjcm8ob3BfY2F0Y2gsIDIpIFwKICAgICAgICAgbWFjcm8ob3BfdGhyb3csIDIp
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKaW5kZXggYTVmY2NiODkzZjljMDY5NGU4NmEyYzgxODU0MmQyNmZi
MjM2NGY4MC4uZTMzNWZhZmM3ZjgyYTI0MzVkNGM2Y2FhZGEwNzNjNmUwN2NmMDllZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKQEAgLTIyNDUsNyArMjI0NSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRTdWJyb3V0aW5lUmV0dXJuKFJlZ2lzdGVySUQqIHJldEFkZHJTcmMpCiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKHJldEFkZHJTcmMtPmluZGV4KCkpOwogfQogCi12b2lkIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UHVzaEJsb2NrU2NvcGUoUmVnaXN0ZXJJRCogZHN0LCBKU1N0YXRpY1Nj
b3BlT2JqZWN0ICpzY29wZVRlbXBsYXRlLCBSZWdpc3RlcklEKiB2YWx1ZSkKK3ZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXNoQmxvY2tTY29wZShSZWdpc3RlcklEKiBkc3QsIEpTU3RhdGlj
U2NvcGVPYmplY3QgKnNjb3BlVGVtcGxhdGUpCiB7CiAgICAgQ29udHJvbEZsb3dDb250ZXh0IGNv
bnRleHQ7CiAgICAgY29udGV4dC5ibG9ja1R5cGUgPSBTY29wZUJsb2NrOwpAQCAtMjI1Nyw3ICsy
MjU3LDYgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1c2hCbG9ja1Njb3BlKFJlZ2lz
dGVySUQqIGRzdCwgSlNTdGF0aWNTY29wZU9iamVjdAogICAgIGVtaXRPcGNvZGUob3BfcHVzaF9u
ZXdfc2NvcGUpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCh0ZW1wbC0+aW5kZXgoKSk7Ci0gICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHZhbHVlLT5pbmRleCgpKTsKIH0KIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFBvcEJsb2NrU2NvcGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGJlODcxZWQ1NmY0ZjVhZTZmYTk0
Y2MzZmU4YWI5YjgwOTZmMjM1NTEuLjEwNGI3YjhlYmM1Y2JkYTIyMzkwNWJlZDg5YTQ1YTkyNDQy
MzE4MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ1Niw3ICs0NTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICB2b2lkIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGNvbnN0IFVTdHJpbmcmIG1l
c3NhZ2UpOwogCi0gICAgICAgIHZvaWQgZW1pdFB1c2hCbG9ja1Njb3BlKFJlZ2lzdGVySUQqIGRz
dCwgSlNTdGF0aWNTY29wZU9iamVjdCAqc2NvcGVUZW1wbGF0ZSwgUmVnaXN0ZXJJRCogdmFsdWUp
OworICAgICAgICB2b2lkIGVtaXRQdXNoQmxvY2tTY29wZShSZWdpc3RlcklEKiBkc3QsIEpTU3Rh
dGljU2NvcGVPYmplY3QgKnNjb3BlVGVtcGxhdGUpOwogICAgICAgICB2b2lkIGVtaXRQb3BCbG9j
a1Njb3BlKCk7CiAKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFB1c2hTY29wZShSZWdpc3RlcklE
KiBzY29wZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKaW5kZXggMDI5YzY4MGY0OTFkZTBkYzRkYTIyMzJiZmQxYzZjNTUwNjVl
MjczMy4uOWIwYmVkNDY3MWE0NjcwZWI1YzMxMTY1MGI3NDc2Yjg5ZDI2OTY2NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApA
QCAtMTkyNiw3ICsxOTI2LDggQEAgUmVnaXN0ZXJJRCogVHJ5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIHNjb3BlVGVtcGxhdGUgPSBK
U1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZ2VuZXJhdG9yLnNjb3BlQ2hhaW4oKS0+Z2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCkpOwogICAgICAgICAgICAgc2NvcGVUZW1wbGF0ZS0+YWRkVmFy
aWFibGUobV9leGNlcHRpb25JZGVudCwgRG9udERlbGV0ZSk7Ci0gICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1c2hCbG9ja1Njb3BlKGV4Y2VwdGlvblJlZ2lzdGVyLmdldCgpLCBzY29wZVRlbXBs
YXRlLCBleGNlcHRpb25SZWdpc3Rlci5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dFB1c2hCbG9ja1Njb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGVUZW1wbGF0ZSk7
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFN0YXRpY1ZhcihnZW5lcmF0b3IucmVzb2x2
ZShtX2V4Y2VwdGlvbklkZW50KSwgZXhjZXB0aW9uUmVnaXN0ZXIuZ2V0KCkpOwogICAgICAgICB9
CiAgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fY2F0Y2hCbG9jayk7CiAgICAgICAg
IGlmIChtX2NhdGNoSGFzRXZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDEwYzg1ZmQ3M2MyNzJkNWQ2YzAzNjNiY2I2Mjk1
MGY3Njg0YjM4YjIuLjNjNzg1ZTY5MzQ2NzMwNzZmNjIwOGU4N2QwMDZkZjYyYWQ4N2FjODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cApAQCAtMTQ0MCwxMiArMTQ0MCwxMSBAQCBORVZFUl9JTkxJTkUgU2NvcGVDaGFpbk5vZGUqIElu
dGVycHJldGVyOjpjcmVhdGVFeGNlcHRpb25TY29wZShDYWxsRnJhbWUqIGNhbGxGcgogewogICAg
IGludCBkc3QgPSB2UENbMV0udS5vcGVyYW5kOwogICAgIGludCB0ZW1wbCA9IHZQQ1syXS51Lm9w
ZXJhbmQ7Ci0gICAgaW50IHZhbHVlID0gdlBDWzNdLnUub3BlcmFuZDsKIAogICAgIEFTU0VSVChj
YWxsRnJhbWUtPnIodGVtcGwpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKICAgICBKU09iamVjdCog
c2NvcGVUZW1wbGF0ZSA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+cih0ZW1wbCkuanNWYWx1ZSgpKTsK
ICAgICBBU1NFUlQoc2NvcGVUZW1wbGF0ZS0+aXNTdGF0aWNTY29wZU9iamVjdCgpKTsKLSAgICBK
U1N0YXRpY1Njb3BlT2JqZWN0KiBuZXdTY29wZSA9IHN0YXRpY19jYXN0PEpTU3RhdGljU2NvcGVP
YmplY3QqPihzY29wZVRlbXBsYXRlKS0+Y2xvbmUoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnIodmFs
dWUpLmpzVmFsdWUoKSk7CisgICAgSlNTdGF0aWNTY29wZU9iamVjdCogbmV3U2NvcGUgPSBzdGF0
aWNfY2FzdDxKU1N0YXRpY1Njb3BlT2JqZWN0Kj4oc2NvcGVUZW1wbGF0ZSktPmNsb25lKGNhbGxG
cmFtZSk7CiAgICAgY2FsbEZyYW1lLT51bmNoZWNrZWRSKGRzdCkgPSBuZXdTY29wZTsKIAogICAg
IHJldHVybiBjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+cHVzaChuZXdTY29wZSk7CkBAIC00OTA2
LDExICs0OTA1LDExIEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAgICAgZ290byAqKCYmc2tpcF9u
ZXdfc2NvcGUpOwogI2VuZGlmCiAgICAgREVGSU5FX09QQ09ERShvcF9wdXNoX25ld19zY29wZSkg
ewotICAgICAgICAvKiBuZXdfc2NvcGUgZHN0KHIpIHRlbXBsKHIpIHZhbHVlKHIpCisgICAgICAg
IC8qIG5ld19zY29wZSBkc3QocikgdGVtcGwocikKICAgICAgICAgIAotICAgICAgICAgICBDb25z
dHJ1Y3RzIGEgbmV3IFN0YXRpY1Njb3BlT2JqZWN0IHdob3NlIG9uZSBwcm9wZXJ0eSBpcyBzZXQg
dG8KLSAgICAgICAgICAgdmFsdWUuICBUaGF0IHNjb3BlIG9iamVjdCBpcyB0aGVuIHB1c2hlZCBv
bnRvIHRoZSBTY29wZUNoYWluLiAgVGhlCi0gICAgICAgICAgIHNjb3BlIG9iamVjdCBpcyB0aGVu
IHN0b3JlZCBpbiBkc3QgZm9yIEdDLgorICAgICAgICAgICBDb25zdHJ1Y3RzIGEgbmV3IFN0YXRp
Y1Njb3BlT2JqZWN0LCB1c2luZyB0ZW1wbCBhcyBhIHRlbXBsYXRlLiBUaGF0CisgICAgICAgICAg
IHNjb3BlIG9iamVjdCBpcyB0aGVuIHB1c2hlZCBvbnRvIHRoZSBTY29wZUNoYWluLiBUaGUgc2Nv
cGUgb2JqZWN0IGlzCisgICAgICAgICAgIHRoZW4gc3RvcmVkIGluIGRzdCBmb3IgR0MuCiAgICAg
ICAgICAqLwogICAgICAgICBjYWxsRnJhbWUtPnNldFNjb3BlQ2hhaW4oY3JlYXRlRXhjZXB0aW9u
U2NvcGUoY2FsbEZyYW1lLCB2UEMpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKaW5kZXggMjIxYTliMDg1ZDg3ZDE5NTljZWIwNDdjNzdlMmMxMDhjOTM0YjU3Yi4u
MjYzYjY3ZDgzMzI2YWVhMWU2NWViMWYwMzZlZjFiNjBiM2Y5MWU2NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC0xMDEzLDcgKzEwMTMsNiBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9wdXNoX25ld19zY29wZShJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9u
KQogewogICAgIEpJVFN0dWJDYWxsIHN0dWJDYWxsKHRoaXMsIGN0aV9vcF9wdXNoX25ld19zY29w
ZSk7CiAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZCwgcmVnVDEpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGN1cnJlbnRJbnN0cnVjdGlv
blszXS51Lm9wZXJhbmQsIHJlZ1QyKTsKICAgICBzdHViQ2FsbC5jYWxsKGN1cnJlbnRJbnN0cnVj
dGlvblsxXS51Lm9wZXJhbmQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wY29kZXMzMl82NC5jcHAKaW5kZXggODMxZjlmNmE0YjFiODEyNjljZjFkYjdiN2NkYzM0MWQ5
N2IwZTRlNy4uZTczNDZlMTNmMmRhMTJjNjdmZThhMmJmMzQwNmQyNTU4MzRkZjViYyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtMTMzMiw3
ICsxMzMyLDYgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfcHVzaF9uZXdfc2NvcGUoSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBKSVRTdHViQ2FsbCBzdHViQ2FsbCh0aGlzLCBj
dGlfb3BfcHVzaF9uZXdfc2NvcGUpOwogICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGN1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpOwotICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KGN1cnJl
bnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgIHN0dWJDYWxsLmNhbGwoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKaW5kZXggN2U1ZTBhYjUwZTRmNzI1MjUzMmE4YjdjMDNiYmIyZTI3ZjE1Yzg4Yy4u
NGY2MTkzODA1NDczNTFjMTJhNmUwODY1MWFmZWM2YjRlMGI1MWRiOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTM0MDAsOCArMzQwMCw3IEBAIERFRklORV9TVFVC
X0ZVTkNUSU9OKEpTT2JqZWN0Kiwgb3BfcHVzaF9uZXdfc2NvcGUpCiAgICAgQVNTRVJUKHNjb3Bl
VGVtcGxhdGUtPmlzU3RhdGljU2NvcGVPYmplY3QoKSk7CiAKICAgICBDYWxsRnJhbWUqIGNhbGxG
cmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwotICAgIEpTVmFsdWUgdmFsdWUgPSBzdGFja0Zy
YW1lLmFyZ3NbMV0uanNWYWx1ZSgpOwotICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIG5ld1Njb3Bl
ID0gc3RhdGljX2Nhc3Q8SlNTdGF0aWNTY29wZU9iamVjdCo+KHNjb3BlVGVtcGxhdGUpLT5jbG9u
ZShjYWxsRnJhbWUsIHZhbHVlKTsKKyAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBuZXdTY29wZSA9
IHN0YXRpY19jYXN0PEpTU3RhdGljU2NvcGVPYmplY3QqPihzY29wZVRlbXBsYXRlKS0+Y2xvbmUo
Y2FsbEZyYW1lKTsKICAgICBjYWxsRnJhbWUtPnNldFNjb3BlQ2hhaW4oY2FsbEZyYW1lLT5zY29w
ZUNoYWluKCktPnB1c2gobmV3U2NvcGUpKTsKICAgICByZXR1cm4gbmV3U2NvcGU7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>