<?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>95519</bug_id>
          
          <creation_ts>2012-08-30 18:35:47 -0700</creation_ts>
          <short_desc>Add new V8DependentRetained that allows keeping a v8::Object alive as long as another v8::Object is alive</short_desc>
          <delta_ts>2012-12-05 17:59:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>93661</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Elliott Sprehn">esprehn</reporter>
          <assigned_to name="Elliott Sprehn">esprehn</assigned_to>
          <cc>abarth</cc>
    
    <cc>adamk</cc>
    
    <cc>arv</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>709220</commentid>
    <comment_count>0</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-08-30 18:35:47 -0700</bug_when>
    <thetext>Add new V8DependentRetained that allows keeping a v8::Object alive as long as another v8::Object is alive</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709226</commentid>
    <comment_count>1</comment_count>
      <attachid>161599</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-08-30 18:38:17 -0700</bug_when>
    <thetext>Created attachment 161599
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709227</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-30 18:40:20 -0700</bug_when>
    <thetext>Attachment 161599 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/bindings/v8/V8HiddenPropertyName.h:53:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/WebCore/bindings/v8/V8HiddenPropertyName.h:62:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709233</commentid>
    <comment_count>3</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-08-30 18:49:38 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 161599 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
&gt; Source/WebCore/bindings/v8/V8HiddenPropertyName.h:53:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
&gt; Source/WebCore/bindings/v8/V8HiddenPropertyName.h:62:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; Total errors found: 2 in 5 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Should I reformat the whole file to fix the indentation? It&apos;s weird to have one line that&apos;s indented wrong.

Also, the default argument value &quot;useless name&quot; warning seems like a bug in check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709528</commentid>
    <comment_count>4</comment_count>
      <attachid>161599</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-31 05:48:06 -0700</bug_when>
    <thetext>Comment on attachment 161599
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        v8::Object is alive. This is useful for keeping callbacks attached to wrappers without
&gt; +        keeping strong references to v8::Objects in the C++ side which can result in leaks
&gt; +        when cycles are created.

Would you elaborate on what use cases you are assuming?

&gt; Source/WebCore/ChangeLog:13
&gt; +        No new tests needed, this will be used to fix MutationObservers which will have tests.

I might want to see the patch to understand use cases.

&gt; Source/WebCore/bindings/v8/V8DependentRetained.h:76
&gt; +        static double nextId = 0;

This is not thread-safe (i.e. not Worker-safe).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709575</commentid>
    <comment_count>5</comment_count>
      <attachid>161599</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-08-31 06:37:15 -0700</bug_when>
    <thetext>Comment on attachment 161599
Patch

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

This seems useful

&gt;&gt; Source/WebCore/bindings/v8/V8DependentRetained.h:76
&gt;&gt; +        static double nextId = 0;
&gt; 
&gt; This is not thread-safe (i.e. not Worker-safe).

Why is this a double?

&gt; Source/WebCore/bindings/v8/V8DependentRetained.h:81
&gt; +        name.append(V8_DEPENDENT_RETAINED, sizeof(V8_DEPENDENT_RETAINED) - 1);

Having this long common prefix makes lookups slower. Consider having a short prefix or make the common substring a suffix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709576</commentid>
    <comment_count>6</comment_count>
      <attachid>161599</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-08-31 06:37:16 -0700</bug_when>
    <thetext>Comment on attachment 161599
Patch

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

This seems useful

&gt;&gt; Source/WebCore/bindings/v8/V8DependentRetained.h:76
&gt;&gt; +        static double nextId = 0;
&gt; 
&gt; This is not thread-safe (i.e. not Worker-safe).

Why is this a double?

&gt; Source/WebCore/bindings/v8/V8DependentRetained.h:81
&gt; +        name.append(V8_DEPENDENT_RETAINED, sizeof(V8_DEPENDENT_RETAINED) - 1);

Having this long common prefix makes lookups slower. Consider having a short prefix or make the common substring a suffix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709674</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-31 08:59:14 -0700</bug_when>
    <thetext>&gt; Should I reformat the whole file to fix the indentation? It&apos;s weird to have one line that&apos;s indented wrong.

You should reformat the whole file, but in a separate patch.

&gt; Also, the default argument value &quot;useless name&quot; warning seems like a bug in check-webkit-style.

You don&apos;t need a name when defining a default argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709686</commentid>
    <comment_count>8</comment_count>
      <attachid>161599</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-31 09:06:37 -0700</bug_when>
    <thetext>Comment on attachment 161599
Patch

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

&gt; Source/WebCore/bindings/v8/V8DependentRetained.h:77
&gt; +        v8::HandleScope scope;

I don&apos;t think you need a HandleScope here.

&gt; Source/WebCore/bindings/v8/V8DependentRetained.h:83
&gt; +        return v8::Persistent&lt;v8::String&gt;::New(V8HiddenPropertyName::hiddenReferenceName(name.data(), NewString));

Calling v8::Persistent&lt;v8::String&gt;::New here causes a leak.  ScopedPersistent calls New and Dispose for you.  You don&apos;t need to call it.

Did you 0-terminate name somewhere?  How does hiddenReferenceName know how long the string is?

&gt; Source/WebCore/bindings/v8/V8DependentRetained.h:96
&gt; +        m_owner.clear();

Should we clear m_propertyName too?

&gt; Source/WebCore/bindings/v8/V8HiddenPropertyName.cpp:63
&gt;      prefixedName.append(name, strlen(name));

Yeah, so, we&apos;re assuming 0-termination here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709689</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-31 09:08:15 -0700</bug_when>
    <thetext>Do we plan to use this mechanism for EventListeners?  If so, we&apos;ll need a thread-safe solution.  If not, we can add an ASSERT(isMainThread()) and solve the thread safety issues if/when we need to use this mechanism in workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709764</commentid>
    <comment_count>10</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-08-31 10:27:51 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 161599 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161599&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        v8::Object is alive. This is useful for keeping callbacks attached to wrappers without
&gt; &gt; +        keeping strong references to v8::Objects in the C++ side which can result in leaks
&gt; &gt; +        when cycles are created.
&gt; 
&gt; Would you elaborate on what use cases you are assuming?
&gt; 

See WKBug 93661 for context. This is so a MutationObserver or UndoManager can keep it&apos;s callback alive without creating cycles between the JS heap and the C++ world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709772</commentid>
    <comment_count>11</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-08-31 10:32:15 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 161599 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161599&amp;action=review
&gt; 
&gt; This seems useful
&gt; 
&gt; &gt;&gt; Source/WebCore/bindings/v8/V8DependentRetained.h:76
&gt; &gt;&gt; +        static double nextId = 0;
&gt; &gt; 
&gt; &gt; This is not thread-safe (i.e. not Worker-safe).
&gt; 
&gt; Why is this a double?

No particular reason except that numberToString takes a double. I&apos;ll switch to int.

&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8DependentRetained.h:81
&gt; &gt; +        name.append(V8_DEPENDENT_RETAINED, sizeof(V8_DEPENDENT_RETAINED) - 1);
&gt; 
&gt; Having this long common prefix makes lookups slower. Consider having a short prefix or make the common substring a suffix.

This was per the request of abarth. I originally had a separate weak handle for direct access and skipped the hash lookup on read entirely, but he said to ignore perf for now and use the long prefix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709779</commentid>
    <comment_count>12</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-08-31 10:35:28 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 161599 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=161599&amp;action=review
&gt; ...
&gt; 
&gt; Did you 0-terminate name somewhere?  How does hiddenReferenceName know how long the string is?
&gt; 
&gt; &gt; 

This is a duplication of the logic in hiddenReferenceName() which assumed you passed a cont char* to a NUL terminated string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709782</commentid>
    <comment_count>13</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-08-31 10:37:53 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Do we plan to use this mechanism for EventListeners?  If so, we&apos;ll need a thread-safe solution.  If not, we can add an ASSERT(isMainThread()) and solve the thread safety issues if/when we need to use this mechanism in workers.

I already have this ASSERT. I would like to attempt to move event listeners eventually, but for now MutationObservers and UndoManager are the targets, and they&apos;re not accessible inside a Worker.

If it&apos;s trivial to make this thread safe I&apos;ll do it now, otherwise I&apos;d like to land this and fix MutationObservers before trying to tackle that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709819</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-31 11:11:24 -0700</bug_when>
    <thetext>&gt; This is a duplication of the logic in hiddenReferenceName() which assumed you passed a cont char* to a NUL terminated string.

Which line of code NUL terminates the string?

&gt; I already have this ASSERT.

Yes you do!  :)

The easiest way to make this thread safe is to put the counter in V8PerIsolateData and use V8PerIsolateData::current() to retrieve it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710112</commentid>
    <comment_count>15</comment_count>
      <attachid>161804</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-08-31 18:07:05 -0700</bug_when>
    <thetext>Created attachment 161804
Patch

Make this thread safe, fix NUL termination, and make get() faster by using a separate weak Handle. In discussions with adamk and ojan, and per Arvs comment it seems like we should use a little more memory here and not worry about the hashing speed for access. You&apos;re likely to have only a few MutationObservers or DOMTransactions, but they may execute many times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710117</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-31 18:10:52 -0700</bug_when>
    <thetext>Attachment 161804 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/bindings/v8/V8HiddenPropertyName.h:53:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710121</commentid>
    <comment_count>17</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-31 18:45:36 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; Would you elaborate on what use cases you are assuming?
&gt; 
&gt; See WKBug 93661 for context. This is so a MutationObserver or UndoManager can keep it&apos;s callback alive without creating cycles between the JS heap and the C++ world.

Thanks for the clarification! This feature looks useful:)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710194</commentid>
    <comment_count>18</comment_count>
      <attachid>161804</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-01 01:07:39 -0700</bug_when>
    <thetext>Comment on attachment 161804
Patch

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

This looks great.  One nit about using the preprocessor.

&gt; Source/WebCore/bindings/v8/V8DependentRetained.h:43
&gt; +#define V8_DEPENDENT_RETAINED &quot;V8DependentRetained&quot;

Generally we prefer to avoid using the preprocessor for constants.  Perhaps this can be a local constant in createPropertyName?

&gt; Source/WebCore/bindings/v8/V8DependentRetained.h:56
&gt; +        m_owner.get().MakeWeak(this, &amp;V8DependentRetained::weakCallback);
&gt; +        m_value.get().MakeWeak(this, &amp;V8DependentRetained::weakCallback);

It seems like we&apos;ll always get the weak callback from m_owner first because no one else is going to drop the reference from m_owner to m_value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712707</commentid>
    <comment_count>19</comment_count>
      <attachid>162380</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-09-05 17:38:46 -0700</bug_when>
    <thetext>Created attachment 162380
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712712</commentid>
    <comment_count>20</comment_count>
      <attachid>162381</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-09-05 17:47:39 -0700</bug_when>
    <thetext>Created attachment 162381
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712714</commentid>
    <comment_count>21</comment_count>
      <attachid>162383</attachid>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-09-05 17:48:26 -0700</bug_when>
    <thetext>Created attachment 162383
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713104</commentid>
    <comment_count>22</comment_count>
      <attachid>162383</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 03:05:25 -0700</bug_when>
    <thetext>Comment on attachment 162383
Patch for landing

Clearing flags on attachment: 162383

Committed r127718: &lt;http://trac.webkit.org/changeset/127718&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713105</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-06 03:05:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784382</commentid>
    <comment_count>24</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-05 17:58:36 -0800</bug_when>
    <thetext>Quick question: V8DependentRetailed is not yet used. Is it going to be used by MutationObservers in the future?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784384</commentid>
    <comment_count>25</comment_count>
    <who name="Elliott Sprehn">esprehn</who>
    <bug_when>2012-12-05 17:59:05 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Quick question: V8DependentRetailed is not yet used. Is it going to be used by MutationObservers in the future?

No, the plan now is delete both V8 and JSDependentRetained.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161599</attachid>
            <date>2012-08-30 18:38:17 -0700</date>
            <delta_ts>2012-08-31 18:07:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95519-20120830183806.patch</filename>
            <type>text/plain</type>
            <size>8849</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZhNTUwOTY5NjhhOTE4
YjZlNzE5MzllZTRjMmU1YzhkMjhjY2I2Mi4uYTBlYzNlMzc1M2E3OTQyNGFjY2E0ZTNlMWJkMzk3
ZjMwOWM5NTJkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTA4LTMwICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBuZXcgVjhE
ZXBlbmRlbnRSZXRhaW5lZCB0aGF0IGFsbG93cyBrZWVwaW5nIGEgdjg6Ok9iamVjdCBhbGl2ZSBh
cyBsb25nIGFzIGFub3RoZXIgdjg6Ok9iamVjdCBpcyBhbGl2ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1MTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IFY4RGVwZW5kZW50UmV0YWluZWQg
dGhhdCBhbGxvd3Mga2VlcGluZyBhIHY4OjpPYmplY3QgYWxpdmUgYXMgbG9uZyBhcyBhbm90aGVy
CisgICAgICAgIHY4OjpPYmplY3QgaXMgYWxpdmUuIFRoaXMgaXMgdXNlZnVsIGZvciBrZWVwaW5n
IGNhbGxiYWNrcyBhdHRhY2hlZCB0byB3cmFwcGVycyB3aXRob3V0CisgICAgICAgIGtlZXBpbmcg
c3Ryb25nIHJlZmVyZW5jZXMgdG8gdjg6Ok9iamVjdHMgaW4gdGhlIEMrKyBzaWRlIHdoaWNoIGNh
biByZXN1bHQgaW4gbGVha3MKKyAgICAgICAgd2hlbiBjeWNsZXMgYXJlIGNyZWF0ZWQuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZCwgdGhpcyB3aWxsIGJlIHVzZWQgdG8gZml4IE11dGF0
aW9uT2JzZXJ2ZXJzIHdoaWNoIHdpbGwgaGF2ZSB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERlcGVuZGVudFJldGFpbmVkLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOERlcGVuZGVudFJldGFpbmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RGVwZW5kZW50UmV0YWluZWQ6OlY4RGVwZW5kZW50UmV0YWluZWQp
OgorICAgICAgICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5lZDo6flY4RGVwZW5kZW50UmV0
YWluZWQpOgorICAgICAgICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5lZDo6Z2V0KTogR2V0
cyB0aGUgdjg6Ok9iamVjdCB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OlY4RGVwZW5kZW50UmV0
YWluZWQ6OmlzRW1wdHkpOiBDaGVja3MgaWYgdGhlIHZhbHVlIGlzIHN0aWxsIGFsaXZlLgorICAg
ICAgICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5lZDo6Y3JlYXRlUHJvcGVydHlOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RGVwZW5kZW50UmV0YWluZWQ6OndlYWtDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjpyZWxlYXNlKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOEhpZGRlblByb3BlcnR5TmFtZTo6aGlkZGVuUmVmZXJlbmNlTmFtZSk6IE1vZGlmaWVkIHRv
IGFsbG93IGNyZWF0aW5nIGhpZGRlbiBTdHJpbmcgb3IgU3ltYm9sIG5hbWVzLgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChWOEhpZGRlblBy
b3BlcnR5TmFtZSk6CisKIDIwMTItMDgtMjQgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIENTUyAyLjEgZmFpbHVyZTogbWFyZ2luLWNvbGxhcHNlLWNsZWFyLTAx
MiBmYWlscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGUwMjk5YWFlM2NhOWRiMjBhMTI5YTUwZGYxMjNh
NTc4NDlhYjQ3ZDkuLmVkN2NiOTljNDQ0YWQyNjgxMDA4ZDlmYjJlNTZiNDdhYTNjNjEyMDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cGkKQEAgLTIyNjYsNiArMjI2Niw3IEBACiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvVjhDYWxsYmFjay5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbGxlY3Rp
b24uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaCcsCisgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvVjhEZXBlbmRlbnRSZXRhaW5lZC5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
VjhET01NYXAuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RGVwZW5kZW50UmV0YWluZWQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGVwZW5k
ZW50UmV0YWluZWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWYwZDAxMmU3OTJjMmYyOWE5MmNlMzI4NGNiNTE3
MDczNjg4NDI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhEZXBlbmRlbnRSZXRhaW5lZC5oCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBWOERlcGVuZGVu
dFJldGFpbmVkX2gKKyNkZWZpbmUgVjhEZXBlbmRlbnRSZXRhaW5lZF9oCisKKyNpbmNsdWRlICJT
Y29wZWRQZXJzaXN0ZW50LmgiCisjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKKyNp
bmNsdWRlIDx2OC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvZHRvYS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKyNkZWZpbmUgVjhfREVQRU5ERU5UX1JFVEFJTkVEICJWOERlcGVuZGVudFJldGFpbmVkIgor
CitjbGFzcyBWOERlcGVuZGVudFJldGFpbmVkIHsKK3B1YmxpYzoKKyAgICBWOERlcGVuZGVudFJl
dGFpbmVkKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb3duZXIsIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gdmFsdWUpCisgICAgICAgIDogbV9vd25lcihvd25lcikKKyAgICAgICAgLCBtX3Byb3BlcnR5
TmFtZShjcmVhdGVQcm9wZXJ0eU5hbWUoKSkKKyAgICB7CisgICAgICAgIEFTU0VSVCghb3duZXIu
SXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKCF2YWx1ZS5Jc0VtcHR5KCkpOworICAgICAgICBv
d25lci0+U2V0SGlkZGVuVmFsdWUobV9wcm9wZXJ0eU5hbWUuZ2V0KCksIHZhbHVlKTsKKyAgICAg
ICAgbV9vd25lci5nZXQoKS5NYWtlV2Vhayh0aGlzLCAmVjhEZXBlbmRlbnRSZXRhaW5lZDo6d2Vh
a0NhbGxiYWNrKTsKKyAgICB9CisKKyAgICB+VjhEZXBlbmRlbnRSZXRhaW5lZCgpCisgICAgewor
ICAgICAgICByZWxlYXNlKCk7CisgICAgfQorCisgICAgdjg6OkxvY2FsPHY4OjpPYmplY3Q+IGdl
dCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9vd25lci0+R2V0SGlkZGVuVmFsdWUo
bV9wcm9wZXJ0eU5hbWUuZ2V0KCkpLkFzPHY4OjpPYmplY3Q+KCk7CisgICAgfQorCisgICAgYm9v
bCBpc0VtcHR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX293bmVyLmlzRW1wdHko
KSB8fCBnZXQoKS5Jc0VtcHR5KCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBjcmVhdGVQcm9wZXJ0eU5hbWUoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgc3RhdGljIGRvdWJsZSBuZXh0SWQg
PSAwOworICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAgICAgIE51bWJlclRvU3Ry
aW5nQnVmZmVyIGJ1ZmZlcjsKKyAgICAgICAgVmVjdG9yPGNoYXIsIDMyPiBuYW1lOworICAgICAg
ICBjb25zdCBjaGFyKiBpZCA9IG51bWJlclRvU3RyaW5nKG5leHRJZCsrLCBidWZmZXIpOworICAg
ICAgICBuYW1lLmFwcGVuZChWOF9ERVBFTkRFTlRfUkVUQUlORUQsIHNpemVvZihWOF9ERVBFTkRF
TlRfUkVUQUlORUQpIC0gMSk7CisgICAgICAgIG5hbWUuYXBwZW5kKGlkLCBzdHJsZW4oaWQpKTsK
KyAgICAgICAgcmV0dXJuIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+OjpOZXcoVjhIaWRkZW5Q
cm9wZXJ0eU5hbWU6OmhpZGRlblJlZmVyZW5jZU5hbWUobmFtZS5kYXRhKCksIE5ld1N0cmluZykp
OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2
ODo6VmFsdWU+IG9iamVjdCwgdm9pZCogcGFyYW1ldGVyKQorICAgIHsKKyAgICAgICAgVjhEZXBl
bmRlbnRSZXRhaW5lZCogdmFsdWUgPSBzdGF0aWNfY2FzdDxWOERlcGVuZGVudFJldGFpbmVkKj4o
cGFyYW1ldGVyKTsKKyAgICAgICAgdmFsdWUtPnJlbGVhc2UoKTsKKyAgICB9CisKKyAgICB2b2lk
IHJlbGVhc2UoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX293bmVyLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIG1fb3duZXItPkRlbGV0ZUhpZGRlblZhbHVlKG1fcHJvcGVydHlOYW1lLmdldCgpKTsK
KyAgICAgICAgbV9vd25lci5jbGVhcigpOworICAgIH0KKworICAgIFNjb3BlZFBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gbV9vd25lcjsKKyAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IG1f
cHJvcGVydHlOYW1lOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
VjhEZXBlbmRlbnRSZXRhaW5lZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEhpZGRlblByb3BlcnR5TmFtZS5jcHAKaW5kZXggZmRkZGFmYmFlMTlhNGVhNzZlMjA5MzA1
NjE5YzVkOThhNGViYzQ4Mi4uMTExMTk4YTU2YjEzZGVhODU2NTE4NzFjNTY3MjhlNmU3ZGFhOTMw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0
eU5hbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVy
dHlOYW1lLmNwcApAQCAtNTUsMTMgKzU1LDIwIEBAIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gVjhI
aWRkZW5Qcm9wZXJ0eU5hbWU6Om5hbWUoKSBcCiAKIFY4X0hJRERFTl9QUk9QRVJUSUVTKFY4X0RF
RklORV9ISURERU5fUFJPUEVSVFkpOwogCi12ODo6SGFuZGxlPHY4OjpTdHJpbmc+IFY4SGlkZGVu
UHJvcGVydHlOYW1lOjpoaWRkZW5SZWZlcmVuY2VOYW1lKGNvbnN0IGNoYXIqIG5hbWUpCit2ODo6
SGFuZGxlPHY4OjpTdHJpbmc+IFY4SGlkZGVuUHJvcGVydHlOYW1lOjpoaWRkZW5SZWZlcmVuY2VO
YW1lKGNvbnN0IGNoYXIqIG5hbWUsIFY4SGlkZGVuUHJvcGVydHlDcmVhdGlvblR5cGUgdHlwZSkK
IHsKKyAgICBBU1NFUlQobmFtZSAmJiBzdHJsZW4obmFtZSkpOwogICAgIFZlY3RvcjxjaGFyLCA2
ND4gcHJlZml4ZWROYW1lOwogICAgIHByZWZpeGVkTmFtZS5hcHBlbmQoVjhfSElEREVOX1BST1BF
UlRZX1BSRUZJWCwgc2l6ZW9mKFY4X0hJRERFTl9QUk9QRVJUWV9QUkVGSVgpIC0gMSk7Ci0gICAg
QVNTRVJUKG5hbWUgJiYgc3RybGVuKG5hbWUpKTsKICAgICBwcmVmaXhlZE5hbWUuYXBwZW5kKG5h
bWUsIHN0cmxlbihuYW1lKSk7Ci0gICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5bWJvbChwcmVm
aXhlZE5hbWUuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHByZWZpeGVkTmFtZS5zaXplKCkpKTsK
KyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIE5ld1N5bWJvbDoKKyAgICAgICAgcmV0dXJu
IHY4OjpTdHJpbmc6Ok5ld1N5bWJvbChwcmVmaXhlZE5hbWUuZGF0YSgpLCBzdGF0aWNfY2FzdDxp
bnQ+KHByZWZpeGVkTmFtZS5zaXplKCkpKTsKKyAgICBjYXNlIE5ld1N0cmluZzoKKyAgICAgICAg
cmV0dXJuIHY4OjpTdHJpbmc6Ok5ldyhwcmVmaXhlZE5hbWUuZGF0YSgpLCBzdGF0aWNfY2FzdDxp
bnQ+KHByZWZpeGVkTmFtZS5zaXplKCkpKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlN0cmluZz4oKTsKIH0KIAogdjg6OlBlcnNp
c3RlbnQ8djg6OlN0cmluZz4gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmNyZWF0ZVN0cmluZyhjb25z
dCBjaGFyKiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhp
ZGRlblByb3BlcnR5TmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Q
cm9wZXJ0eU5hbWUuaAppbmRleCA5ZGRmYTMwZjU3ZjI4NzU2NTIwMTQ5MDQxNDBmZWEzYjJmMmZm
NjBiLi5lODdmOTE5MDQ0YjdkMTRjZmJjYzFkNDNiNmE2N2U2N2I0YmRhNzM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKQEAgLTUw
LDYgKzUwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFYodGV4dFRyYWNrcykgXAogICAg
IFYodG9TdHJpbmdTdHJpbmcpCiAKKyAgICBlbnVtIFY4SGlkZGVuUHJvcGVydHlDcmVhdGlvblR5
cGUgeyBOZXdTeW1ib2wsIE5ld1N0cmluZyB9OworCiAgICAgY2xhc3MgVjhIaWRkZW5Qcm9wZXJ0
eU5hbWUgewogICAgIHB1YmxpYzoKICAgICAgICAgVjhIaWRkZW5Qcm9wZXJ0eU5hbWUoKSB7IH0K
QEAgLTU3LDcgKzU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWOF9ISURERU5f
UFJPUEVSVElFUyhWOF9ERUNMQVJFX1BST1BFUlRZKTsKICN1bmRlZiBWOF9ERUNMQVJFX1BST1BF
UlRZCiAKLSAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gaGlkZGVuUmVmZXJl
bmNlTmFtZShjb25zdCBjaGFyKiBuYW1lKTsKKyAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlN0cmluZz4gaGlkZGVuUmVmZXJlbmNlTmFtZShjb25zdCBjaGFyKiBuYW1lLCBWOEhpZGRlblBy
b3BlcnR5Q3JlYXRpb25UeXBlIHR5cGUgPSBOZXdTeW1ib2wpOwogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IGNyZWF0ZVN0cmluZyhjb25z
dCBjaGFyKiBrZXkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161804</attachid>
            <date>2012-08-31 18:07:05 -0700</date>
            <delta_ts>2012-09-05 17:38:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95519-20120831180653.patch</filename>
            <type>text/plain</type>
            <size>10881</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZhNTUwOTY5NjhhOTE4
YjZlNzE5MzllZTRjMmU1YzhkMjhjY2I2Mi4uZTNjODlhY2M1OThiYzdjYjJhNzk5ZjNlNjQ1M2Ex
N2UyM2JiYjFmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA4LTMxICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBuZXcgVjhE
ZXBlbmRlbnRSZXRhaW5lZCB0aGF0IGFsbG93cyBrZWVwaW5nIGEgdjg6Ok9iamVjdCBhbGl2ZSBh
cyBsb25nIGFzIGFub3RoZXIgdjg6Ok9iamVjdCBpcyBhbGl2ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1MTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IFY4RGVwZW5kZW50UmV0YWluZWQg
dGhhdCBhbGxvd3Mga2VlcGluZyBhIHY4OjpPYmplY3QgYWxpdmUgYXMgbG9uZyBhcyBhbm90aGVy
CisgICAgICAgIHY4OjpPYmplY3QgaXMgYWxpdmUuIFRoaXMgaXMgdXNlZnVsIGZvciBrZWVwaW5n
IGNhbGxiYWNrcyBhdHRhY2hlZCB0byB3cmFwcGVycyB3aXRob3V0CisgICAgICAgIGtlZXBpbmcg
c3Ryb25nIHJlZmVyZW5jZXMgdG8gdjg6Ok9iamVjdHMgaW4gdGhlIEMrKyBzaWRlIHdoaWNoIGNh
biByZXN1bHQgaW4gbGVha3MKKyAgICAgICAgd2hlbiBjeWNsZXMgYXJlIGNyZWF0ZWQuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZCwgdGhpcyB3aWxsIGJlIHVzZWQgdG8gZml4IE11dGF0
aW9uT2JzZXJ2ZXJzIHdoaWNoIHdpbGwgaGF2ZSB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUu
Z3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERlcGVuZGVudFJldGFpbmVkLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOERlcGVuZGVudFJldGFpbmVkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RGVwZW5kZW50UmV0YWluZWQ6OlY4RGVwZW5kZW50UmV0YWluZWQp
OgorICAgICAgICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5lZDo6flY4RGVwZW5kZW50UmV0
YWluZWQpOgorICAgICAgICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5lZDo6Z2V0KTogR2V0
cyB0aGUgdjg6Ok9iamVjdCB2YWx1ZS4KKyAgICAgICAgKFdlYkNvcmU6OlY4RGVwZW5kZW50UmV0
YWluZWQ6OmlzRW1wdHkpOiBDaGVja3MgaWYgdGhlIHZhbHVlIGlzIHN0aWxsIGFsaXZlLgorICAg
ICAgICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5lZDo6Y3JlYXRlUHJvcGVydHlOYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RGVwZW5kZW50UmV0YWluZWQ6OndlYWtDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjpyZWxlYXNlKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOEhpZGRlblByb3BlcnR5TmFtZTo6aGlkZGVuUmVmZXJlbmNlTmFtZSk6IE1vZGlmaWVkIHRv
IGFsbG93IGNyZWF0aW5nIGhpZGRlbiBTdHJpbmcgb3IgU3ltYm9sIG5hbWVzLgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChWOEhpZGRlblBy
b3BlcnR5TmFtZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjpWOFBlcklzb2xhdGVEYXRhKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmg6CisgICAgICAgIChXZWJD
b3JlOjpWOFBlcklzb2xhdGVEYXRhOjpuZXh0RGVwZW5kZW50UmV0YWluZWRJZCk6IFJldHVybnMg
dGhlIG5leHQgYXZhaWxhYmxlIGhpZGRlbiBwcm9wZXJ0eSBpbmRleC4KKyAgICAgICAgKFY4UGVy
SXNvbGF0ZURhdGEpOgorCiAyMDEyLTA4LTI0ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0
Lm9yZz4KIAogICAgICAgICBDU1MgMi4xIGZhaWx1cmU6IG1hcmdpbi1jb2xsYXBzZS1jbGVhci0w
MTIgZmFpbHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlMDI5OWFhZTNjYTlkYjIwYTEyOWE1MGRmMTIz
YTU3ODQ5YWI0N2Q5Li5lZDdjYjk5YzQ0NGFkMjY4MTAwOGQ5ZmIyZTU2YjQ3YWEzYzYxMjAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0yMjY2LDYgKzIyNjYsNyBAQAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1Y4Q2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0
aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgnLAorICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RGVwZW5kZW50UmV0YWluZWQuaCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmlu
ZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4RE9NTWFwLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERlcGVuZGVudFJldGFpbmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERlcGVu
ZGVudFJldGFpbmVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM0NDY5NzQ0NjA0MjBhMjYwMDljZTUzMzRlYzZl
NTM3YzEyYzMxMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4RGVwZW5kZW50UmV0YWluZWQuaApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhEZXBlbmRl
bnRSZXRhaW5lZF9oCisjZGVmaW5lIFY4RGVwZW5kZW50UmV0YWluZWRfaAorCisjaW5jbHVkZSAi
U2NvcGVkUGVyc2lzdGVudC5oIgorI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCisj
aW5jbHVkZSAiVjhQZXJJc29sYXRlRGF0YS5oIgorI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvZHRvYS5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKKyNkZWZpbmUgVjhfREVQRU5ERU5UX1JFVEFJTkVEICJWOERlcGVuZGVudFJldGFpbmVk
IgorCitjbGFzcyBWOERlcGVuZGVudFJldGFpbmVkIHsKK3B1YmxpYzoKKyAgICBWOERlcGVuZGVu
dFJldGFpbmVkKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb3duZXIsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gdmFsdWUpCisgICAgICAgIDogbV9vd25lcihvd25lcikKKyAgICAgICAgLCBtX3ZhbHVl
KHZhbHVlKQorICAgICAgICAsIG1fcHJvcGVydHlOYW1lKGNyZWF0ZVByb3BlcnR5TmFtZSgpKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX293bmVyLklzRW1wdHkoKSk7CisgICAgICAgIEFTU0VS
VCghbV92YWx1ZS5Jc0VtcHR5KCkpOworICAgICAgICBvd25lci0+U2V0SGlkZGVuVmFsdWUobV9w
cm9wZXJ0eU5hbWUuZ2V0KCksIHZhbHVlKTsKKyAgICAgICAgbV9vd25lci5nZXQoKS5NYWtlV2Vh
ayh0aGlzLCAmVjhEZXBlbmRlbnRSZXRhaW5lZDo6d2Vha0NhbGxiYWNrKTsKKyAgICAgICAgbV92
YWx1ZS5nZXQoKS5NYWtlV2Vhayh0aGlzLCAmVjhEZXBlbmRlbnRSZXRhaW5lZDo6d2Vha0NhbGxi
YWNrKTsKKyAgICB9CisKKyAgICB+VjhEZXBlbmRlbnRSZXRhaW5lZCgpCisgICAgeworICAgICAg
ICByZWxlYXNlKCk7CisgICAgfQorCisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXQoKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUuZ2V0KCk7CisgICAgfQorCisgICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX293bmVyLmlzRW1w
dHkoKSB8fCBtX3ZhbHVlLmlzRW1wdHkoKTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2UgbWln
aHQgYWRkIGFuIGV4cGxpY2l0IHJldGFpbih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSBtZXRob2Qg
dG8gYWxsb3cKKyAgICAvLyBjcmVhdGluZyBvbmUgb2YgdGhlc2UgYW5kIGNob29zaW5nIHRoZSBv
d25lciBsYXRlci4gU3VjaCBiZWhhdmlvciBpcyByZXF1aXJlZAorICAgIC8vIGluIEpTQywgYnV0
IG5vdCBpbiB2OCByaWdodCBub3cuCisKK3ByaXZhdGU6CisgICAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlN0cmluZz4gY3JlYXRlUHJvcGVydHlOYW1lKCkKKyAgICB7CisgICAgICAgIE51bWJlclRv
U3RyaW5nQnVmZmVyIGJ1ZmZlcjsKKyAgICAgICAgVmVjdG9yPGNoYXIsIDY0PiBuYW1lOworICAg
ICAgICBjb25zdCBjaGFyKiBpZCA9IG51bWJlclRvU3RyaW5nKFY4UGVySXNvbGF0ZURhdGE6OmN1
cnJlbnQoKS0+bmV4dERlcGVuZGVudFJldGFpbmVkSWQoKSwgYnVmZmVyKTsKKyAgICAgICAgbmFt
ZS5hcHBlbmQoVjhfREVQRU5ERU5UX1JFVEFJTkVELCBzaXplb2YoVjhfREVQRU5ERU5UX1JFVEFJ
TkVEKSAtIDEpOworICAgICAgICBuYW1lLmFwcGVuZChpZCwgc3RybGVuKGlkKSArIDEpOworICAg
ICAgICByZXR1cm4gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmhpZGRlblJlZmVyZW5jZU5hbWUobmFt
ZS5kYXRhKCksIE5ld1N0cmluZyk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgd2Vha0NhbGxi
YWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBwYXJhbWV0ZXIpCisg
ICAgeworICAgICAgICBWOERlcGVuZGVudFJldGFpbmVkKiB2YWx1ZSA9IHN0YXRpY19jYXN0PFY4
RGVwZW5kZW50UmV0YWluZWQqPihwYXJhbWV0ZXIpOworICAgICAgICB2YWx1ZS0+cmVsZWFzZSgp
OworICAgIH0KKworICAgIHZvaWQgcmVsZWFzZSgpCisgICAgeworICAgICAgICBpZiAoIW1fb3du
ZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9vd25lci0+RGVsZXRlSGlkZGVuVmFsdWUobV9w
cm9wZXJ0eU5hbWUuZ2V0KCkpOworICAgICAgICBtX3ZhbHVlLmNsZWFyKCk7CisgICAgICAgIG1f
b3duZXIuY2xlYXIoKTsKKyAgICAgICAgbV9wcm9wZXJ0eU5hbWUuY2xlYXIoKTsKKyAgICB9CisK
KyAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fb3duZXI7CisgICAgU2NvcGVkUGVy
c2lzdGVudDx2ODo6T2JqZWN0PiBtX3ZhbHVlOworICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6OlN0
cmluZz4gbV9wcm9wZXJ0eU5hbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBWOERlcGVuZGVudFJldGFpbmVkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmNwcAppbmRleCBmZGRkYWZiYWUxOWE0ZWE3
NmUyMDkzMDU2MTljNWQ5OGE0ZWJjNDgyLi4xMTExOThhNTZiMTNkZWE4NTY1MTg3MWM1NjcyOGU2
ZTdkYWE5MzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRl
blByb3BlcnR5TmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRk
ZW5Qcm9wZXJ0eU5hbWUuY3BwCkBAIC01NSwxMyArNTUsMjAgQEAgdjg6OkhhbmRsZTx2ODo6U3Ry
aW5nPiBWOEhpZGRlblByb3BlcnR5TmFtZTo6bmFtZSgpIFwKIAogVjhfSElEREVOX1BST1BFUlRJ
RVMoVjhfREVGSU5FX0hJRERFTl9QUk9QRVJUWSk7CiAKLXY4OjpIYW5kbGU8djg6OlN0cmluZz4g
VjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmhpZGRlblJlZmVyZW5jZU5hbWUoY29uc3QgY2hhciogbmFt
ZSkKK3Y4OjpIYW5kbGU8djg6OlN0cmluZz4gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmhpZGRlblJl
ZmVyZW5jZU5hbWUoY29uc3QgY2hhciogbmFtZSwgVjhIaWRkZW5Qcm9wZXJ0eUNyZWF0aW9uVHlw
ZSB0eXBlKQogeworICAgIEFTU0VSVChuYW1lICYmIHN0cmxlbihuYW1lKSk7CiAgICAgVmVjdG9y
PGNoYXIsIDY0PiBwcmVmaXhlZE5hbWU7CiAgICAgcHJlZml4ZWROYW1lLmFwcGVuZChWOF9ISURE
RU5fUFJPUEVSVFlfUFJFRklYLCBzaXplb2YoVjhfSElEREVOX1BST1BFUlRZX1BSRUZJWCkgLSAx
KTsKLSAgICBBU1NFUlQobmFtZSAmJiBzdHJsZW4obmFtZSkpOwogICAgIHByZWZpeGVkTmFtZS5h
cHBlbmQobmFtZSwgc3RybGVuKG5hbWUpKTsKLSAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3U3lt
Ym9sKHByZWZpeGVkTmFtZS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4ocHJlZml4ZWROYW1lLnNp
emUoKSkpOworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTmV3U3ltYm9sOgorICAgICAg
ICByZXR1cm4gdjg6OlN0cmluZzo6TmV3U3ltYm9sKHByZWZpeGVkTmFtZS5kYXRhKCksIHN0YXRp
Y19jYXN0PGludD4ocHJlZml4ZWROYW1lLnNpemUoKSkpOworICAgIGNhc2UgTmV3U3RyaW5nOgor
ICAgICAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3KHByZWZpeGVkTmFtZS5kYXRhKCksIHN0YXRp
Y19jYXN0PGludD4ocHJlZml4ZWROYW1lLnNpemUoKSkpOworICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6U3RyaW5nPigpOwogfQogCiB2
ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBWOEhpZGRlblByb3BlcnR5TmFtZTo6Y3JlYXRlU3Ry
aW5nKGNvbnN0IGNoYXIqIGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEhpZGRlblByb3BlcnR5TmFtZS5oCmluZGV4IDlkZGZhMzBmNTdmMjg3NTY1MjAxNDkwNDE0MGZl
YTNiMmYyZmY2MGIuLjQwYzcwMGY2YjM4YWNmZDY3NjRiNTdkNzU3YzIwOWE3OTI3ZGQ5MWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1l
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUu
aApAQCAtNTAsNiArNTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgVih0ZXh0VHJhY2tz
KSBcCiAgICAgVih0b1N0cmluZ1N0cmluZykKIAorICAgIGVudW0gVjhIaWRkZW5Qcm9wZXJ0eUNy
ZWF0aW9uVHlwZSB7IE5ld1N5bWJvbCwgTmV3U3RyaW5nIH07CisKICAgICBjbGFzcyBWOEhpZGRl
blByb3BlcnR5TmFtZSB7CiAgICAgcHVibGljOgogICAgICAgICBWOEhpZGRlblByb3BlcnR5TmFt
ZSgpIHsgfQpAQCAtNTcsNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFY4
X0hJRERFTl9QUk9QRVJUSUVTKFY4X0RFQ0xBUkVfUFJPUEVSVFkpOwogI3VuZGVmIFY4X0RFQ0xB
UkVfUFJPUEVSVFkKIAotICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBoaWRk
ZW5SZWZlcmVuY2VOYW1lKGNvbnN0IGNoYXIqIG5hbWUpOworICAgICAgICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6U3RyaW5nPiBoaWRkZW5SZWZlcmVuY2VOYW1lKGNvbnN0IGNoYXIqLCBWOEhpZGRl
blByb3BlcnR5Q3JlYXRpb25UeXBlID0gTmV3U3ltYm9sKTsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBjcmVhdGVTdHJpbmcoY29uc3Qg
Y2hhcioga2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVy
SXNvbGF0ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRl
RGF0YS5jcHAKaW5kZXggMTgzYzMxMmVjMzJiODZjYTYwMDk3YmZlYzBiM2EzY2Y5Y2FmYTQwMS4u
MDAxMzBkMzYwMTBjOTNlNTNkYmQyNjNiM2Y4MjQ2ZTEwNWY1OTYzMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKQEAgLTM4LDYgKzM4LDcg
QEAgVjhQZXJJc29sYXRlRGF0YTo6VjhQZXJJc29sYXRlRGF0YSh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKICAgICAsIG1faGlkZGVuUHJvcGVydHlOYW1lKGFkb3B0UHRyKG5ldyBWOEhpZGRlblByb3Bl
cnR5TmFtZSgpKSkKICAgICAsIG1fY29uc3RydWN0b3JNb2RlKENvbnN0cnVjdG9yTW9kZTo6Q3Jl
YXRlTmV3T2JqZWN0KQogICAgICwgbV9yZWN1cnNpb25MZXZlbCgwKQorICAgICwgbV9uZXh0RGVw
ZW5kZW50UmV0YWluZWRJZCgwKQogI2lmbmRlZiBOREVCVUcKICAgICAsIG1faW50ZXJuYWxTY3Jp
cHRSZWN1cnNpb25MZXZlbCgwKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFBlcklzb2xhdGVEYXRhLmgKaW5kZXggNmJjNTFkMjgxOTViNGU2YmM3ZGVhY2YxYzM0YTRk
YTg1OTU5YzlkNC4uMzFhY2YwZWU2MjM5YTc0YjgwMzA4ZDcwYzgyMjcwNjFlMWI3N2NjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaApAQCAtMTEz
LDYgKzExMyw4IEBAIHB1YmxpYzoKICAgICBpbnQgaW5jcmVtZW50UmVjdXJzaW9uTGV2ZWwoKSB7
IHJldHVybiArK21fcmVjdXJzaW9uTGV2ZWw7IH0KICAgICBpbnQgZGVjcmVtZW50UmVjdXJzaW9u
TGV2ZWwoKSB7IHJldHVybiAtLW1fcmVjdXJzaW9uTGV2ZWw7IH0KIAorICAgIGludCBuZXh0RGVw
ZW5kZW50UmV0YWluZWRJZCgpIHsgcmV0dXJuIG1fbmV4dERlcGVuZGVudFJldGFpbmVkSWQrKzsg
fQorCiAjaWZuZGVmIE5ERUJVRwogICAgIEdsb2JhbEhhbmRsZU1hcCYgZ2xvYmFsSGFuZGxlTWFw
KCkgeyByZXR1cm4gbV9nbG9iYWxIYW5kbGVNYXA7IH0KIApAQCAtMTU1LDYgKzE1Nyw3IEBAIHBy
aXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIENvbnN0cnVjdG9yTW9kZTsKIAogICAgIGludCBtX3Jl
Y3Vyc2lvbkxldmVsOworICAgIGludCBtX25leHREZXBlbmRlbnRSZXRhaW5lZElkOwogCiAjaWZu
ZGVmIE5ERUJVRwogICAgIEdsb2JhbEhhbmRsZU1hcCBtX2dsb2JhbEhhbmRsZU1hcDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162380</attachid>
            <date>2012-09-05 17:38:46 -0700</date>
            <delta_ts>2012-09-05 17:47:36 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-95519-20120905173827.patch</filename>
            <type>text/plain</type>
            <size>11317</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZhNTUwOTY5NjhhOTE4
YjZlNzE5MzllZTRjMmU1YzhkMjhjY2I2Mi4uOTlkMjJiNDMwOTUxYjgxNjcwMTAyODY0YjAwN2Jk
MzZjMDYxYmNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA4LTMxICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBuZXcgVjhE
ZXBlbmRlbnRSZXRhaW5lZCB0aGF0IGFsbG93cyBrZWVwaW5nIGEgdjg6Ok9iamVjdCBhbGl2ZSBh
cyBsb25nIGFzIGFub3RoZXIgdjg6Ok9iamVjdCBpcyBhbGl2ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1MTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgorCisgICAgICAgIEFkZCBuZXcgVjhEZXBlbmRlbnRSZXRhaW5lZCB0aGF0
IGFsbG93cyBrZWVwaW5nIGEgdjg6Ok9iamVjdCBhbGl2ZSBhcyBsb25nIGFzIGFub3RoZXIKKyAg
ICAgICAgdjg6Ok9iamVjdCBpcyBhbGl2ZS4gVGhpcyBpcyB1c2VmdWwgZm9yIGtlZXBpbmcgY2Fs
bGJhY2tzIGF0dGFjaGVkIHRvIHdyYXBwZXJzIHdpdGhvdXQKKyAgICAgICAga2VlcGluZyBzdHJv
bmcgcmVmZXJlbmNlcyB0byB2ODo6T2JqZWN0cyBpbiB0aGUgQysrIHNpZGUgd2hpY2ggY2FuIHJl
c3VsdCBpbiBsZWFrcworICAgICAgICB3aGVuIGN5Y2xlcyBhcmUgY3JlYXRlZC4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgbmVlZGVkLCB0aGlzIHdpbGwgYmUgdXNlZCB0byBmaXggTXV0YXRpb25P
YnNlcnZlcnMgd2hpY2ggd2lsbCBoYXZlIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RGVwZW5kZW50UmV0YWluZWQuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4RGVwZW5kZW50UmV0YWluZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5lZDo6VjhEZXBlbmRlbnRSZXRhaW5lZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjp+VjhEZXBlbmRlbnRSZXRhaW5l
ZCk6CisgICAgICAgIChXZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjpnZXQpOiBHZXRzIHRo
ZSB2ODo6T2JqZWN0IHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5l
ZDo6aXNFbXB0eSk6IENoZWNrcyBpZiB0aGUgdmFsdWUgaXMgc3RpbGwgYWxpdmUuCisgICAgICAg
IChXZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjpjcmVhdGVQcm9wZXJ0eU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5lZDo6b3duZXJXZWFrQ2FsbGJhY2spOiBD
bGVhciB0aGUgdmFsdWUgd2hlbiB0aGUgb3duZXIgaXMgcmVsZWFzZWQuCisgICAgICAgIChXZWJD
b3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjp2YWx1ZVdlYWtDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjpyZWxlYXNlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhpZGRl
blByb3BlcnR5TmFtZTo6aGlkZGVuUmVmZXJlbmNlTmFtZSk6IE1vZGlmaWVkIHRvIGFsbG93IGNy
ZWF0aW5nIGhpZGRlbiBTdHJpbmcgb3IgU3ltYm9sIG5hbWVzLgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChWOEhpZGRlblByb3BlcnR5TmFt
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjpWOFBlcklzb2xhdGVEYXRhKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFBl
cklzb2xhdGVEYXRhOjpuZXh0RGVwZW5kZW50UmV0YWluZWRJZCk6IFJldHVybnMgdGhlIG5leHQg
YXZhaWxhYmxlIGhpZGRlbiBwcm9wZXJ0eSBpbmRleC4KKyAgICAgICAgKFY4UGVySXNvbGF0ZURh
dGEpOgorCiAyMDEyLTA4LTI0ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBDU1MgMi4xIGZhaWx1cmU6IG1hcmdpbi1jb2xsYXBzZS1jbGVhci0wMTIgZmFpbHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBlMDI5OWFhZTNjYTlkYjIwYTEyOWE1MGRmMTIzYTU3ODQ5YWI0
N2Q5Li5lZDdjYjk5YzQ0NGFkMjY4MTAwOGQ5ZmIyZTU2YjQ3YWEzYzYxMjAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC0yMjY2LDYgKzIyNjYsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4
Q2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgnLAorICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1Y4RGVwZW5kZW50UmV0YWluZWQuaCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvVjhET01Db25maWd1cmF0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
VjhET01Db25maWd1cmF0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NTWFw
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERlcGVuZGVu
dFJldGFpbmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERlcGVuZGVudFJldGFp
bmVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWE3ZTc4NjViYjUyNDIzMjVlNjRmMDVhNDg3Y2FiZWFiOTBjZDdi
YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGVwZW5k
ZW50UmV0YWluZWQuaApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhEZXBlbmRlbnRSZXRhaW5l
ZF9oCisjZGVmaW5lIFY4RGVwZW5kZW50UmV0YWluZWRfaAorCisjaW5jbHVkZSAiU2NvcGVkUGVy
c2lzdGVudC5oIgorI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCisjaW5jbHVkZSAi
VjhQZXJJc29sYXRlRGF0YS5oIgorI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNsdWRlIDx3dGYvZHRvYS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFY4RGVwZW5kZW50UmV0YWluZWQgewor
cHVibGljOgorICAgIFY4RGVwZW5kZW50UmV0YWluZWQodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBv
d25lciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2YWx1ZSkKKyAgICAgICAgOiBtX293bmVyKG93
bmVyKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgICAgICwgbV9wcm9wZXJ0eU5hbWUo
Y3JlYXRlUHJvcGVydHlOYW1lKCkpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fb3duZXIuSXNF
bXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKCFtX3ZhbHVlLklzRW1wdHkoKSk7CisgICAgICAgIG93
bmVyLT5TZXRIaWRkZW5WYWx1ZShtX3Byb3BlcnR5TmFtZS5nZXQoKSwgdmFsdWUpOworICAgICAg
ICBtX293bmVyLmdldCgpLk1ha2VXZWFrKHRoaXMsICZWOERlcGVuZGVudFJldGFpbmVkOjpvd25l
cldlYWtDYWxsYmFjayk7CisgICAgICAgIG1fdmFsdWUuZ2V0KCkuTWFrZVdlYWsodGhpcywgJlY4
RGVwZW5kZW50UmV0YWluZWQ6OnZhbHVlV2Vha0NhbGxiYWNrKTsKKyAgICB9CisKKyAgICB+VjhE
ZXBlbmRlbnRSZXRhaW5lZCgpCisgICAgeworICAgICAgICByZWxlYXNlKCk7CisgICAgfQorCisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fdmFsdWUuZ2V0KCk7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX293bmVyLmlzRW1wdHkoKSB8fCBtX3ZhbHVlLmlzRW1wdHko
KTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2UgbWlnaHQgYWRkIGFuIGV4cGxpY2l0IHJldGFp
bih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSBtZXRob2QgdG8gYWxsb3cKKyAgICAvLyBjcmVhdGlu
ZyBvbmUgb2YgdGhlc2UgYW5kIGNob29zaW5nIHRoZSBvd25lciBsYXRlci4gU3VjaCBiZWhhdmlv
ciBpcyByZXF1aXJlZAorICAgIC8vIGluIEpTQywgYnV0IG5vdCBpbiB2OCByaWdodCBub3cuCisK
K3ByaXZhdGU6CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gY3JlYXRlUHJvcGVy
dHlOYW1lKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcmVmaXggPSAiVjhE
ZXBlbmRlbnRSZXRhaW5lZCI7CisgICAgICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsK
KyAgICAgICAgVmVjdG9yPGNoYXIsIDY0PiBuYW1lOworICAgICAgICBjb25zdCBjaGFyKiBpZCA9
IG51bWJlclRvU3RyaW5nKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+bmV4dERlcGVuZGVu
dFJldGFpbmVkSWQoKSwgYnVmZmVyKTsKKyAgICAgICAgbmFtZS5hcHBlbmQocHJlZml4LCBzaXpl
b2YocHJlZml4KSAtIDEpOworICAgICAgICBuYW1lLmFwcGVuZChpZCwgc3RybGVuKGlkKSArIDEp
OworICAgICAgICByZXR1cm4gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmhpZGRlblJlZmVyZW5jZU5h
bWUobmFtZS5kYXRhKCksIE5ld1N0cmluZyk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgb3du
ZXJXZWFrQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBh
cmFtZXRlcikKKyAgICB7CisgICAgICAgIFY4RGVwZW5kZW50UmV0YWluZWQqIHZhbHVlID0gc3Rh
dGljX2Nhc3Q8VjhEZXBlbmRlbnRSZXRhaW5lZCo+KHBhcmFtZXRlcik7CisgICAgICAgIHZhbHVl
LT5yZWxlYXNlKCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdmFsdWVXZWFrQ2FsbGJhY2so
djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRlcikKKyAgICB7
CisgICAgICAgIFY4RGVwZW5kZW50UmV0YWluZWQqIHZhbHVlID0gc3RhdGljX2Nhc3Q8VjhEZXBl
bmRlbnRSZXRhaW5lZCo+KHBhcmFtZXRlcik7CisgICAgICAgIC8vIFRoZSBvd25lciBjYWxsYmFj
ayBzaG91bGQgYWx3YXlzIGJlIGNhbGxlZCBmaXJzdCwgc2luY2UgaXQgcmV0YWlucyB0aGUgdmFs
dWUuCisgICAgICAgIEFTU0VSVCh2YWx1ZS0+aXNFbXB0eSgpKTsKKyAgICB9CisKKyAgICB2b2lk
IHJlbGVhc2UoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX293bmVyLmlzRW1wdHkoKSkKKyAgICAg
ICAgICAgIG1fb3duZXItPkRlbGV0ZUhpZGRlblZhbHVlKG1fcHJvcGVydHlOYW1lLmdldCgpKTsK
KyAgICAgICAgbV92YWx1ZS5jbGVhcigpOworICAgICAgICBtX293bmVyLmNsZWFyKCk7CisgICAg
ICAgIG1fcHJvcGVydHlOYW1lLmNsZWFyKCk7CisgICAgfQorCisgICAgU2NvcGVkUGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiBtX293bmVyOworICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
bV92YWx1ZTsKKyAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IG1fcHJvcGVydHlOYW1l
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gVjhEZXBlbmRlbnRS
ZXRhaW5lZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRl
blByb3BlcnR5TmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblBy
b3BlcnR5TmFtZS5jcHAKaW5kZXggZmRkZGFmYmFlMTlhNGVhNzZlMjA5MzA1NjE5YzVkOThhNGVi
YzQ4Mi4uMTExMTk4YTU2YjEzZGVhODU2NTE4NzFjNTY3MjhlNmU3ZGFhOTMwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmNwcApA
QCAtNTUsMTMgKzU1LDIwIEBAIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gVjhIaWRkZW5Qcm9wZXJ0
eU5hbWU6Om5hbWUoKSBcCiAKIFY4X0hJRERFTl9QUk9QRVJUSUVTKFY4X0RFRklORV9ISURERU5f
UFJPUEVSVFkpOwogCi12ODo6SGFuZGxlPHY4OjpTdHJpbmc+IFY4SGlkZGVuUHJvcGVydHlOYW1l
OjpoaWRkZW5SZWZlcmVuY2VOYW1lKGNvbnN0IGNoYXIqIG5hbWUpCit2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+IFY4SGlkZGVuUHJvcGVydHlOYW1lOjpoaWRkZW5SZWZlcmVuY2VOYW1lKGNvbnN0IGNo
YXIqIG5hbWUsIFY4SGlkZGVuUHJvcGVydHlDcmVhdGlvblR5cGUgdHlwZSkKIHsKKyAgICBBU1NF
UlQobmFtZSAmJiBzdHJsZW4obmFtZSkpOwogICAgIFZlY3RvcjxjaGFyLCA2ND4gcHJlZml4ZWRO
YW1lOwogICAgIHByZWZpeGVkTmFtZS5hcHBlbmQoVjhfSElEREVOX1BST1BFUlRZX1BSRUZJWCwg
c2l6ZW9mKFY4X0hJRERFTl9QUk9QRVJUWV9QUkVGSVgpIC0gMSk7Ci0gICAgQVNTRVJUKG5hbWUg
JiYgc3RybGVuKG5hbWUpKTsKICAgICBwcmVmaXhlZE5hbWUuYXBwZW5kKG5hbWUsIHN0cmxlbihu
YW1lKSk7Ci0gICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5bWJvbChwcmVmaXhlZE5hbWUuZGF0
YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHByZWZpeGVkTmFtZS5zaXplKCkpKTsKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKKyAgICBjYXNlIE5ld1N5bWJvbDoKKyAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbChwcmVmaXhlZE5hbWUuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHByZWZpeGVk
TmFtZS5zaXplKCkpKTsKKyAgICBjYXNlIE5ld1N0cmluZzoKKyAgICAgICAgcmV0dXJuIHY4OjpT
dHJpbmc6Ok5ldyhwcmVmaXhlZE5hbWUuZGF0YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHByZWZpeGVk
TmFtZS5zaXplKCkpKTsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0
dXJuIHY4OjpIYW5kbGU8djg6OlN0cmluZz4oKTsKIH0KIAogdjg6OlBlcnNpc3RlbnQ8djg6OlN0
cmluZz4gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmNyZWF0ZVN0cmluZyhjb25zdCBjaGFyKiBrZXkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5
TmFtZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUu
aAppbmRleCA5ZGRmYTMwZjU3ZjI4NzU2NTIwMTQ5MDQxNDBmZWEzYjJmMmZmNjBiLi40MGM3MDBm
NmIzOGFjZmQ2NzY0YjU3ZDc1N2MyMDlhNzkyN2RkOTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKQEAgLTUwLDYgKzUwLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFYodGV4dFRyYWNrcykgXAogICAgIFYodG9TdHJpbmdT
dHJpbmcpCiAKKyAgICBlbnVtIFY4SGlkZGVuUHJvcGVydHlDcmVhdGlvblR5cGUgeyBOZXdTeW1i
b2wsIE5ld1N0cmluZyB9OworCiAgICAgY2xhc3MgVjhIaWRkZW5Qcm9wZXJ0eU5hbWUgewogICAg
IHB1YmxpYzoKICAgICAgICAgVjhIaWRkZW5Qcm9wZXJ0eU5hbWUoKSB7IH0KQEAgLTU3LDcgKzU5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBWOF9ISURERU5fUFJPUEVSVElFUyhW
OF9ERUNMQVJFX1BST1BFUlRZKTsKICN1bmRlZiBWOF9ERUNMQVJFX1BST1BFUlRZCiAKLSAgICAg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gaGlkZGVuUmVmZXJlbmNlTmFtZShjb25z
dCBjaGFyKiBuYW1lKTsKKyAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gaGlk
ZGVuUmVmZXJlbmNlTmFtZShjb25zdCBjaGFyKiwgVjhIaWRkZW5Qcm9wZXJ0eUNyZWF0aW9uVHlw
ZSA9IE5ld1N5bWJvbCk7CiAKICAgICBwcml2YXRlOgogICAgICAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OlN0cmluZz4gY3JlYXRlU3RyaW5nKGNvbnN0IGNoYXIqIGtleSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwCmluZGV4IDE4M2Mz
MTJlYzMyYjg2Y2E2MDA5N2JmZWMwYjNhM2NmOWNhZmE0MDEuLjAwMTMwZDM2MDEwYzkzZTUzZGJk
MjYzYjNmODI0NmUxMDVmNTk2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UGVySXNvbGF0ZURhdGEuY3BwCkBAIC0zOCw2ICszOCw3IEBAIFY4UGVySXNvbGF0ZURhdGE6
OlY4UGVySXNvbGF0ZURhdGEodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgLCBtX2hpZGRlblBy
b3BlcnR5TmFtZShhZG9wdFB0cihuZXcgVjhIaWRkZW5Qcm9wZXJ0eU5hbWUoKSkpCiAgICAgLCBt
X2NvbnN0cnVjdG9yTW9kZShDb25zdHJ1Y3Rvck1vZGU6OkNyZWF0ZU5ld09iamVjdCkKICAgICAs
IG1fcmVjdXJzaW9uTGV2ZWwoMCkKKyAgICAsIG1fbmV4dERlcGVuZGVudFJldGFpbmVkSWQoMCkK
ICNpZm5kZWYgTkRFQlVHCiAgICAgLCBtX2ludGVybmFsU2NyaXB0UmVjdXJzaW9uTGV2ZWwoMCkK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29s
YXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5o
CmluZGV4IDZiYzUxZDI4MTk1YjRlNmJjN2RlYWNmMWMzNGE0ZGE4NTk1OWM5ZDQuLjMxYWNmMGVl
NjIzOWE3NGI4MDMwOGQ3MGM4MjI3MDYxZTFiNzdjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKQEAgLTExMyw2ICsxMTMsOCBAQCBwdWJsaWM6
CiAgICAgaW50IGluY3JlbWVudFJlY3Vyc2lvbkxldmVsKCkgeyByZXR1cm4gKyttX3JlY3Vyc2lv
bkxldmVsOyB9CiAgICAgaW50IGRlY3JlbWVudFJlY3Vyc2lvbkxldmVsKCkgeyByZXR1cm4gLS1t
X3JlY3Vyc2lvbkxldmVsOyB9CiAKKyAgICBpbnQgbmV4dERlcGVuZGVudFJldGFpbmVkSWQoKSB7
IHJldHVybiBtX25leHREZXBlbmRlbnRSZXRhaW5lZElkKys7IH0KKwogI2lmbmRlZiBOREVCVUcK
ICAgICBHbG9iYWxIYW5kbGVNYXAmIGdsb2JhbEhhbmRsZU1hcCgpIHsgcmV0dXJuIG1fZ2xvYmFs
SGFuZGxlTWFwOyB9CiAKQEAgLTE1NSw2ICsxNTcsNyBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBj
bGFzcyBDb25zdHJ1Y3Rvck1vZGU7CiAKICAgICBpbnQgbV9yZWN1cnNpb25MZXZlbDsKKyAgICBp
bnQgbV9uZXh0RGVwZW5kZW50UmV0YWluZWRJZDsKIAogI2lmbmRlZiBOREVCVUcKICAgICBHbG9i
YWxIYW5kbGVNYXAgbV9nbG9iYWxIYW5kbGVNYXA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162381</attachid>
            <date>2012-09-05 17:47:39 -0700</date>
            <delta_ts>2012-09-05 17:48:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-95519-20120905174720.patch</filename>
            <type>text/plain</type>
            <size>11324</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZhNTUwOTY5NjhhOTE4
YjZlNzE5MzllZTRjMmU1YzhkMjhjY2I2Mi4uOTlkMjJiNDMwOTUxYjgxNjcwMTAyODY0YjAwN2Jk
MzZjMDYxYmNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA4LTMxICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBuZXcgVjhE
ZXBlbmRlbnRSZXRhaW5lZCB0aGF0IGFsbG93cyBrZWVwaW5nIGEgdjg6Ok9iamVjdCBhbGl2ZSBh
cyBsb25nIGFzIGFub3RoZXIgdjg6Ok9iamVjdCBpcyBhbGl2ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1MTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgorCisgICAgICAgIEFkZCBuZXcgVjhEZXBlbmRlbnRSZXRhaW5lZCB0aGF0
IGFsbG93cyBrZWVwaW5nIGEgdjg6Ok9iamVjdCBhbGl2ZSBhcyBsb25nIGFzIGFub3RoZXIKKyAg
ICAgICAgdjg6Ok9iamVjdCBpcyBhbGl2ZS4gVGhpcyBpcyB1c2VmdWwgZm9yIGtlZXBpbmcgY2Fs
bGJhY2tzIGF0dGFjaGVkIHRvIHdyYXBwZXJzIHdpdGhvdXQKKyAgICAgICAga2VlcGluZyBzdHJv
bmcgcmVmZXJlbmNlcyB0byB2ODo6T2JqZWN0cyBpbiB0aGUgQysrIHNpZGUgd2hpY2ggY2FuIHJl
c3VsdCBpbiBsZWFrcworICAgICAgICB3aGVuIGN5Y2xlcyBhcmUgY3JlYXRlZC4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgbmVlZGVkLCB0aGlzIHdpbGwgYmUgdXNlZCB0byBmaXggTXV0YXRpb25P
YnNlcnZlcnMgd2hpY2ggd2lsbCBoYXZlIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RGVwZW5kZW50UmV0YWluZWQuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4RGVwZW5kZW50UmV0YWluZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5lZDo6VjhEZXBlbmRlbnRSZXRhaW5lZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjp+VjhEZXBlbmRlbnRSZXRhaW5l
ZCk6CisgICAgICAgIChXZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjpnZXQpOiBHZXRzIHRo
ZSB2ODo6T2JqZWN0IHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5l
ZDo6aXNFbXB0eSk6IENoZWNrcyBpZiB0aGUgdmFsdWUgaXMgc3RpbGwgYWxpdmUuCisgICAgICAg
IChXZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjpjcmVhdGVQcm9wZXJ0eU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5lZDo6b3duZXJXZWFrQ2FsbGJhY2spOiBD
bGVhciB0aGUgdmFsdWUgd2hlbiB0aGUgb3duZXIgaXMgcmVsZWFzZWQuCisgICAgICAgIChXZWJD
b3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjp2YWx1ZVdlYWtDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjpyZWxlYXNlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhpZGRl
blByb3BlcnR5TmFtZTo6aGlkZGVuUmVmZXJlbmNlTmFtZSk6IE1vZGlmaWVkIHRvIGFsbG93IGNy
ZWF0aW5nIGhpZGRlbiBTdHJpbmcgb3IgU3ltYm9sIG5hbWVzLgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChWOEhpZGRlblByb3BlcnR5TmFt
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjpWOFBlcklzb2xhdGVEYXRhKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFBl
cklzb2xhdGVEYXRhOjpuZXh0RGVwZW5kZW50UmV0YWluZWRJZCk6IFJldHVybnMgdGhlIG5leHQg
YXZhaWxhYmxlIGhpZGRlbiBwcm9wZXJ0eSBpbmRleC4KKyAgICAgICAgKFY4UGVySXNvbGF0ZURh
dGEpOgorCiAyMDEyLTA4LTI0ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBDU1MgMi4xIGZhaWx1cmU6IG1hcmdpbi1jb2xsYXBzZS1jbGVhci0wMTIgZmFpbHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBlMDI5OWFhZTNjYTlkYjIwYTEyOWE1MGRmMTIzYTU3ODQ5YWI0
N2Q5Li5lZDdjYjk5YzQ0NGFkMjY4MTAwOGQ5ZmIyZTU2YjQ3YWEzYzYxMjAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC0yMjY2LDYgKzIyNjYsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4
Q2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgnLAorICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1Y4RGVwZW5kZW50UmV0YWluZWQuaCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvVjhET01Db25maWd1cmF0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
VjhET01Db25maWd1cmF0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NTWFw
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERlcGVuZGVu
dFJldGFpbmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERlcGVuZGVudFJldGFp
bmVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjc5N2EzNGQxNTM2OWUzMjhhY2VhNmQzNTBjZThmZDMxZmZlYmI3
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGVwZW5k
ZW50UmV0YWluZWQuaApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhEZXBlbmRlbnRSZXRhaW5l
ZF9oCisjZGVmaW5lIFY4RGVwZW5kZW50UmV0YWluZWRfaAorCisjaW5jbHVkZSAiU2NvcGVkUGVy
c2lzdGVudC5oIgorI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCisjaW5jbHVkZSAi
VjhQZXJJc29sYXRlRGF0YS5oIgorI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNsdWRlIDx3dGYvZHRvYS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFY4RGVwZW5kZW50UmV0YWluZWQgewor
cHVibGljOgorICAgIFY4RGVwZW5kZW50UmV0YWluZWQodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBv
d25lciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2YWx1ZSkKKyAgICAgICAgOiBtX293bmVyKG93
bmVyKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgICAgICwgbV9wcm9wZXJ0eU5hbWUo
Y3JlYXRlUHJvcGVydHlOYW1lKCkpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fb3duZXIuSXNF
bXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKCFtX3ZhbHVlLklzRW1wdHkoKSk7CisgICAgICAgIG93
bmVyLT5TZXRIaWRkZW5WYWx1ZShtX3Byb3BlcnR5TmFtZS5nZXQoKSwgdmFsdWUpOworICAgICAg
ICBtX293bmVyLmdldCgpLk1ha2VXZWFrKHRoaXMsICZWOERlcGVuZGVudFJldGFpbmVkOjpvd25l
cldlYWtDYWxsYmFjayk7CisgICAgICAgIG1fdmFsdWUuZ2V0KCkuTWFrZVdlYWsodGhpcywgJlY4
RGVwZW5kZW50UmV0YWluZWQ6OnZhbHVlV2Vha0NhbGxiYWNrKTsKKyAgICB9CisKKyAgICB+VjhE
ZXBlbmRlbnRSZXRhaW5lZCgpCisgICAgeworICAgICAgICByZWxlYXNlKCk7CisgICAgfQorCisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fdmFsdWUuZ2V0KCk7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX293bmVyLmlzRW1wdHkoKSB8fCBtX3ZhbHVlLmlzRW1wdHko
KTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2UgbWlnaHQgYWRkIGFuIGV4cGxpY2l0IHJldGFp
bih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSBtZXRob2QgdG8gYWxsb3cKKyAgICAvLyBjcmVhdGlu
ZyBvbmUgb2YgdGhlc2UgYW5kIGNob29zaW5nIHRoZSBvd25lciBsYXRlci4gU3VjaCBiZWhhdmlv
ciBpcyByZXF1aXJlZAorICAgIC8vIGluIEpTQywgYnV0IG5vdCBpbiB2OCByaWdodCBub3cuCisK
K3ByaXZhdGU6CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gY3JlYXRlUHJvcGVy
dHlOYW1lKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcmVmaXggPSAiVjhE
ZXBlbmRlbnRSZXRhaW5lZCI7CisgICAgICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsK
KyAgICAgICAgVmVjdG9yPGNoYXIsIDY0PiBuYW1lOworICAgICAgICBjb25zdCBjaGFyKiBpZCA9
IG51bWJlclRvU3RyaW5nKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+bmV4dERlcGVuZGVu
dFJldGFpbmVkSWQoKSwgYnVmZmVyKTsKKyAgICAgICAgbmFtZS5hcHBlbmQocHJlZml4LCBzaXpl
b2YocHJlZml4KSAtIDEpOworICAgICAgICBuYW1lLmFwcGVuZChpZCwgc3RybGVuKGlkKSArIDEp
OworICAgICAgICByZXR1cm4gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmhpZGRlblJlZmVyZW5jZU5h
bWUobmFtZS5kYXRhKCksIE5ld1N0cmluZyk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgb3du
ZXJXZWFrQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBh
cmFtZXRlcikKKyAgICB7CisgICAgICAgIFY4RGVwZW5kZW50UmV0YWluZWQqIHZhbHVlID0gc3Rh
dGljX2Nhc3Q8VjhEZXBlbmRlbnRSZXRhaW5lZCo+KHBhcmFtZXRlcik7CisgICAgICAgIHZhbHVl
LT5yZWxlYXNlKCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdmFsdWVXZWFrQ2FsbGJhY2so
djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRlcikKKyAgICB7
CisgICAgICAgIFY4RGVwZW5kZW50UmV0YWluZWQqIHZhbHVlID0gc3RhdGljX2Nhc3Q8VjhEZXBl
bmRlbnRSZXRhaW5lZCo+KHBhcmFtZXRlcik7CisgICAgICAgIC8vIFRoZSBvd25lciBjYWxsYmFj
ayBzaG91bGQgYWx3YXlzIGJlIGNhbGxlZCBmaXJzdCwgc2luY2UgaXQgcmV0YWlucyB0aGUgdmFs
dWUuCisgICAgICAgIEFTU0VSVF9VTlVTRUQodmFsdWUtPmlzRW1wdHkoKSk7CisgICAgfQorCisg
ICAgdm9pZCByZWxlYXNlKCkKKyAgICB7CisgICAgICAgIGlmICghbV9vd25lci5pc0VtcHR5KCkp
CisgICAgICAgICAgICBtX293bmVyLT5EZWxldGVIaWRkZW5WYWx1ZShtX3Byb3BlcnR5TmFtZS5n
ZXQoKSk7CisgICAgICAgIG1fdmFsdWUuY2xlYXIoKTsKKyAgICAgICAgbV9vd25lci5jbGVhcigp
OworICAgICAgICBtX3Byb3BlcnR5TmFtZS5jbGVhcigpOworICAgIH0KKworICAgIFNjb3BlZFBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gbV9vd25lcjsKKyAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IG1fdmFsdWU7CisgICAgU2NvcGVkUGVyc2lzdGVudDx2ODo6U3RyaW5nPiBtX3Byb3Bl
cnR5TmFtZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFY4RGVw
ZW5kZW50UmV0YWluZWRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhIaWRkZW5Qcm9wZXJ0eU5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhI
aWRkZW5Qcm9wZXJ0eU5hbWUuY3BwCmluZGV4IGZkZGRhZmJhZTE5YTRlYTc2ZTIwOTMwNTYxOWM1
ZDk4YTRlYmM0ODIuLjExMTE5OGE1NmIxM2RlYTg1NjUxODcxYzU2NzI4ZTZlN2RhYTkzMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1l
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFt
ZS5jcHAKQEAgLTU1LDEzICs1NSwyMCBAQCB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IFY4SGlkZGVu
UHJvcGVydHlOYW1lOjpuYW1lKCkgXAogCiBWOF9ISURERU5fUFJPUEVSVElFUyhWOF9ERUZJTkVf
SElEREVOX1BST1BFUlRZKTsKIAotdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBWOEhpZGRlblByb3Bl
cnR5TmFtZTo6aGlkZGVuUmVmZXJlbmNlTmFtZShjb25zdCBjaGFyKiBuYW1lKQordjg6OkhhbmRs
ZTx2ODo6U3RyaW5nPiBWOEhpZGRlblByb3BlcnR5TmFtZTo6aGlkZGVuUmVmZXJlbmNlTmFtZShj
b25zdCBjaGFyKiBuYW1lLCBWOEhpZGRlblByb3BlcnR5Q3JlYXRpb25UeXBlIHR5cGUpCiB7Cisg
ICAgQVNTRVJUKG5hbWUgJiYgc3RybGVuKG5hbWUpKTsKICAgICBWZWN0b3I8Y2hhciwgNjQ+IHBy
ZWZpeGVkTmFtZTsKICAgICBwcmVmaXhlZE5hbWUuYXBwZW5kKFY4X0hJRERFTl9QUk9QRVJUWV9Q
UkVGSVgsIHNpemVvZihWOF9ISURERU5fUFJPUEVSVFlfUFJFRklYKSAtIDEpOwotICAgIEFTU0VS
VChuYW1lICYmIHN0cmxlbihuYW1lKSk7CiAgICAgcHJlZml4ZWROYW1lLmFwcGVuZChuYW1lLCBz
dHJsZW4obmFtZSkpOwotICAgIHJldHVybiB2ODo6U3RyaW5nOjpOZXdTeW1ib2wocHJlZml4ZWRO
YW1lLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50PihwcmVmaXhlZE5hbWUuc2l6ZSgpKSk7CisgICAg
c3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBOZXdTeW1ib2w6CisgICAgICAgIHJldHVybiB2ODo6
U3RyaW5nOjpOZXdTeW1ib2wocHJlZml4ZWROYW1lLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50Pihw
cmVmaXhlZE5hbWUuc2l6ZSgpKSk7CisgICAgY2FzZSBOZXdTdHJpbmc6CisgICAgICAgIHJldHVy
biB2ODo6U3RyaW5nOjpOZXcocHJlZml4ZWROYW1lLmRhdGEoKSwgc3RhdGljX2Nhc3Q8aW50Pihw
cmVmaXhlZE5hbWUuc2l6ZSgpKSk7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+KCk7CiB9CiAKIHY4OjpQZXJzaXN0ZW50
PHY4OjpTdHJpbmc+IFY4SGlkZGVuUHJvcGVydHlOYW1lOjpjcmVhdGVTdHJpbmcoY29uc3QgY2hh
cioga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Q
cm9wZXJ0eU5hbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVy
dHlOYW1lLmgKaW5kZXggOWRkZmEzMGY1N2YyODc1NjUyMDE0OTA0MTQwZmVhM2IyZjJmZjYwYi4u
NDBjNzAwZjZiMzhhY2ZkNjc2NGI1N2Q3NTdjMjA5YTc5MjdkZDkxYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5oCkBAIC01MCw2ICs1
MCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBWKHRleHRUcmFja3MpIFwKICAgICBWKHRv
U3RyaW5nU3RyaW5nKQogCisgICAgZW51bSBWOEhpZGRlblByb3BlcnR5Q3JlYXRpb25UeXBlIHsg
TmV3U3ltYm9sLCBOZXdTdHJpbmcgfTsKKwogICAgIGNsYXNzIFY4SGlkZGVuUHJvcGVydHlOYW1l
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIFY4SGlkZGVuUHJvcGVydHlOYW1lKCkgeyB9CkBAIC01
Nyw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgVjhfSElEREVOX1BST1BF
UlRJRVMoVjhfREVDTEFSRV9QUk9QRVJUWSk7CiAjdW5kZWYgVjhfREVDTEFSRV9QUk9QRVJUWQog
Ci0gICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGhpZGRlblJlZmVyZW5jZU5h
bWUoY29uc3QgY2hhciogbmFtZSk7CisgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpTdHJp
bmc+IGhpZGRlblJlZmVyZW5jZU5hbWUoY29uc3QgY2hhciosIFY4SGlkZGVuUHJvcGVydHlDcmVh
dGlvblR5cGUgPSBOZXdTeW1ib2wpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IGNyZWF0ZVN0cmluZyhjb25zdCBjaGFyKiBrZXkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAppbmRl
eCAxODNjMzEyZWMzMmI4NmNhNjAwOTdiZmVjMGIzYTNjZjljYWZhNDAxLi4wMDEzMGQzNjAxMGM5
M2U1M2RiZDI2M2IzZjgyNDZlMTA1ZjU5NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcApAQCAtMzgsNiArMzgsNyBAQCBWOFBlcklzb2xh
dGVEYXRhOjpWOFBlcklzb2xhdGVEYXRhKHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgICwgbV9o
aWRkZW5Qcm9wZXJ0eU5hbWUoYWRvcHRQdHIobmV3IFY4SGlkZGVuUHJvcGVydHlOYW1lKCkpKQog
ICAgICwgbV9jb25zdHJ1Y3Rvck1vZGUoQ29uc3RydWN0b3JNb2RlOjpDcmVhdGVOZXdPYmplY3Qp
CiAgICAgLCBtX3JlY3Vyc2lvbkxldmVsKDApCisgICAgLCBtX25leHREZXBlbmRlbnRSZXRhaW5l
ZElkKDApCiAjaWZuZGVmIE5ERUJVRwogICAgICwgbV9pbnRlcm5hbFNjcmlwdFJlY3Vyc2lvbkxl
dmVsKDApCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UGVySXNvbGF0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0
ZURhdGEuaAppbmRleCA2YmM1MWQyODE5NWI0ZTZiYzdkZWFjZjFjMzRhNGRhODU5NTljOWQ0Li4z
MWFjZjBlZTYyMzlhNzRiODAzMDhkNzBjODIyNzA2MWUxYjc3Y2NkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCkBAIC0xMTMsNiArMTEzLDggQEAg
cHVibGljOgogICAgIGludCBpbmNyZW1lbnRSZWN1cnNpb25MZXZlbCgpIHsgcmV0dXJuICsrbV9y
ZWN1cnNpb25MZXZlbDsgfQogICAgIGludCBkZWNyZW1lbnRSZWN1cnNpb25MZXZlbCgpIHsgcmV0
dXJuIC0tbV9yZWN1cnNpb25MZXZlbDsgfQogCisgICAgaW50IG5leHREZXBlbmRlbnRSZXRhaW5l
ZElkKCkgeyByZXR1cm4gbV9uZXh0RGVwZW5kZW50UmV0YWluZWRJZCsrOyB9CisKICNpZm5kZWYg
TkRFQlVHCiAgICAgR2xvYmFsSGFuZGxlTWFwJiBnbG9iYWxIYW5kbGVNYXAoKSB7IHJldHVybiBt
X2dsb2JhbEhhbmRsZU1hcDsgfQogCkBAIC0xNTUsNiArMTU3LDcgQEAgcHJpdmF0ZToKICAgICBm
cmllbmQgY2xhc3MgQ29uc3RydWN0b3JNb2RlOwogCiAgICAgaW50IG1fcmVjdXJzaW9uTGV2ZWw7
CisgICAgaW50IG1fbmV4dERlcGVuZGVudFJldGFpbmVkSWQ7CiAKICNpZm5kZWYgTkRFQlVHCiAg
ICAgR2xvYmFsSGFuZGxlTWFwIG1fZ2xvYmFsSGFuZGxlTWFwOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162383</attachid>
            <date>2012-09-05 17:48:26 -0700</date>
            <delta_ts>2012-09-06 03:05:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-95519-20120905174808.patch</filename>
            <type>text/plain</type>
            <size>11331</size>
            <attacher name="Elliott Sprehn">esprehn</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWZhNTUwOTY5NjhhOTE4
YjZlNzE5MzllZTRjMmU1YzhkMjhjY2I2Mi4uOTlkMjJiNDMwOTUxYjgxNjcwMTAyODY0YjAwN2Jk
MzZjMDYxYmNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTA4LTMxICBFbGxp
b3R0IFNwcmVobiAgPGVzcHJlaG5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBuZXcgVjhE
ZXBlbmRlbnRSZXRhaW5lZCB0aGF0IGFsbG93cyBrZWVwaW5nIGEgdjg6Ok9iamVjdCBhbGl2ZSBh
cyBsb25nIGFzIGFub3RoZXIgdjg6Ok9iamVjdCBpcyBhbGl2ZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU1MTkKKworICAgICAgICBSZXZpZXdlZCBi
eSBBZGFtIEJhcnRoLgorCisgICAgICAgIEFkZCBuZXcgVjhEZXBlbmRlbnRSZXRhaW5lZCB0aGF0
IGFsbG93cyBrZWVwaW5nIGEgdjg6Ok9iamVjdCBhbGl2ZSBhcyBsb25nIGFzIGFub3RoZXIKKyAg
ICAgICAgdjg6Ok9iamVjdCBpcyBhbGl2ZS4gVGhpcyBpcyB1c2VmdWwgZm9yIGtlZXBpbmcgY2Fs
bGJhY2tzIGF0dGFjaGVkIHRvIHdyYXBwZXJzIHdpdGhvdXQKKyAgICAgICAga2VlcGluZyBzdHJv
bmcgcmVmZXJlbmNlcyB0byB2ODo6T2JqZWN0cyBpbiB0aGUgQysrIHNpZGUgd2hpY2ggY2FuIHJl
c3VsdCBpbiBsZWFrcworICAgICAgICB3aGVuIGN5Y2xlcyBhcmUgY3JlYXRlZC4KKworICAgICAg
ICBObyBuZXcgdGVzdHMgbmVlZGVkLCB0aGlzIHdpbGwgYmUgdXNlZCB0byBmaXggTXV0YXRpb25P
YnNlcnZlcnMgd2hpY2ggd2lsbCBoYXZlIHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RGVwZW5kZW50UmV0YWluZWQuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4RGVwZW5kZW50UmV0YWluZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5lZDo6VjhEZXBlbmRlbnRSZXRhaW5lZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjp+VjhEZXBlbmRlbnRSZXRhaW5l
ZCk6CisgICAgICAgIChXZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjpnZXQpOiBHZXRzIHRo
ZSB2ODo6T2JqZWN0IHZhbHVlLgorICAgICAgICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5l
ZDo6aXNFbXB0eSk6IENoZWNrcyBpZiB0aGUgdmFsdWUgaXMgc3RpbGwgYWxpdmUuCisgICAgICAg
IChXZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjpjcmVhdGVQcm9wZXJ0eU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhEZXBlbmRlbnRSZXRhaW5lZDo6b3duZXJXZWFrQ2FsbGJhY2spOiBD
bGVhciB0aGUgdmFsdWUgd2hlbiB0aGUgb3duZXIgaXMgcmVsZWFzZWQuCisgICAgICAgIChXZWJD
b3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjp2YWx1ZVdlYWtDYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOERlcGVuZGVudFJldGFpbmVkOjpyZWxlYXNlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOEhpZGRlblByb3BlcnR5TmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhpZGRl
blByb3BlcnR5TmFtZTo6aGlkZGVuUmVmZXJlbmNlTmFtZSk6IE1vZGlmaWVkIHRvIGFsbG93IGNy
ZWF0aW5nIGhpZGRlbiBTdHJpbmcgb3IgU3ltYm9sIG5hbWVzLgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmg6CisgICAgICAgIChWOEhpZGRlblByb3BlcnR5TmFt
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjpWOFBlcklzb2xhdGVEYXRhKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFBl
cklzb2xhdGVEYXRhOjpuZXh0RGVwZW5kZW50UmV0YWluZWRJZCk6IFJldHVybnMgdGhlIG5leHQg
YXZhaWxhYmxlIGhpZGRlbiBwcm9wZXJ0eSBpbmRleC4KKyAgICAgICAgKFY4UGVySXNvbGF0ZURh
dGEpOgorCiAyMDEyLTA4LTI0ICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBDU1MgMi4xIGZhaWx1cmU6IG1hcmdpbi1jb2xsYXBzZS1jbGVhci0wMTIgZmFpbHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBlMDI5OWFhZTNjYTlkYjIwYTEyOWE1MGRmMTIzYTU3ODQ5YWI0
N2Q5Li5lZDdjYjk5YzQ0NGFkMjY4MTAwOGQ5ZmIyZTU2YjQ3YWEzYzYxMjAyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC0yMjY2LDYgKzIyNjYsNyBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4
Q2FsbGJhY2suaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgnLAorICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1Y4RGVwZW5kZW50UmV0YWluZWQuaCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvVjhET01Db25maWd1cmF0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
VjhET01Db25maWd1cmF0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NTWFw
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERlcGVuZGVu
dFJldGFpbmVkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERlcGVuZGVudFJldGFp
bmVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMTUyMmVhNTdhMjNiYzgxY2JlMTViYTZkZjRkMDQ3ZmMzNGRlOTc3
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RGVwZW5k
ZW50UmV0YWluZWQuaApAQCAtMCwwICsxLDExOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhEZXBlbmRlbnRSZXRhaW5l
ZF9oCisjZGVmaW5lIFY4RGVwZW5kZW50UmV0YWluZWRfaAorCisjaW5jbHVkZSAiU2NvcGVkUGVy
c2lzdGVudC5oIgorI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCisjaW5jbHVkZSAi
VjhQZXJJc29sYXRlRGF0YS5oIgorI2luY2x1ZGUgPHY4Lmg+CisjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNpbmNsdWRlIDx3dGYvZHRvYS5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFY4RGVwZW5kZW50UmV0YWluZWQgewor
cHVibGljOgorICAgIFY4RGVwZW5kZW50UmV0YWluZWQodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBv
d25lciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2YWx1ZSkKKyAgICAgICAgOiBtX293bmVyKG93
bmVyKQorICAgICAgICAsIG1fdmFsdWUodmFsdWUpCisgICAgICAgICwgbV9wcm9wZXJ0eU5hbWUo
Y3JlYXRlUHJvcGVydHlOYW1lKCkpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fb3duZXIuSXNF
bXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKCFtX3ZhbHVlLklzRW1wdHkoKSk7CisgICAgICAgIG93
bmVyLT5TZXRIaWRkZW5WYWx1ZShtX3Byb3BlcnR5TmFtZS5nZXQoKSwgdmFsdWUpOworICAgICAg
ICBtX293bmVyLmdldCgpLk1ha2VXZWFrKHRoaXMsICZWOERlcGVuZGVudFJldGFpbmVkOjpvd25l
cldlYWtDYWxsYmFjayk7CisgICAgICAgIG1fdmFsdWUuZ2V0KCkuTWFrZVdlYWsodGhpcywgJlY4
RGVwZW5kZW50UmV0YWluZWQ6OnZhbHVlV2Vha0NhbGxiYWNrKTsKKyAgICB9CisKKyAgICB+VjhE
ZXBlbmRlbnRSZXRhaW5lZCgpCisgICAgeworICAgICAgICByZWxlYXNlKCk7CisgICAgfQorCisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fdmFsdWUuZ2V0KCk7CisgICAgfQorCisgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX293bmVyLmlzRW1wdHkoKSB8fCBtX3ZhbHVlLmlzRW1wdHko
KTsKKyAgICB9CisKKyAgICAvLyBGSVhNRTogV2UgbWlnaHQgYWRkIGFuIGV4cGxpY2l0IHJldGFp
bih2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSBtZXRob2QgdG8gYWxsb3cKKyAgICAvLyBjcmVhdGlu
ZyBvbmUgb2YgdGhlc2UgYW5kIGNob29zaW5nIHRoZSBvd25lciBsYXRlci4gU3VjaCBiZWhhdmlv
ciBpcyByZXF1aXJlZAorICAgIC8vIGluIEpTQywgYnV0IG5vdCBpbiB2OCByaWdodCBub3cuCisK
K3ByaXZhdGU6CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gY3JlYXRlUHJvcGVy
dHlOYW1lKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcmVmaXggPSAiVjhE
ZXBlbmRlbnRSZXRhaW5lZCI7CisgICAgICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsK
KyAgICAgICAgVmVjdG9yPGNoYXIsIDY0PiBuYW1lOworICAgICAgICBjb25zdCBjaGFyKiBpZCA9
IG51bWJlclRvU3RyaW5nKFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+bmV4dERlcGVuZGVu
dFJldGFpbmVkSWQoKSwgYnVmZmVyKTsKKyAgICAgICAgbmFtZS5hcHBlbmQocHJlZml4LCBzaXpl
b2YocHJlZml4KSAtIDEpOworICAgICAgICBuYW1lLmFwcGVuZChpZCwgc3RybGVuKGlkKSArIDEp
OworICAgICAgICByZXR1cm4gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmhpZGRlblJlZmVyZW5jZU5h
bWUobmFtZS5kYXRhKCksIE5ld1N0cmluZyk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgb3du
ZXJXZWFrQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBh
cmFtZXRlcikKKyAgICB7CisgICAgICAgIFY4RGVwZW5kZW50UmV0YWluZWQqIHZhbHVlID0gc3Rh
dGljX2Nhc3Q8VjhEZXBlbmRlbnRSZXRhaW5lZCo+KHBhcmFtZXRlcik7CisgICAgICAgIHZhbHVl
LT5yZWxlYXNlKCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdmFsdWVXZWFrQ2FsbGJhY2so
djg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiBvYmplY3QsIHZvaWQqIHBhcmFtZXRlcikKKyAgICB7
CisgICAgICAgIFY4RGVwZW5kZW50UmV0YWluZWQqIHZhbHVlID0gc3RhdGljX2Nhc3Q8VjhEZXBl
bmRlbnRSZXRhaW5lZCo+KHBhcmFtZXRlcik7CisgICAgICAgIC8vIFRoZSBvd25lciBjYWxsYmFj
ayBzaG91bGQgYWx3YXlzIGJlIGNhbGxlZCBmaXJzdCwgc2luY2UgaXQgcmV0YWlucyB0aGUgdmFs
dWUuCisgICAgICAgIEFTU0VSVF9VTlVTRUQodmFsdWUsIHZhbHVlLT5pc0VtcHR5KCkpOworICAg
IH0KKworICAgIHZvaWQgcmVsZWFzZSgpCisgICAgeworICAgICAgICBpZiAoIW1fb3duZXIuaXNF
bXB0eSgpKQorICAgICAgICAgICAgbV9vd25lci0+RGVsZXRlSGlkZGVuVmFsdWUobV9wcm9wZXJ0
eU5hbWUuZ2V0KCkpOworICAgICAgICBtX3ZhbHVlLmNsZWFyKCk7CisgICAgICAgIG1fb3duZXIu
Y2xlYXIoKTsKKyAgICAgICAgbV9wcm9wZXJ0eU5hbWUuY2xlYXIoKTsKKyAgICB9CisKKyAgICBT
Y29wZWRQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IG1fb3duZXI7CisgICAgU2NvcGVkUGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiBtX3ZhbHVlOworICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6OlN0cmluZz4g
bV9wcm9wZXJ0eU5hbWU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBWOERlcGVuZGVudFJldGFpbmVkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmNwcAppbmRleCBmZGRkYWZiYWUxOWE0ZWE3NmUyMDkz
MDU2MTljNWQ5OGE0ZWJjNDgyLi4xMTExOThhNTZiMTNkZWE4NTY1MTg3MWM1NjcyOGU2ZTdkYWE5
MzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRlblByb3Bl
cnR5TmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9w
ZXJ0eU5hbWUuY3BwCkBAIC01NSwxMyArNTUsMjAgQEAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBW
OEhpZGRlblByb3BlcnR5TmFtZTo6bmFtZSgpIFwKIAogVjhfSElEREVOX1BST1BFUlRJRVMoVjhf
REVGSU5FX0hJRERFTl9QUk9QRVJUWSk7CiAKLXY4OjpIYW5kbGU8djg6OlN0cmluZz4gVjhIaWRk
ZW5Qcm9wZXJ0eU5hbWU6OmhpZGRlblJlZmVyZW5jZU5hbWUoY29uc3QgY2hhciogbmFtZSkKK3Y4
OjpIYW5kbGU8djg6OlN0cmluZz4gVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OmhpZGRlblJlZmVyZW5j
ZU5hbWUoY29uc3QgY2hhciogbmFtZSwgVjhIaWRkZW5Qcm9wZXJ0eUNyZWF0aW9uVHlwZSB0eXBl
KQogeworICAgIEFTU0VSVChuYW1lICYmIHN0cmxlbihuYW1lKSk7CiAgICAgVmVjdG9yPGNoYXIs
IDY0PiBwcmVmaXhlZE5hbWU7CiAgICAgcHJlZml4ZWROYW1lLmFwcGVuZChWOF9ISURERU5fUFJP
UEVSVFlfUFJFRklYLCBzaXplb2YoVjhfSElEREVOX1BST1BFUlRZX1BSRUZJWCkgLSAxKTsKLSAg
ICBBU1NFUlQobmFtZSAmJiBzdHJsZW4obmFtZSkpOwogICAgIHByZWZpeGVkTmFtZS5hcHBlbmQo
bmFtZSwgc3RybGVuKG5hbWUpKTsKLSAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3U3ltYm9sKHBy
ZWZpeGVkTmFtZS5kYXRhKCksIHN0YXRpY19jYXN0PGludD4ocHJlZml4ZWROYW1lLnNpemUoKSkp
OworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgTmV3U3ltYm9sOgorICAgICAgICByZXR1
cm4gdjg6OlN0cmluZzo6TmV3U3ltYm9sKHByZWZpeGVkTmFtZS5kYXRhKCksIHN0YXRpY19jYXN0
PGludD4ocHJlZml4ZWROYW1lLnNpemUoKSkpOworICAgIGNhc2UgTmV3U3RyaW5nOgorICAgICAg
ICByZXR1cm4gdjg6OlN0cmluZzo6TmV3KHByZWZpeGVkTmFtZS5kYXRhKCksIHN0YXRpY19jYXN0
PGludD4ocHJlZml4ZWROYW1lLnNpemUoKSkpOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6U3RyaW5nPigpOwogfQogCiB2ODo6UGVy
c2lzdGVudDx2ODo6U3RyaW5nPiBWOEhpZGRlblByb3BlcnR5TmFtZTo6Y3JlYXRlU3RyaW5nKGNv
bnN0IGNoYXIqIGtleSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
SGlkZGVuUHJvcGVydHlOYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhpZGRl
blByb3BlcnR5TmFtZS5oCmluZGV4IDlkZGZhMzBmNTdmMjg3NTY1MjAxNDkwNDE0MGZlYTNiMmYy
ZmY2MGIuLjQwYzcwMGY2YjM4YWNmZDY3NjRiNTdkNzU3YzIwOWE3OTI3ZGQ5MWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGlkZGVuUHJvcGVydHlOYW1lLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaApAQCAt
NTAsNiArNTAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgVih0ZXh0VHJhY2tzKSBcCiAg
ICAgVih0b1N0cmluZ1N0cmluZykKIAorICAgIGVudW0gVjhIaWRkZW5Qcm9wZXJ0eUNyZWF0aW9u
VHlwZSB7IE5ld1N5bWJvbCwgTmV3U3RyaW5nIH07CisKICAgICBjbGFzcyBWOEhpZGRlblByb3Bl
cnR5TmFtZSB7CiAgICAgcHVibGljOgogICAgICAgICBWOEhpZGRlblByb3BlcnR5TmFtZSgpIHsg
fQpAQCAtNTcsNyArNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFY4X0hJRERF
Tl9QUk9QRVJUSUVTKFY4X0RFQ0xBUkVfUFJPUEVSVFkpOwogI3VuZGVmIFY4X0RFQ0xBUkVfUFJP
UEVSVFkKIAotICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBoaWRkZW5SZWZl
cmVuY2VOYW1lKGNvbnN0IGNoYXIqIG5hbWUpOworICAgICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6U3RyaW5nPiBoaWRkZW5SZWZlcmVuY2VOYW1lKGNvbnN0IGNoYXIqLCBWOEhpZGRlblByb3Bl
cnR5Q3JlYXRpb25UeXBlID0gTmV3U3ltYm9sKTsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiBjcmVhdGVTdHJpbmcoY29uc3QgY2hhciog
a2V5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0
ZURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5j
cHAKaW5kZXggMTgzYzMxMmVjMzJiODZjYTYwMDk3YmZlYzBiM2EzY2Y5Y2FmYTQwMS4uMDAxMzBk
MzYwMTBjOTNlNTNkYmQyNjNiM2Y4MjQ2ZTEwNWY1OTYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAKQEAgLTM4LDYgKzM4LDcgQEAgVjhQ
ZXJJc29sYXRlRGF0YTo6VjhQZXJJc29sYXRlRGF0YSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAg
ICAsIG1faGlkZGVuUHJvcGVydHlOYW1lKGFkb3B0UHRyKG5ldyBWOEhpZGRlblByb3BlcnR5TmFt
ZSgpKSkKICAgICAsIG1fY29uc3RydWN0b3JNb2RlKENvbnN0cnVjdG9yTW9kZTo6Q3JlYXRlTmV3
T2JqZWN0KQogICAgICwgbV9yZWN1cnNpb25MZXZlbCgwKQorICAgICwgbV9uZXh0RGVwZW5kZW50
UmV0YWluZWRJZCgwKQogI2lmbmRlZiBOREVCVUcKICAgICAsIG1faW50ZXJuYWxTY3JpcHRSZWN1
cnNpb25MZXZlbCgwKQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFBlcklzb2xhdGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBl
cklzb2xhdGVEYXRhLmgKaW5kZXggNmJjNTFkMjgxOTViNGU2YmM3ZGVhY2YxYzM0YTRkYTg1OTU5
YzlkNC4uMzFhY2YwZWU2MjM5YTc0YjgwMzA4ZDcwYzgyMjcwNjFlMWI3N2NjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaApAQCAtMTEzLDYgKzEx
Myw4IEBAIHB1YmxpYzoKICAgICBpbnQgaW5jcmVtZW50UmVjdXJzaW9uTGV2ZWwoKSB7IHJldHVy
biArK21fcmVjdXJzaW9uTGV2ZWw7IH0KICAgICBpbnQgZGVjcmVtZW50UmVjdXJzaW9uTGV2ZWwo
KSB7IHJldHVybiAtLW1fcmVjdXJzaW9uTGV2ZWw7IH0KIAorICAgIGludCBuZXh0RGVwZW5kZW50
UmV0YWluZWRJZCgpIHsgcmV0dXJuIG1fbmV4dERlcGVuZGVudFJldGFpbmVkSWQrKzsgfQorCiAj
aWZuZGVmIE5ERUJVRwogICAgIEdsb2JhbEhhbmRsZU1hcCYgZ2xvYmFsSGFuZGxlTWFwKCkgeyBy
ZXR1cm4gbV9nbG9iYWxIYW5kbGVNYXA7IH0KIApAQCAtMTU1LDYgKzE1Nyw3IEBAIHByaXZhdGU6
CiAgICAgZnJpZW5kIGNsYXNzIENvbnN0cnVjdG9yTW9kZTsKIAogICAgIGludCBtX3JlY3Vyc2lv
bkxldmVsOworICAgIGludCBtX25leHREZXBlbmRlbnRSZXRhaW5lZElkOwogCiAjaWZuZGVmIE5E
RUJVRwogICAgIEdsb2JhbEhhbmRsZU1hcCBtX2dsb2JhbEhhbmRsZU1hcDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>