<?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>104845</bug_id>
          
          <creation_ts>2012-12-12 14:32:54 -0800</creation_ts>
          <short_desc>window.crypto.getRandomValues should return the input ArrayBufferView</short_desc>
          <delta_ts>2012-12-20 14:13:56 -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>WebCore Misc.</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryan Sleevi">rsleevi</reporter>
          <assigned_to name="Ryan Sleevi">rsleevi</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>kbr</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>peter+ews</cc>
    
    <cc>philn</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>789925</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Sleevi">rsleevi</who>
    <bug_when>2012-12-12 14:32:54 -0800</bug_when>
    <thetext>window.crypto.getRandomValues, as previously specified in WHATWG ( http://wiki.whatwg.org/index.php?title=Crypto&amp;oldid=7945 ) and as presently specified by the W3C Web Crypto WG ( http://www.w3.org/2012/webcrypto/ ) has the following WebIDL for getRandomValues

ArrayBufferView getRandomValues(ArrayBufferView)

This was changed from the previous

void getRandomValues(ArrayBufferView) 

in response to feedback on WHATWG ( http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-February/034915.html ) about the proposed interface.

Currently in WebCore, getRandomValues is returning void. It should return the input (modified) ArrayBufferView to allow chaining such as &quot;doStuff(window.crypto.getRandomValues(new Uint8Array(16)));&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789953</commentid>
    <comment_count>1</comment_count>
      <attachid>179131</attachid>
    <who name="Ryan Sleevi">rsleevi</who>
    <bug_when>2012-12-12 15:00:13 -0800</bug_when>
    <thetext>Created attachment 179131
Patch to fix the IDL and implementation. Does not compile

The above patch does not (yet) compile, presumably due to html/canvas/ArrayBufferView.idl having the attribute CustomToJSObject and causing the bindings generator to not generate a custom wrap() function.

Guidance on how to fix the bindings would be appreciated, as simply stubbing in a wrap() for ArrayBufferView seems incorrect.

It seems that it might be necessary to do something like the CSSRule bindings, where wrap(ArrayBufferView*, ...) invokes the appropriate wrapper for the derived type (eg: wrap(Uint8Array*, ...) , but that seems like a hierarchy layering violation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789984</commentid>
    <comment_count>2</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-12 15:35:02 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=179131) [details]
&gt; Patch to fix the IDL and implementation. Does not compile
&gt; 
&gt; The above patch does not (yet) compile, presumably due to html/canvas/ArrayBufferView.idl having the attribute CustomToJSObject and causing the bindings generator to not generate a custom wrap() function.
&gt; 
&gt; Guidance on how to fix the bindings would be appreciated, as simply stubbing in a wrap() for ArrayBufferView seems incorrect.
&gt; 
&gt; It seems that it might be necessary to do something like the CSSRule bindings, where wrap(ArrayBufferView*, ...) invokes the appropriate wrapper for the derived type (eg: wrap(Uint8Array*, ...) , but that seems like a hierarchy layering violation.

I think that the basic approach is to implement wrap() somewhere. Would you upload a thorough patch even if it has a compile error? Without concrete build error messages, I can&apos;t give you helpful advice. By clicking the &quot;Submit for EWS analysis&quot; button, you can get results from all build bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>789997</commentid>
    <comment_count>3</comment_count>
      <attachid>179131</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-12 15:48:23 -0800</bug_when>
    <thetext>Comment on attachment 179131
Patch to fix the IDL and implementation. Does not compile

Attachment 179131 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15272947</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790001</commentid>
    <comment_count>4</comment_count>
      <attachid>179131</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-12 15:50:08 -0800</bug_when>
    <thetext>Comment on attachment 179131
Patch to fix the IDL and implementation. Does not compile

Attachment 179131 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15272949</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790031</commentid>
    <comment_count>5</comment_count>
      <attachid>179131</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-12 16:17:09 -0800</bug_when>
    <thetext>Comment on attachment 179131
Patch to fix the IDL and implementation. Does not compile

Attachment 179131 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15312014</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790046</commentid>
    <comment_count>6</comment_count>
      <attachid>179131</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-12 16:28:09 -0800</bug_when>
    <thetext>Comment on attachment 179131
Patch to fix the IDL and implementation. Does not compile

Attachment 179131 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15296343</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790054</commentid>
    <comment_count>7</comment_count>
      <attachid>179131</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-12-12 16:37:17 -0800</bug_when>
    <thetext>Comment on attachment 179131
Patch to fix the IDL and implementation. Does not compile

Attachment 179131 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/15313008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790063</commentid>
    <comment_count>8</comment_count>
      <attachid>179149</attachid>
    <who name="Ryan Sleevi">rsleevi</who>
    <bug_when>2012-12-12 16:42:57 -0800</bug_when>
    <thetext>Created attachment 179149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790077</commentid>
    <comment_count>9</comment_count>
      <attachid>179149</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-12 16:58:44 -0800</bug_when>
    <thetext>Comment on attachment 179149
Patch

Attachment 179149 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15319007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790083</commentid>
    <comment_count>10</comment_count>
      <attachid>179149</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-12 17:07:51 -0800</bug_when>
    <thetext>Comment on attachment 179149
Patch

Attachment 179149 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15314021</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790098</commentid>
    <comment_count>11</comment_count>
      <attachid>179157</attachid>
    <who name="Ryan Sleevi">rsleevi</who>
    <bug_when>2012-12-12 17:24:05 -0800</bug_when>
    <thetext>Created attachment 179157
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790140</commentid>
    <comment_count>12</comment_count>
      <attachid>179168</attachid>
    <who name="Ryan Sleevi">rsleevi</who>
    <bug_when>2012-12-12 17:55:13 -0800</bug_when>
    <thetext>Created attachment 179168
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>790175</commentid>
    <comment_count>13</comment_count>
      <attachid>179175</attachid>
    <who name="Ryan Sleevi">rsleevi</who>
    <bug_when>2012-12-12 18:32:02 -0800</bug_when>
    <thetext>Created attachment 179175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793134</commentid>
    <comment_count>14</comment_count>
      <attachid>179175</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-17 16:17:37 -0800</bug_when>
    <thetext>Comment on attachment 179175
Patch

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

&gt; Source/WebCore/ChangeLog:7
&gt; +

Here please describe the rationale for your change.

&gt; Source/WebCore/ChangeLog:17
&gt; +        * GNUmakefile.list.am:
&gt; +        * Target.pri:
&gt; +        * UseJSC.cmake:
&gt; +        * WebCore.xcodeproj/project.pbxproj:
&gt; +        * bindings/js/JSArrayBufferViewCustom.cpp: Added.
&gt; +        (WebCore):
&gt; +        (WebCore::toJS): Added toJS() for ArrayBufferView
&gt; +        * bindings/js/JSBindingsAllInOne.cpp:

I&apos;m not sure why we need to add custom toJS() for JSC. What happens if you change the [CustomToJSObject] to [V8CustomToJSObject] ? Then toJS() for JSC will be auto-generated as expected, won&apos;t it?

&gt; Source/WebCore/ChangeLog:18
&gt; +        * bindings/v8/custom/V8ArrayBufferViewCustom.cpp:

What happens if you simply remove [CustomToJSOObject] ? Then the wrap() will be auto-generated as expected, won&apos;t it? (I&apos;m not sure. This might not work.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793135</commentid>
    <comment_count>15</comment_count>
      <attachid>179175</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-17 16:18:27 -0800</bug_when>
    <thetext>Comment on attachment 179175
Patch

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

&gt; LayoutTests/security/crypto-random-values-types.html:34
&gt; +function shouldBeType(_a, _type) {
&gt; +  var exception;
&gt; +  var _av;
&gt; +  try {
&gt; +    _av = eval(_a);
&gt; +  } catch (e) {
&gt; +    exception = e;
&gt; +  }
&gt; +
&gt; +  var _typev = eval(_type);
&gt; +  if (_av instanceof _typev) {
&gt; +    testPassed(_a + &quot; is an instance of &quot; + _type);
&gt; +  } else {
&gt; +    testFailed(_a + &quot; is not an instance of &quot; + _type);
&gt; +  }
&gt; +}

You can add this to fast/js/resources/js-test-pre.js.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793170</commentid>
    <comment_count>16</comment_count>
      <attachid>179175</attachid>
    <who name="Ryan Sleevi">rsleevi</who>
    <bug_when>2012-12-17 16:50:11 -0800</bug_when>
    <thetext>Comment on attachment 179175
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:18
&gt;&gt; +        * bindings/v8/custom/V8ArrayBufferViewCustom.cpp:
&gt; 
&gt; What happens if you simply remove [CustomToJSOObject] ? Then the wrap() will be auto-generated as expected, won&apos;t it? (I&apos;m not sure. This might not work.)

Yes, but I&apos;m a little nervous about such a change because I don&apos;t fully understand it.

However, what I do seem to understand is that the TypedArray subclasses to seem to want to have a custom toJS/toV8. I&apos;m nervous about providing an overload - at all - because it allows new TypedArray subclasses to be introduced incorrectly, by matching this parent ArrayBufferView wrapping, rather than the sub-type specific wrapper generated by the bindings scripts.

In particular, by defining a custom wrap/toJS/toV8, I&apos;m potentially failing to properly define the indexed property indexer ( http://trac.webkit.org/browser/trunk/Source/WebCore/bindings/v8/custom/V8ArrayBufferViewCustom.h ). In particular, compare this generic wrap(), which matches the generator&apos;s default wrap(), with the wrap() emitted for specific TypedArray subclasses at

http://trac.webkit.org/browser/trunk/Source/WebCore/bindings/scripts/CodeGeneratorV8.pm#L2716

This is why I&apos;m not convinced this code is entirely correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793173</commentid>
    <comment_count>17</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-17 16:52:50 -0800</bug_when>
    <thetext>Thanks, I understood your concern.

kbr: Do you have any advice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793238</commentid>
    <comment_count>18</comment_count>
      <attachid>179175</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-12-17 18:31:30 -0800</bug_when>
    <thetext>Comment on attachment 179175
Patch

Adding a custom toJS/wrap function for ArrayBufferView* is definitely not correct as written. If this wrap() variant were ever called, it would return a useless object to JavaScript, and prevent a wrapper of the correct type from ever being created for that C++ object.

I don&apos;t think there any WebGL bindings that do something similar to this function. Calls like getUniform, getVertexAttrib, etc., can end up returning ArrayBufferView subclasses, but they all call the toV8 overload taking a concrete subclass such as Float32Array.

What I would suggest is to turn getRandomValues into a custom binding, and in both the JSC and V8 versions, just return the incoming first argument from the V8 or JSC callback. That way you are actually returning the same value to JavaScript that came in, rather than relying on the DOMDataStore to look up and return the wrapper for the ArrayBufferView C++ object. If this is unpalatable, then doing multiple type-tests and downcasting the ArrayBufferView to the right concrete subclass before calling the autogenerated toJS/toV8 function seems to me like the only other correct solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795084</commentid>
    <comment_count>19</comment_count>
      <attachid>180257</attachid>
    <who name="Ryan Sleevi">rsleevi</who>
    <bug_when>2012-12-19 18:21:08 -0800</bug_when>
    <thetext>Created attachment 180257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795089</commentid>
    <comment_count>20</comment_count>
      <attachid>180257</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-12-19 18:29:28 -0800</bug_when>
    <thetext>Comment on attachment 180257
Patch

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

Despite the introduction of custom code, this looks much better and safer to me. r=me, but needs a couple of minor updates before committing.

&gt; Source/WebCore/bindings/js/JSCryptoCustom.cpp:14
&gt; + *     * Neither the name of Google Inc. nor the names of its

Wrong form of BSD license. Please use the two-clause license in Source/WebKit/LICENSE.

&gt; Source/WebCore/bindings/v8/custom/V8CryptoCustom.cpp:14
&gt; + *     * Neither the name of Google Inc. nor the names of its

Same license issue.

&gt; LayoutTests/ChangeLog:9
&gt; +        * security/crypto-random-values-types.html:

Please regenerate ChangeLog so that change to js-test-pre.js is included.

&gt; LayoutTests/security/crypto-random-values-types.html:45
&gt; +checkNonIntegerTypes();

Would be nice to test DataView too and ensure that it throws an exception.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795091</commentid>
    <comment_count>21</comment_count>
      <attachid>180257</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-19 18:37:43 -0800</bug_when>
    <thetext>Comment on attachment 180257
Patch

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

&gt; Source/WebCore/bindings/js/JSCryptoCustom.cpp:50
&gt; +    ArrayBufferView* arrayBufferView = toArrayBufferView(buffer);

Why does it need to be custom binding? I guess you can auto-generate the code by a bit modifying JSValueToNative() in CodeGeneratorJS.pm.

&gt; Source/WebCore/bindings/v8/custom/V8CryptoCustom.cpp:52
&gt; +    ArrayBufferView* arrayBufferView = V8ArrayBufferView::toNative(v8::Handle&lt;v8::Object&gt;::Cast(buffer));

Ditto. I guess you can auto-generate the code by a bit modifying CodeGeneratorV8.pm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795097</commentid>
    <comment_count>22</comment_count>
      <attachid>180257</attachid>
    <who name="Ryan Sleevi">rsleevi</who>
    <bug_when>2012-12-19 18:49:49 -0800</bug_when>
    <thetext>Comment on attachment 180257
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSCryptoCustom.cpp:50
&gt;&gt; +    ArrayBufferView* arrayBufferView = toArrayBufferView(buffer);
&gt; 
&gt; Why does it need to be custom binding? I guess you can auto-generate the code by a bit modifying JSValueToNative() in CodeGeneratorJS.pm.

Can you please explain what you&apos;re proposing?

I have not written Perl before, and while I &quot;suspect&quot; I understand what&apos;s going on in CodeGenerator*.pm, that&apos;s probably a bit unrealistic.

This is a custom binding because, as shown in the previous patch, there is no &apos;generic&apos; wrapper-creator for returning ArrayBufferViews - it must always be wrapped through it&apos;s more derived type, so that the indexing accessor for the array is created.

kbr explained more about why it would not be proper to call toV8/toJS on a &quot;raw&quot; ArrayBufferView*.

The alternative to this custom binding is to create a dispatch system based on ArrayBufferView::ViewType that downcasts an ArrayBufferView* into its derived type, and then supplies that to the toJS/toV8 call. While this seems to be used for the CSSRule switching, it seems a much more brittle approach and doesn&apos;t represent &quot;good&quot; encapsulation between ArrayBufferView and its Derived types.

Unless you&apos;re proposing some IDL syntax to be able to indicate &quot;return the argument at position X&quot;, I&apos;m not sure what other alternatives exist, so I&apos;m hoping you can clarify.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795098</commentid>
    <comment_count>23</comment_count>
      <attachid>180257</attachid>
    <who name="Ryan Sleevi">rsleevi</who>
    <bug_when>2012-12-19 19:01:02 -0800</bug_when>
    <thetext>Comment on attachment 180257
Patch

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

&gt; Source/WebCore/bindings/js/JSCryptoCustom.cpp:62
&gt; +    return buffer;

In case it wasn&apos;t clear, *this* line is why it&apos;s a custom binding. It&apos;s returning a JSValue directly - that is, it does not have to use toJS(arrayBufferView), but rather can directly return the associated JSValue.

&gt; Source/WebCore/bindings/v8/custom/V8CryptoCustom.cpp:62
&gt; +    return buffer;    

Same here - it&apos;s returning buffer, not toV8(arrayBufferView)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795114</commentid>
    <comment_count>24</comment_count>
      <attachid>180264</attachid>
    <who name="Ryan Sleevi">rsleevi</who>
    <bug_when>2012-12-19 19:55:48 -0800</bug_when>
    <thetext>Created attachment 180264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795117</commentid>
    <comment_count>25</comment_count>
      <attachid>180264</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-19 20:03:05 -0800</bug_when>
    <thetext>Comment on attachment 180264
Patch

Attachment 180264 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/15411811</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795118</commentid>
    <comment_count>26</comment_count>
      <attachid>180264</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-12-19 20:04:50 -0800</bug_when>
    <thetext>Comment on attachment 180264
Patch

Attachment 180264 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/15409842</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795119</commentid>
    <comment_count>27</comment_count>
      <attachid>180264</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-12-19 20:05:45 -0800</bug_when>
    <thetext>Comment on attachment 180264
Patch

Attachment 180264 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/15418792</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795121</commentid>
    <comment_count>28</comment_count>
      <attachid>180264</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-12-19 20:08:12 -0800</bug_when>
    <thetext>Comment on attachment 180264
Patch

Attachment 180264 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15404908</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795123</commentid>
    <comment_count>29</comment_count>
      <attachid>180264</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-19 20:12:15 -0800</bug_when>
    <thetext>Comment on attachment 180264
Patch

Attachment 180264 did not pass win-ews (win):
Output: http://queues.webkit.org/results/15399921</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795126</commentid>
    <comment_count>30</comment_count>
      <attachid>180267</attachid>
    <who name="Ryan Sleevi">rsleevi</who>
    <bug_when>2012-12-19 20:31:28 -0800</bug_when>
    <thetext>Created attachment 180267
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795199</commentid>
    <comment_count>31</comment_count>
      <attachid>180267</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-19 22:35:16 -0800</bug_when>
    <thetext>Comment on attachment 180267
Patch

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

Actually I&apos;m not so happy with the approach, because you&apos;re trying to solve ArrayBufferView&apos;s problem by adding some hacks to V8Crypto. That being said, I cannot come up with a better idea to solve ArrayBufferView&apos;s problem, so I&apos;m not objecting to landing the patch for now.

&gt; Source/WebCore/bindings/js/JSCryptoCustom.cpp:51
&gt; +    if (UNLIKELY(ec)) {

Remove UNLIKELY(). It would be useless.

&gt; Source/WebCore/bindings/v8/custom/V8CryptoCustom.cpp:54
&gt; +    if (UNLIKELY(ec))

Remove UNLIKELY(). It would be useless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795230</commentid>
    <comment_count>32</comment_count>
      <attachid>180267</attachid>
    <who name="Ryan Sleevi">rsleevi</who>
    <bug_when>2012-12-19 23:58:44 -0800</bug_when>
    <thetext>Comment on attachment 180267
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSCryptoCustom.cpp:51
&gt;&gt; +    if (UNLIKELY(ec)) {
&gt; 
&gt; Remove UNLIKELY(). It would be useless.

Respectfully, I do not think your request is consistent with existing code - especially given that the IDL Code Generators already make extensive use of this macro.

If you believe it to not provide value, that seems like a different and unrelated bug. I would suggest that consistency with the codebase - *especially* the code this is replacing - is more valuable here.

Can I request you reconsider, or point me to a discussion where it was decided to stop following this pattern?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795231</commentid>
    <comment_count>33</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-12-20 00:02:27 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; Can I request you reconsider, or point me to a discussion where it was decided to stop following this pattern?

We&apos;ve reached a consensus that we don&apos;t newly add LIKELY()/UNLIKELY() unless we can confirm its performance gain by adding LIKELY()/UNLIKELY().

Actually I&apos;ve been trying to remove useless LIKELY()/UNLIKELY()s from generated code (https://bugs.webkit.org/show_bug.cgi?id=101932), though the patch is not yet landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795624</commentid>
    <comment_count>34</comment_count>
      <attachid>180379</attachid>
    <who name="Ryan Sleevi">rsleevi</who>
    <bug_when>2012-12-20 11:55:36 -0800</bug_when>
    <thetext>Created attachment 180379
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795789</commentid>
    <comment_count>35</comment_count>
      <attachid>180379</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-20 14:13:48 -0800</bug_when>
    <thetext>Comment on attachment 180379
Patch

Clearing flags on attachment: 180379

Committed r138298: &lt;http://trac.webkit.org/changeset/138298&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795790</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-20 14:13:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179131</attachid>
            <date>2012-12-12 15:00:13 -0800</date>
            <delta_ts>2012-12-12 16:42:55 -0800</delta_ts>
            <desc>Patch to fix the IDL and implementation. Does not compile</desc>
            <filename>crypto_idl.diff</filename>
            <type>text/plain</type>
            <size>3577</size>
            <attacher name="Ryan Sleevi">rsleevi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5
cGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBl
cy5odG1sCmluZGV4IDJmYTVhZWMuLjcxYjlmMjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Nl
Y3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
c2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMuaHRtbApAQCAtMTYsMTQgKzE2LDMz
IEBAIGlmICghd2luZG93LkFycmF5QnVmZmVyKQogc2hvdWxkQmUoIidjcnlwdG8nIGluIHdpbmRv
dyIsICJ0cnVlIik7CiBzaG91bGRCZSgiJ2dldFJhbmRvbVZhbHVlcycgaW4gd2luZG93LmNyeXB0
byIsICJ0cnVlIik7CiAKLXNob3VsZEJlVW5kZWZpbmVkKCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVz
KG5ldyBVaW50OEFycmF5KDMpKSIpOwotc2hvdWxkQmVVbmRlZmluZWQoImNyeXB0by5nZXRSYW5k
b21WYWx1ZXMobmV3IEludDhBcnJheSgzKSkiKTsKLXNob3VsZEJlVW5kZWZpbmVkKCJjcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MTZBcnJheSgzKSkiKTsKLXNob3VsZEJlVW5kZWZpbmVk
KCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQxNkFycmF5KDMpKSIpOwotc2hvdWxkQmVV
bmRlZmluZWQoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KDMpKSIpOwot
c2hvdWxkQmVVbmRlZmluZWQoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDMyQXJyYXko
MykpIik7Ci0KLXNob3VsZFRocm93KCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBGbG9hdDMy
QXJyYXkoMykpIik7CitmdW5jdGlvbiBjaGVja0ludGVnZXJUeXBlcygpIHsKKyAgdmFyIGludGVn
ZXJUeXBlcyA9IFsKKyAgICAiVWludDhBcnJheSIsICJJbnQ4QXJyYXkiLCAiVWludDhDbGFtcGVk
QXJyYXkiLAorICAgICJVaW50MTZBcnJheSIsICJJbnQxNkFycmF5IiwKKyAgICAiVWludDMyQXJy
YXkiLCAiSW50MzJBcnJheSIsCisgIF07CisgIGludGVnZXJUeXBlcy5mb3JFYWNoKGZ1bmN0aW9u
KGFycmF5VHlwZSkgeworICAgIHNob3VsZEJlRGVmaW5lZCgicmFuZG9tID0gY3J5cHRvLmdldFJh
bmRvbVZhbHVlcyhuZXcgIithcnJheVR5cGUrIigzKSkiKTsKKyAgICBzaG91bGRCZVR5cGUoInJh
bmRvbSIsIGFycmF5VHlwZSk7CisKKyAgICBzaG91bGRCZURlZmluZWQoInZpZXcgPSBuZXcgIith
cnJheVR5cGUrIigzKSIpOworICAgIHNob3VsZEJlRGVmaW5lZCgicmFuZG9tID0gY3J5cHRvLmdl
dFJhbmRvbVZhbHVlcyh2aWV3KSIpOworICAgIHNob3VsZEJlKCJyYW5kb20iLCAidmlldyIpOwor
ICB9KTsKK30KKworZnVuY3Rpb24gY2hlY2tOb25JbnRlZ2VyVHlwZXMoKSB7CisgIHZhciBmbG9h
dFR5cGVzID0gWworICAgICJGbG9hdDE2QXJyYXkiLCAiRmxvYXQzMkFycmF5IgorICBdOworICBm
bG9hdFR5cGVzLmZvckVhY2goZnVuY3Rpb24oYXJyYXlUeXBlKSB7CisgICAgc2hvdWxkVGhyb3co
ImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3ICIrYXJyYXlUeXBlKyIoMykpIik7CisgIH0KK30g
IAorCitjaGVja0ludGVnZXJUeXBlcygpOworY2hlY2tOb25JbnRlZ2VyVHlwZXMoKTsKIAogPC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcAppbmRleCAxNjcwOWU5Li44MmZjMmUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DcnlwdG8uY3BwCkBAIC01NiwyMiArNTYsMjIgQEAgQ3J5cHRvOjpDcnlwdG8o
KQogewogfQogCi12b2lkIENyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzKEFycmF5QnVmZmVyVmlldyog
YXJyYXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IENy
eXB0bzo6Z2V0UmFuZG9tVmFsdWVzKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBhcnJheSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAjaWYgVVNFKE9TX1JBTkRPTU5FU1MpCi0gICAgaWYgKCFh
cnJheSB8fCAhaXNJbnRlZ2VyQXJyYXkoYXJyYXkpKSB7CisgICAgaWYgKCFhcnJheSB8fCAhaXNJ
bnRlZ2VyQXJyYXkoYXJyYXkuZ2V0KCkpKSB7CiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9F
UlI7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAg
IGlmIChhcnJheS0+Ynl0ZUxlbmd0aCgpID4gNjU1MzYpIHsKICAgICAgICAgZWMgPSBRVU9UQV9F
WENFRURFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKGFycmF5LT5iYXNlQWRkcmVz
cygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKICNlbHNlCi0gICAgQVNTRVJUX1VOVVNFRChhcnJh
eSwgYXJyYXkpOwogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAjZW5kaWYKKyAgICByZXR1
cm4gYXJyYXk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRv
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5oCmluZGV4IDE3MjVhZjguLmRlYzdmYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DcnlwdG8uaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBDcnlwdG8gOiBwdWJs
aWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxDcnlwdG8+IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDcnlwdG8+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBDcnlwdG8oKSk7IH0KIAotICAgIHZvaWQgZ2V0UmFuZG9tVmFsdWVzKEFycmF5QnVmZmVy
VmlldyosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4g
Z2V0UmFuZG9tVmFsdWVzKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiwgRXhjZXB0aW9uQ29k
ZSYpOwogCiBwcml2YXRlOgogICAgIENyeXB0bygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9DcnlwdG8uaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsCmluZGV4
IDU4OTI4MWEuLmZlZmVhYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRv
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5pZGwKQEAgLTI5LDYgKzI5LDYg
QEAKIFsKICAgICBPbWl0Q29uc3RydWN0b3IKIF0gaW50ZXJmYWNlIENyeXB0byB7Ci0gICAgdm9p
ZCBnZXRSYW5kb21WYWx1ZXMoaW4gQXJyYXlCdWZmZXJWaWV3IGFycmF5KSByYWlzZXMoRE9NRXhj
ZXB0aW9uKTsKKyAgICBBcnJheUJ1ZmZlclZpZXcgZ2V0UmFuZG9tVmFsdWVzKGluIEFycmF5QnVm
ZmVyVmlldyBhcnJheSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179149</attachid>
            <date>2012-12-12 16:42:57 -0800</date>
            <delta_ts>2012-12-12 17:24:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104845-20121212164018.patch</filename>
            <type>text/plain</type>
            <size>10129</size>
            <attacher name="Ryan Sleevi">rsleevi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRjM2MxNjRiNTlhMGYx
Y2EzMmZjZThhMjI1MGZkMmE4NTQ5MjM4NC4uN2ZmNWQ2MmNiOWFmM2RjZTVhNWRhNTgyMWRhNzEz
NTk0ZWVjYWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEyLTEyICBSeWFu
IFNsZWV2aSAgPHJzbGVldmlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHdpbmRvdy5jcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzIHNob3VsZCByZXR1cm4gdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZl
clZpZXdDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JhcCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgQWRkZWQgYSBWOCB3cmFwcGVyIGZvciBBcnJheUJ1ZmZlclZpZXcsIG5l
Y2Vzc2FyeSBiZWNhdXNlIG9mIHRoZSBDdXN0b21Ub0pTT2JqZWN0IGluIEFycmF5QnVmZmVyVmll
dy5pZGwKKyAgICAgICAgKiBwYWdlL0NyeXB0by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAgICogcGFnZS9DcnlwdG8uaDoKKyAgICAgICAg
KENyeXB0byk6CisgICAgICAgICogcGFnZS9DcnlwdG8uaWRsOgorICAgICAgICBnZXRSYW5kb21W
YWx1ZXMgbm93IHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGlucHV0IGFycmF5IG9uIHN1Y2Nl
c3MKKwogMjAxMi0xMi0xMCAgcGVhdm9Ab3V0bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4K
IAogICAgICAgICBbV2luQ2Fpcm9dIExpbmsgZml4IGluIEluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1
ZmZlclZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcAppbmRleCBlNTRmOWI0NzBiYTcxYTRmNGRlMmRlZDFl
ZWM5YTRmMDY2NmM5ZTEzLi5kM2VmNGUxMzQyOGI0YTM3MjY2YmI3NTE1M2Y3MDhmNGMwOTZkMGQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1
ZmZlclZpZXdDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIgogCisjaW5j
bHVkZSAiVjhBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlld0N1
c3RvbVNjcmlwdC5oIgogI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCiAKQEAgLTMz
LDYgKzM0LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiB3cmFwKEFycmF5QnVmZmVyVmlldyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVChpbXBs
KTsKKyAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyKGltcGwsIGlzb2xhdGUpLklz
RW1wdHkoKSk7CisgICAgcmV0dXJuIFY4QXJyYXlCdWZmZXJWaWV3OjpjcmVhdGVXcmFwcGVyKGlt
cGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBnZXRIaWRkZW5Db3B5TWV0aG9kKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG90eXBlKQog
ewogICAgIHJldHVybiBwcm90b3R5cGUtPkdldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlO
YW1lOjp0eXBlZEFycmF5SGlkZGVuQ29weU1ldGhvZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcApp
bmRleCAxNjcwOWU5ZTBlNmZiODM3N2FkNGM4Njk0N2U4YWJmMGE4ZDA1YmFlLi5jOWFhNTExZjI4
MGM4N2IzODE5ODMzYjY4NmNiNDcyNjgzNDVlOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0NyeXB0by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCkBA
IC01NiwyMiArNTYsMjIgQEAgQ3J5cHRvOjpDcnlwdG8oKQogewogfQogCi12b2lkIENyeXB0bzo6
Z2V0UmFuZG9tVmFsdWVzKEFycmF5QnVmZmVyVmlldyogYXJyYXksIEV4Y2VwdGlvbkNvZGUmIGVj
KQorUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IENyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzKFBh
c3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBhcnJheSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAj
aWYgVVNFKE9TX1JBTkRPTU5FU1MpCi0gICAgaWYgKCFhcnJheSB8fCAhaXNJbnRlZ2VyQXJyYXko
YXJyYXkpKSB7CisgICAgaWYgKCFhcnJheSB8fCAhaXNJbnRlZ2VyQXJyYXkoYXJyYXkuZ2V0KCkp
KSB7CiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChhcnJheS0+Ynl0ZUxlbmd0aCgpID4gNjU1
MzYpIHsKICAgICAgICAgZWMgPSBRVU9UQV9FWENFRURFRF9FUlI7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFs
dWVzKGFycmF5LT5iYXNlQWRkcmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKICNlbHNlCi0g
ICAgQVNTRVJUX1VOVVNFRChhcnJheSwgYXJyYXkpOwogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9F
UlI7CiAjZW5kaWYKKyAgICByZXR1cm4gYXJyYXk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5oCmlu
ZGV4IDE3MjVhZjg2ZWIyMWE0ODE2NGQ3MGQ4YWZlMmJhYjYxZmNjMzAyMzAuLmRlYzdmYzBhZGM4
ZmFmZmE2ZWZiMDBjYTk4YTg0N2IyZGQ1MDlmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvQ3J5cHRvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaApAQCAtNDIs
NyArNDIsNyBAQCBjbGFzcyBDcnlwdG8gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMg
UmVmQ291bnRlZDxDcnlwdG8+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDcnlw
dG8+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG8oKSk7IH0KIAotICAgIHZv
aWQgZ2V0UmFuZG9tVmFsdWVzKEFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gZ2V0UmFuZG9tVmFsdWVzKFBhc3NSZWZQdHI8
QXJyYXlCdWZmZXJWaWV3PiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAgIENyeXB0
bygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsCmluZGV4IDU4OTI4MWFmNTMxOWU4YjE3ZTU1ZWE2ZTNk
YTlhZDM3NTQyMTIxNGEuLmZlZmVhYWZiMzkxMWE1N2Y3N2QxNjdjNjRkMDAzOGFkMGYwZTFhZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmlkbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NyeXB0by5pZGwKQEAgLTI5LDYgKzI5LDYgQEAKIFsKICAgICBPbWl0Q29u
c3RydWN0b3IKIF0gaW50ZXJmYWNlIENyeXB0byB7Ci0gICAgdm9pZCBnZXRSYW5kb21WYWx1ZXMo
aW4gQXJyYXlCdWZmZXJWaWV3IGFycmF5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICBBcnJh
eUJ1ZmZlclZpZXcgZ2V0UmFuZG9tVmFsdWVzKGluIEFycmF5QnVmZmVyVmlldyBhcnJheSkgcmFp
c2VzKERPTUV4Y2VwdGlvbik7CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWRmZjI4MGY0MzBhNmQyMjNhNzI3MzM2
YTdhNTM2YmI0MWIxOGJlYS4uNGRjZTBhZWVhMDJiYWYxYmZmMzFmZDE5OGE1NGU5NWM3ZGY5Y2Rl
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTEyICBSeWFuIFNsZWV2aSAgPHJzbGVl
dmlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVz
IHNob3VsZCByZXR1cm4gdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODQ1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzZWN1cml0eS9jcnlwdG8tcmFuZG9t
LXZhbHVlcy10eXBlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc2VjdXJpdHkvY3J5cHRvLXJh
bmRvbS12YWx1ZXMtdHlwZXMuaHRtbDoKKyAgICAgICAgVGVzdCBhbGwgcG9zc2libGUgVHlwZWRB
cnJheSBpbnRlZ2VyIHR5cGVzIGFuZCBlbnN1cmUgdGhhdCBib3RoIHRoZQorICAgICAgICBjb3Jy
ZWN0IFR5cGVkQXJyYXkgdHlwZSBpcyByZXR1cm5lZCBhbmQgdGhhdCBpdCBpcyBlcXVhbCB0byB0
aGUgaW5wdXQKKyAgICAgICAgdHlwZSAodGhhdCBpcywgdGhhdCB0aGUgaW5wdXQgdHlwZSBpcyBt
b2RpZmllZCBpbiBwbGFjZSwgcmF0aGVyIHRoZW4KKyAgICAgICAgY29waWVkKQorCiAyMDEyLTEy
LTEwICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkOiBXZWIgSW5zcGVjdG9yOiB1cGRhdGUgdGVzdCBleHBlY3RhdGlvbiBmb3IgaW5z
cGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tcHV0ZWQtdHJhY2UuaHRtbC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLWV4cGVj
dGVkLnR4dAppbmRleCA2ODNkZTMyZjYzNGQ4NjFiNTA0NjAwMGEwMTkyNDdiZTE1Y2FmM2ZiLi4x
NTVhNzQ5ZWEyYzA1MTVkOTgwZGY2ZTljYjgzMWU3ZWMxOWE0YzNjIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBlcy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMtZXhw
ZWN0ZWQudHh0CkBAIC01LDEzICs1LDQzIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIFBB
U1MgJ2NyeXB0bycgaW4gd2luZG93IGlzIHRydWUKIFBBU1MgJ2dldFJhbmRvbVZhbHVlcycgaW4g
d2luZG93LmNyeXB0byBpcyB0cnVlCi1QQVNTIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVp
bnQ4QXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhu
ZXcgSW50OEFycmF5KDMpKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNyeXB0by5nZXRSYW5kb21WYWx1
ZXMobmV3IFVpbnQxNkFycmF5KDMpKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNyeXB0by5nZXRSYW5k
b21WYWx1ZXMobmV3IEludDE2QXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY3J5cHRvLmdl
dFJhbmRvbVZhbHVlcyhuZXcgVWludDMyQXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY3J5
cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MzJBcnJheSgzKSkgaXMgdW5kZWZpbmVkLgorUEFT
UyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDMpKSBpcyBk
ZWZpbmVkLgorUEFTUyByYW5kb20gaXMgYW4gaW5zdGFuY2Ugb2YgVWludDhBcnJheQorUEFTUyB2
aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRv
LmdldFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldwor
UEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQ4QXJyYXkoMykpIGlz
IGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyBhbiBpbnN0YW5jZSBvZiBJbnQ4QXJyYXkKK1BBU1Mg
dmlldyA9IG5ldyBJbnQ4QXJyYXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRv
LmdldFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldwor
UEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OENsYW1wZWRBcnJh
eSgzKSkgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlzIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xh
bXBlZEFycmF5CitQQVNTIHZpZXcgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoMykgaXMgZGVmaW5l
ZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVk
LgorUEFTUyByYW5kb20gaXMgdmlldworUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFs
dWVzKG5ldyBVaW50MTZBcnJheSgzKSkgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlzIGFuIGlu
c3RhbmNlIG9mIFVpbnQxNkFycmF5CitQQVNTIHZpZXcgPSBuZXcgVWludDE2QXJyYXkoMykgaXMg
ZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBk
ZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldworUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFu
ZG9tVmFsdWVzKG5ldyBJbnQxNkFycmF5KDMpKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMg
YW4gaW5zdGFuY2Ugb2YgSW50MTZBcnJheQorUEFTUyB2aWV3ID0gbmV3IEludDE2QXJyYXkoMykg
aXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBp
cyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldworUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0
UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgzKSkgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9t
IGlzIGFuIGluc3RhbmNlIG9mIFVpbnQzMkFycmF5CitQQVNTIHZpZXcgPSBuZXcgVWludDMyQXJy
YXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2
aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldworUEFTUyByYW5kb20gPSBjcnlw
dG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDMpKSBpcyBkZWZpbmVkLgorUEFTUyBy
YW5kb20gaXMgYW4gaW5zdGFuY2Ugb2YgSW50MzJBcnJheQorUEFTUyB2aWV3ID0gbmV3IEludDMy
QXJyYXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVl
cyh2aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldwogUEFTUyBjcnlwdG8uZ2V0
UmFuZG9tVmFsdWVzKG5ldyBGbG9hdDMyQXJyYXkoMykpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjog
VHlwZU1pc21hdGNoRXJyb3I6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNyeXB0by5nZXRSYW5k
b21WYWx1ZXMobmV3IEZsb2F0NjRBcnJheSgzKSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUeXBl
TWlzbWF0Y2hFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc2VjdXJp
dHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMuaHRtbCBiL0xheW91dFRlc3RzL3NlY3VyaXR5
L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLmh0bWwKaW5kZXggMmZhNWFlY2QxMzM0MjE0OTY2
NmJmZTM3MWRjZjFhOTU0ZDc5OWE4NS4uYzgzOWRmMjA1NmQzOTEyZTEyZTM5NjA1ZDA4ZTQ0N2Ey
NjEwZDA2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12
YWx1ZXMtdHlwZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9t
LXZhbHVlcy10eXBlcy5odG1sCkBAIC0xNiwxNCArMTYsNTAgQEAgaWYgKCF3aW5kb3cuQXJyYXlC
dWZmZXIpCiBzaG91bGRCZSgiJ2NyeXB0bycgaW4gd2luZG93IiwgInRydWUiKTsKIHNob3VsZEJl
KCInZ2V0UmFuZG9tVmFsdWVzJyBpbiB3aW5kb3cuY3J5cHRvIiwgInRydWUiKTsKIAotc2hvdWxk
QmVVbmRlZmluZWQoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMykpIik7
Ci1zaG91bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50OEFycmF5
KDMpKSIpOwotc2hvdWxkQmVVbmRlZmluZWQoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVp
bnQxNkFycmF5KDMpKSIpOwotc2hvdWxkQmVVbmRlZmluZWQoImNyeXB0by5nZXRSYW5kb21WYWx1
ZXMobmV3IEludDE2QXJyYXkoMykpIik7Ci1zaG91bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdldFJh
bmRvbVZhbHVlcyhuZXcgVWludDMyQXJyYXkoMykpIik7Ci1zaG91bGRCZVVuZGVmaW5lZCgiY3J5
cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MzJBcnJheSgzKSkiKTsKLQotc2hvdWxkVGhyb3co
ImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEZsb2F0MzJBcnJheSgzKSkiKTsKK2Z1bmN0aW9u
IHNob3VsZEJlVHlwZShfYSwgX3R5cGUpIHsKKyAgdmFyIGV4Y2VwdGlvbjsKKyAgdmFyIF9hdjsK
KyAgdHJ5IHsKKyAgICBfYXYgPSBldmFsKF9hKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGV4Y2Vw
dGlvbiA9IGU7CisgIH0KKworICB2YXIgX3R5cGV2ID0gZXZhbChfdHlwZSk7CisgIGlmIChfYXYg
aW5zdGFuY2VvZiBfdHlwZXYpIHsKKyAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBhbiBpbnN0YW5j
ZSBvZiAiICsgX3R5cGUpOworICB9IGVsc2UgeworICAgIHRlc3RGYWlsZWQoX2EgKyAiIGlzIG5v
dCBhbiBpbnN0YW5jZSBvZiAiICsgX3R5cGUpOworICB9Cit9CisKK2Z1bmN0aW9uIGNoZWNrSW50
ZWdlclR5cGVzKCkgeworICB2YXIgaW50ZWdlclR5cGVzID0gWworICAgICJVaW50OEFycmF5Iiwg
IkludDhBcnJheSIsICJVaW50OENsYW1wZWRBcnJheSIsCisgICAgIlVpbnQxNkFycmF5IiwgIklu
dDE2QXJyYXkiLAorICAgICJVaW50MzJBcnJheSIsICJJbnQzMkFycmF5IiwKKyAgXTsKKyAgaW50
ZWdlclR5cGVzLmZvckVhY2goZnVuY3Rpb24oYXJyYXlUeXBlKSB7CisgICAgc2hvdWxkQmVEZWZp
bmVkKCJyYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyAiK2FycmF5VHlwZSsiKDMp
KSIpOworICAgIHNob3VsZEJlVHlwZSgicmFuZG9tIiwgYXJyYXlUeXBlKTsKKworICAgIHNob3Vs
ZEJlRGVmaW5lZCgidmlldyA9IG5ldyAiK2FycmF5VHlwZSsiKDMpIik7CisgICAgc2hvdWxkQmVE
ZWZpbmVkKCJyYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcpIik7CisgICAgc2hv
dWxkQmUoInJhbmRvbSIsICJ2aWV3Iik7CisgIH0pOworfQorCitmdW5jdGlvbiBjaGVja05vbklu
dGVnZXJUeXBlcygpIHsKKyAgdmFyIGZsb2F0VHlwZXMgPSBbCisgICAgIkZsb2F0MzJBcnJheSIs
ICJGbG9hdDY0QXJyYXkiCisgIF07CisgIGZsb2F0VHlwZXMuZm9yRWFjaChmdW5jdGlvbihhcnJh
eVR5cGUpIHsKKyAgICBzaG91bGRUaHJvdygiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgIith
cnJheVR5cGUrIigzKSkiKTsKKyAgfSk7Cit9ICAKKworY2hlY2tJbnRlZ2VyVHlwZXMoKTsKK2No
ZWNrTm9uSW50ZWdlclR5cGVzKCk7CiAKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179157</attachid>
            <date>2012-12-12 17:24:05 -0800</date>
            <delta_ts>2012-12-12 17:55:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104845-20121212172126.patch</filename>
            <type>text/plain</type>
            <size>14686</size>
            <attacher name="Ryan Sleevi">rsleevi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRjM2MxNjRiNTlhMGYx
Y2EzMmZjZThhMjI1MGZkMmE4NTQ5MjM4NC4uN2ZmNWQ2MmNiOWFmM2RjZTVhNWRhNTgyMWRhNzEz
NTk0ZWVjYWMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEyLTEyLTEyICBSeWFu
IFNsZWV2aSAgPHJzbGVldmlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHdpbmRvdy5jcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzIHNob3VsZCByZXR1cm4gdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZl
clZpZXdDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JhcCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgQWRkZWQgYSBWOCB3cmFwcGVyIGZvciBBcnJheUJ1ZmZlclZpZXcsIG5l
Y2Vzc2FyeSBiZWNhdXNlIG9mIHRoZSBDdXN0b21Ub0pTT2JqZWN0IGluIEFycmF5QnVmZmVyVmll
dy5pZGwKKyAgICAgICAgKiBwYWdlL0NyeXB0by5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAgICogcGFnZS9DcnlwdG8uaDoKKyAgICAgICAg
KENyeXB0byk6CisgICAgICAgICogcGFnZS9DcnlwdG8uaWRsOgorICAgICAgICBnZXRSYW5kb21W
YWx1ZXMgbm93IHJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGlucHV0IGFycmF5IG9uIHN1Y2Nl
c3MKKwogMjAxMi0xMi0xMCAgcGVhdm9Ab3V0bG9vay5jb20gIDxwZWF2b0BvdXRsb29rLmNvbT4K
IAogICAgICAgICBbV2luQ2Fpcm9dIExpbmsgZml4IGluIEluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBjNmIwZjJjODlmOTM3YjcxOGQ0NTcy
Yjc4NTJmMmQxMTEyNjNhYjYxLi41NGEyZmU5YTM5ZjA1OWM4MDAzZTAxODNlNDE4NmJiYmY3MDYw
NDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIyNDcsNiArMjI0Nyw3IEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmlu
ZGluZ1V0aWxpdGllcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRp
bmdVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZl
ckN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJW
aWV3Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZl
clZpZXdIZWxwZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdHRyQ3VzdG9t
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1ZmZlclNvdXJjZU5v
ZGVDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9T
b3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDY5NWFkYThlN2ExYzg4ZmJmOTNlNmMwZDMw
NTcyNGFmZjY2ZDU3MjguLjNlYjZkZDcxYjFiOTI5ZWQ2NjYyNTA2OTI0NjEwMGE5NDc3Mzc1NGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNv
cmUvVGFyZ2V0LnByaQpAQCAtNzYsNiArNzYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICAgYmluZGlu
Z3MvanMvRGljdGlvbmFyeS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3Bw
IFwKICAgICAgYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAgXAorICAgICBiaW5k
aW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9K
U0F0dHJDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNCbG9iQ3VzdG9tLmNwcCBcCiAg
ICAgIGJpbmRpbmdzL2pzL0pTQ0RBVEFTZWN0aW9uQ3VzdG9tLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UK
aW5kZXggZTMwYjYxOGVmOTExMGU4MzUxZGRjM2QwY2JjMWFmOTRmNzM3MGQzYy4uNDZhOWZjNjE5
NTU0ZjE4NzY0OGE2YjA5Y2VlZjBjNzQ0ZjQ1Yzc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQpAQCAtMzAs
NiArMzAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9E
aWN0aW9uYXJ5LmNwcAogICAgIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5jcHAKICAgICBiaW5k
aW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcAorICAgIGJpbmRpbmdzL2pzL0pTQXJyYXlC
dWZmZXJWaWV3Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAKICAg
ICBiaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNDREFUQVNl
Y3Rpb25DdXN0b20uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0FycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0FycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTc2MjAwNzJjMWZhMTZkODI1
Yzc5OWUwZmRkNTQyYzYzZmUzYzhhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcApAQCAtMCwwICsxLDQzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCisKK3Vz
aW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSB0b0pT
KEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQXJyYXlC
dWZmZXJWaWV3KiBhcnJheSkKK3sKKyAgICByZXR1cm4gd3JhcDxKU0FycmF5QnVmZmVyVmlldz4o
ZXhlYywgZ2xvYmFsT2JqZWN0LCBhcnJheSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3Bw
CmluZGV4IDA4ODY4ODgwNWRhZTE5YTZjNzNiNDI3OWU3YTA5MjdmNDc2ZGI3N2MuLmNhMmMwNzAz
ZDM5OGM2OWEwNzExYzIwNTE1YmM3YmEzODc3NDE4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIkRpY3Rpb25hcnkuY3BwIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5jcHAiCiAj
aW5jbHVkZSAiSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZl
clZpZXdDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQXR0ckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAi
SlNCbG9iQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZl
clZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJy
YXlCdWZmZXJWaWV3Q3VzdG9tLmNwcAppbmRleCBlNTRmOWI0NzBiYTcxYTRmNGRlMmRlZDFlZWM5
YTRmMDY2NmM5ZTEzLi5kM2VmNGUxMzQyOGI0YTM3MjY2YmI3NTE1M2Y3MDhmNGMwOTZkMGQ3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZl
clZpZXdDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEFycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIgogCisjaW5jbHVk
ZSAiVjhBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlld0N1c3Rv
bVNjcmlwdC5oIgogI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCiAKQEAgLTMzLDYg
KzM0LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiB3cmFwKEFycmF5QnVmZmVyVmlldyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVChpbXBsKTsK
KyAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyKGltcGwsIGlzb2xhdGUpLklzRW1w
dHkoKSk7CisgICAgcmV0dXJuIFY4QXJyYXlCdWZmZXJWaWV3OjpjcmVhdGVXcmFwcGVyKGltcGws
IGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBn
ZXRIaWRkZW5Db3B5TWV0aG9kKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG90eXBlKQogewog
ICAgIHJldHVybiBwcm90b3R5cGUtPkdldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1l
Ojp0eXBlZEFycmF5SGlkZGVuQ29weU1ldGhvZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ3J5cHRvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcAppbmRl
eCAxNjcwOWU5ZTBlNmZiODM3N2FkNGM4Njk0N2U4YWJmMGE4ZDA1YmFlLi5jOWFhNTExZjI4MGM4
N2IzODE5ODMzYjY4NmNiNDcyNjgzNDVlOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0NyeXB0by5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCkBAIC01
NiwyMiArNTYsMjIgQEAgQ3J5cHRvOjpDcnlwdG8oKQogewogfQogCi12b2lkIENyeXB0bzo6Z2V0
UmFuZG9tVmFsdWVzKEFycmF5QnVmZmVyVmlldyogYXJyYXksIEV4Y2VwdGlvbkNvZGUmIGVjKQor
UGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IENyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzKFBhc3NS
ZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBhcnJheSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAjaWYg
VVNFKE9TX1JBTkRPTU5FU1MpCi0gICAgaWYgKCFhcnJheSB8fCAhaXNJbnRlZ2VyQXJyYXkoYXJy
YXkpKSB7CisgICAgaWYgKCFhcnJheSB8fCAhaXNJbnRlZ2VyQXJyYXkoYXJyYXkuZ2V0KCkpKSB7
CiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChhcnJheS0+Ynl0ZUxlbmd0aCgpID4gNjU1MzYp
IHsKICAgICAgICAgZWMgPSBRVU9UQV9FWENFRURFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKKyAg
ICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVz
KGFycmF5LT5iYXNlQWRkcmVzcygpLCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKICNlbHNlCi0gICAg
QVNTRVJUX1VOVVNFRChhcnJheSwgYXJyYXkpOwogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7
CiAjZW5kaWYKKyAgICByZXR1cm4gYXJyYXk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ3J5cHRvLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5oCmluZGV4
IDE3MjVhZjg2ZWIyMWE0ODE2NGQ3MGQ4YWZlMmJhYjYxZmNjMzAyMzAuLmRlYzdmYzBhZGM4ZmFm
ZmE2ZWZiMDBjYTk4YTg0N2IyZGQ1MDlmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ3J5cHRvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaApAQCAtNDIsNyAr
NDIsNyBAQCBjbGFzcyBDcnlwdG8gOiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVm
Q291bnRlZDxDcnlwdG8+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDcnlwdG8+
IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDcnlwdG8oKSk7IH0KIAotICAgIHZvaWQg
Z2V0UmFuZG9tVmFsdWVzKEFycmF5QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQ
YXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gZ2V0UmFuZG9tVmFsdWVzKFBhc3NSZWZQdHI8QXJy
YXlCdWZmZXJWaWV3PiwgRXhjZXB0aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAgIENyeXB0bygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DcnlwdG8uaWRsCmluZGV4IDU4OTI4MWFmNTMxOWU4YjE3ZTU1ZWE2ZTNkYTlh
ZDM3NTQyMTIxNGEuLmZlZmVhYWZiMzkxMWE1N2Y3N2QxNjdjNjRkMDAzOGFkMGYwZTFhZWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NyeXB0by5pZGwKQEAgLTI5LDYgKzI5LDYgQEAKIFsKICAgICBPbWl0Q29uc3Ry
dWN0b3IKIF0gaW50ZXJmYWNlIENyeXB0byB7Ci0gICAgdm9pZCBnZXRSYW5kb21WYWx1ZXMoaW4g
QXJyYXlCdWZmZXJWaWV3IGFycmF5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICBBcnJheUJ1
ZmZlclZpZXcgZ2V0UmFuZG9tVmFsdWVzKGluIEFycmF5QnVmZmVyVmlldyBhcnJheSkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWRmZjI4MGY0MzBhNmQyMjNhNzI3MzM2YTdh
NTM2YmI0MWIxOGJlYS4uNGRjZTBhZWVhMDJiYWYxYmZmMzFmZDE5OGE1NGU5NWM3ZGY5Y2RlZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEyLTEyICBSeWFuIFNsZWV2aSAgPHJzbGVldmlA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIHNo
b3VsZCByZXR1cm4gdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODQ1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZh
bHVlcy10eXBlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc2VjdXJpdHkvY3J5cHRvLXJhbmRv
bS12YWx1ZXMtdHlwZXMuaHRtbDoKKyAgICAgICAgVGVzdCBhbGwgcG9zc2libGUgVHlwZWRBcnJh
eSBpbnRlZ2VyIHR5cGVzIGFuZCBlbnN1cmUgdGhhdCBib3RoIHRoZQorICAgICAgICBjb3JyZWN0
IFR5cGVkQXJyYXkgdHlwZSBpcyByZXR1cm5lZCBhbmQgdGhhdCBpdCBpcyBlcXVhbCB0byB0aGUg
aW5wdXQKKyAgICAgICAgdHlwZSAodGhhdCBpcywgdGhhdCB0aGUgaW5wdXQgdHlwZSBpcyBtb2Rp
ZmllZCBpbiBwbGFjZSwgcmF0aGVyIHRoZW4KKyAgICAgICAgY29waWVkKQorCiAyMDEyLTEyLTEw
ICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkOiBXZWIgSW5zcGVjdG9yOiB1cGRhdGUgdGVzdCBleHBlY3RhdGlvbiBmb3IgaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtY29tcHV0ZWQtdHJhY2UuaHRtbC4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLWV4cGVjdGVk
LnR4dAppbmRleCA2ODNkZTMyZjYzNGQ4NjFiNTA0NjAwMGEwMTkyNDdiZTE1Y2FmM2ZiLi4xNTVh
NzQ5ZWEyYzA1MTVkOTgwZGY2ZTljYjgzMWU3ZWMxOWE0YzNjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBlcy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMtZXhwZWN0
ZWQudHh0CkBAIC01LDEzICs1LDQzIEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIFBBU1Mg
J2NyeXB0bycgaW4gd2luZG93IGlzIHRydWUKIFBBU1MgJ2dldFJhbmRvbVZhbHVlcycgaW4gd2lu
ZG93LmNyeXB0byBpcyB0cnVlCi1QQVNTIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4
QXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcg
SW50OEFycmF5KDMpKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMo
bmV3IFVpbnQxNkFycmF5KDMpKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNyeXB0by5nZXRSYW5kb21W
YWx1ZXMobmV3IEludDE2QXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY3J5cHRvLmdldFJh
bmRvbVZhbHVlcyhuZXcgVWludDMyQXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY3J5cHRv
LmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MzJBcnJheSgzKSkgaXMgdW5kZWZpbmVkLgorUEFTUyBy
YW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDMpKSBpcyBkZWZp
bmVkLgorUEFTUyByYW5kb20gaXMgYW4gaW5zdGFuY2Ugb2YgVWludDhBcnJheQorUEFTUyB2aWV3
ID0gbmV3IFVpbnQ4QXJyYXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdl
dFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldworUEFT
UyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQ4QXJyYXkoMykpIGlzIGRl
ZmluZWQuCitQQVNTIHJhbmRvbSBpcyBhbiBpbnN0YW5jZSBvZiBJbnQ4QXJyYXkKK1BBU1Mgdmll
dyA9IG5ldyBJbnQ4QXJyYXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdl
dFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldworUEFT
UyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OENsYW1wZWRBcnJheSgz
KSkgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlzIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBl
ZEFycmF5CitQQVNTIHZpZXcgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoMykgaXMgZGVmaW5lZC4K
K1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVkLgor
UEFTUyByYW5kb20gaXMgdmlldworUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVz
KG5ldyBVaW50MTZBcnJheSgzKSkgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlzIGFuIGluc3Rh
bmNlIG9mIFVpbnQxNkFycmF5CitQQVNTIHZpZXcgPSBuZXcgVWludDE2QXJyYXkoMykgaXMgZGVm
aW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZp
bmVkLgorUEFTUyByYW5kb20gaXMgdmlldworUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9t
VmFsdWVzKG5ldyBJbnQxNkFycmF5KDMpKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgYW4g
aW5zdGFuY2Ugb2YgSW50MTZBcnJheQorUEFTUyB2aWV3ID0gbmV3IEludDE2QXJyYXkoMykgaXMg
ZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBk
ZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldworUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFu
ZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgzKSkgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlz
IGFuIGluc3RhbmNlIG9mIFVpbnQzMkFycmF5CitQQVNTIHZpZXcgPSBuZXcgVWludDMyQXJyYXko
MykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3
KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldworUEFTUyByYW5kb20gPSBjcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDMpKSBpcyBkZWZpbmVkLgorUEFTUyByYW5k
b20gaXMgYW4gaW5zdGFuY2Ugb2YgSW50MzJBcnJheQorUEFTUyB2aWV3ID0gbmV3IEludDMyQXJy
YXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2
aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldwogUEFTUyBjcnlwdG8uZ2V0UmFu
ZG9tVmFsdWVzKG5ldyBGbG9hdDMyQXJyYXkoMykpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVHlw
ZU1pc21hdGNoRXJyb3I6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNyeXB0by5nZXRSYW5kb21W
YWx1ZXMobmV3IEZsb2F0NjRBcnJheSgzKSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUeXBlTWlz
bWF0Y2hFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkv
Y3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMuaHRtbCBiL0xheW91dFRlc3RzL3NlY3VyaXR5L2Ny
eXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLmh0bWwKaW5kZXggMmZhNWFlY2QxMzM0MjE0OTY2NmJm
ZTM3MWRjZjFhOTU0ZDc5OWE4NS4uYzgzOWRmMjA1NmQzOTEyZTEyZTM5NjA1ZDA4ZTQ0N2EyNjEw
ZDA2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1
ZXMtdHlwZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZh
bHVlcy10eXBlcy5odG1sCkBAIC0xNiwxNCArMTYsNTAgQEAgaWYgKCF3aW5kb3cuQXJyYXlCdWZm
ZXIpCiBzaG91bGRCZSgiJ2NyeXB0bycgaW4gd2luZG93IiwgInRydWUiKTsKIHNob3VsZEJlKCIn
Z2V0UmFuZG9tVmFsdWVzJyBpbiB3aW5kb3cuY3J5cHRvIiwgInRydWUiKTsKIAotc2hvdWxkQmVV
bmRlZmluZWQoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMykpIik7Ci1z
aG91bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50OEFycmF5KDMp
KSIpOwotc2hvdWxkQmVVbmRlZmluZWQoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQx
NkFycmF5KDMpKSIpOwotc2hvdWxkQmVVbmRlZmluZWQoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMo
bmV3IEludDE2QXJyYXkoMykpIik7Ci1zaG91bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdldFJhbmRv
bVZhbHVlcyhuZXcgVWludDMyQXJyYXkoMykpIik7Ci1zaG91bGRCZVVuZGVmaW5lZCgiY3J5cHRv
LmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MzJBcnJheSgzKSkiKTsKLQotc2hvdWxkVGhyb3coImNy
eXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEZsb2F0MzJBcnJheSgzKSkiKTsKK2Z1bmN0aW9uIHNo
b3VsZEJlVHlwZShfYSwgX3R5cGUpIHsKKyAgdmFyIGV4Y2VwdGlvbjsKKyAgdmFyIF9hdjsKKyAg
dHJ5IHsKKyAgICBfYXYgPSBldmFsKF9hKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGV4Y2VwdGlv
biA9IGU7CisgIH0KKworICB2YXIgX3R5cGV2ID0gZXZhbChfdHlwZSk7CisgIGlmIChfYXYgaW5z
dGFuY2VvZiBfdHlwZXYpIHsKKyAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBhbiBpbnN0YW5jZSBv
ZiAiICsgX3R5cGUpOworICB9IGVsc2UgeworICAgIHRlc3RGYWlsZWQoX2EgKyAiIGlzIG5vdCBh
biBpbnN0YW5jZSBvZiAiICsgX3R5cGUpOworICB9Cit9CisKK2Z1bmN0aW9uIGNoZWNrSW50ZWdl
clR5cGVzKCkgeworICB2YXIgaW50ZWdlclR5cGVzID0gWworICAgICJVaW50OEFycmF5IiwgIklu
dDhBcnJheSIsICJVaW50OENsYW1wZWRBcnJheSIsCisgICAgIlVpbnQxNkFycmF5IiwgIkludDE2
QXJyYXkiLAorICAgICJVaW50MzJBcnJheSIsICJJbnQzMkFycmF5IiwKKyAgXTsKKyAgaW50ZWdl
clR5cGVzLmZvckVhY2goZnVuY3Rpb24oYXJyYXlUeXBlKSB7CisgICAgc2hvdWxkQmVEZWZpbmVk
KCJyYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyAiK2FycmF5VHlwZSsiKDMpKSIp
OworICAgIHNob3VsZEJlVHlwZSgicmFuZG9tIiwgYXJyYXlUeXBlKTsKKworICAgIHNob3VsZEJl
RGVmaW5lZCgidmlldyA9IG5ldyAiK2FycmF5VHlwZSsiKDMpIik7CisgICAgc2hvdWxkQmVEZWZp
bmVkKCJyYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcpIik7CisgICAgc2hvdWxk
QmUoInJhbmRvbSIsICJ2aWV3Iik7CisgIH0pOworfQorCitmdW5jdGlvbiBjaGVja05vbkludGVn
ZXJUeXBlcygpIHsKKyAgdmFyIGZsb2F0VHlwZXMgPSBbCisgICAgIkZsb2F0MzJBcnJheSIsICJG
bG9hdDY0QXJyYXkiCisgIF07CisgIGZsb2F0VHlwZXMuZm9yRWFjaChmdW5jdGlvbihhcnJheVR5
cGUpIHsKKyAgICBzaG91bGRUaHJvdygiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgIithcnJh
eVR5cGUrIigzKSkiKTsKKyAgfSk7Cit9ICAKKworY2hlY2tJbnRlZ2VyVHlwZXMoKTsKK2NoZWNr
Tm9uSW50ZWdlclR5cGVzKCk7CiAKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179168</attachid>
            <date>2012-12-12 17:55:13 -0800</date>
            <delta_ts>2012-12-12 18:31:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104845-20121212175234.patch</filename>
            <type>text/plain</type>
            <size>18598</size>
            <attacher name="Ryan Sleevi">rsleevi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MTU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRjM2MxNjRiNTlhMGYx
Y2EzMmZjZThhMjI1MGZkMmE4NTQ5MjM4NC4uMjAyN2ZhMWE5YTAxMTkwZmU3ZDdiMWNjZmY5MTU3
NDM2Yzk0OGYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEyLTEyICBSeWFu
IFNsZWV2aSAgPHJzbGVldmlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHdpbmRvdy5jcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzIHNob3VsZCByZXR1cm4gdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogc2Vj
dXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMuaHRtbAorCisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5j
bWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6IEFkZGVkIHRvSlMoKSBm
b3IgQXJyYXlCdWZmZXJWaWV3CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JhcCk6IEFkZGVkIHdyYXAoKSBmb3IgQXJy
YXlCdWZmZXJWaWV3CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL0NyeXB0by5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAg
ICogcGFnZS9DcnlwdG8uaDoKKyAgICAgICAgKENyeXB0byk6CisgICAgICAgICogcGFnZS9Dcnlw
dG8uaWRsOgorICAgICAgICBnZXRSYW5kb21WYWx1ZXMgbm93IHJldHVybnMgdGhlIGlucHV0IGFy
cmF5IG9uIHN1Y2Nlc3MKKwogMjAxMi0xMi0xMCAgcGVhdm9Ab3V0bG9vay5jb20gIDxwZWF2b0Bv
dXRsb29rLmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIExpbmsgZml4IGluIEluc3BlY3RvckNv
bnRyb2xsZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBjNmIwZjJjODlm
OTM3YjcxOGQ0NTcyYjc4NTJmMmQxMTEyNjNhYjYxLi41NGEyZmU5YTM5ZjA1OWM4MDAzZTAxODNl
NDE4NmJiYmY3MDYwNDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIyNDcs
NiArMjI0Nyw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdHRyQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1
ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDY5NWFkYThlN2ExYzg4
ZmJmOTNlNmMwZDMwNTcyNGFmZjY2ZDU3MjguLjNlYjZkZDcxYjFiOTI5ZWQ2NjYyNTA2OTI0NjEw
MGE5NDc3Mzc1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNzYsNiArNzYsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICAgYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9HQ0Nv
bnRyb2xsZXIuY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAg
XAorICAgICBiaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAgXAogICAgICBi
aW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNCbG9iQ3Vz
dG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTQ0RBVEFTZWN0aW9uQ3VzdG9tLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9V
c2VKU0MuY21ha2UKaW5kZXggZTMwYjYxOGVmOTExMGU4MzUxZGRjM2QwY2JjMWFmOTRmNzM3MGQz
Yy4uNDZhOWZjNjE5NTU0ZjE4NzY0OGE2YjA5Y2VlZjBjNzQ0ZjQ1Yzc3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5j
bWFrZQpAQCAtMzAsNiArMzAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBi
aW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAogICAgIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5j
cHAKICAgICBiaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcAorICAgIGJpbmRpbmdz
L2pzL0pTQXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTQXR0ckN1
c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
anMvSlNDREFUQVNlY3Rpb25DdXN0b20uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTlmM2FkY2Q2NWY0NjNhNTg0ZjM1OWM5
ZjJlNDMwMWZhZDRiM2NkYi4uNzI2MmRiYTUzMzQ0ZGU2YWZjZjM5NmQ3OTNhZTEyMjU3NTBmNjFl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNjg4LDYgKzY4OCw3IEBACiAJCTFGM0YxOTUzMTQ5OUNBNzYwMEE1QUVBNyAvKiBQ
T0RGcmVlTGlzdEFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxRjNGMTk1MjE0OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RBcmVuYS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFGQUZCRjE4
MTVBNUZBNkUwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyogVVRJ
VXRpbGl0aWVzLm1tICovOyB9OwogCQkxRkFGQkYxOTE1QTVGQTc0MDAwODNBMjAgLyogVVRJVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
RkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi87IH07CisJCTIwOUI0
NTZCMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0FycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMDlCNDU2QTE2Nzk2QTdF
MDBFNTRFNEUgLyogSlNBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwICovOyB9OwogCQkyMEQ2Mjky
NjEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYyOTI0MTI1MzY5MEIw
MDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICovOyB9OwogCQkyMEQ2Mjky
NzEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMEQ2MjkyNTEyNTM2OTBCMDAw
ODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi87IH07CiAJCTIyNzc3NzYwMTM0
NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1
NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzg1Niw2ICs3ODU3LDcgQEAKIAkJMUYzRjE5NTIx
NDk5Q0E3NjAwQTVBRUE3IC8qIFBPREZyZWVMaXN0QXJlbmEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUE9ERnJlZUxpc3RBcmVuYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxRkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUSVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVRJVXRpbGl0aWVz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMDlCNDU2QTE2Nzk2QTdFMDBFNTRF
NEUgLyogSlNBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyMEQ2MjkyNDEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTIwRDYyOTI1MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1
NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDU2NSw2ICsyMDU2Nyw3IEBACiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0
OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTIwOUI0NTZBMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0FycmF5QnVmZmVyVmlld0N1c3RvbS5j
cHAgKi8sCiAJCQkJQkMyNzVDQjIxMUM1RTg1QzAwQzkyMDZDIC8qIEpTQXJyYXlCdWZmZXJDdXN0
b20uY3BwICovLAogCQkJCTg2MjQzRDAwMTFCQzMxRjcwMENDMDA2QSAvKiBKU0FycmF5QnVmZmVy
Vmlld0hlbHBlci5oICovLAogCQkJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJD
dXN0b20uY3BwICovLApAQCAtMjkwMDMsNiArMjkwMDYsNyBAQAogCQkJCUQ2NDg5RDI1MTY2RkZD
RjEwMDdDMDMxQiAvKiBKU0hUTUxUZW1wbGF0ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRDZGNzk2MEQxNjZGRkVDRTAwNzZERDE4IC8qIEpTSFRNTFRlbXBsYXRlRWxlbWVudEN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzMUQ1OTFCQjE2NkMyRTZDMDBFNkJGMDIgLyogUGx1
Z0luT3JpZ2luSGFzaC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyMDlCNDU2QjE2Nzk2QTdFMDBF
NTRFNEUgLyogSlNBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0N1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0N1c3Rv
bS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNTc2MjAwNzJjMWZhMTZkODI1Yzc5OWUwZmRkNTQyYzYzZmUzYzhh
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlC
dWZmZXJWaWV3Q3VzdG9tLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQXJyYXlCdWZmZXJWaWV3KiBhcnJheSkKK3sK
KyAgICByZXR1cm4gd3JhcDxKU0FycmF5QnVmZmVyVmlldz4oZXhlYywgZ2xvYmFsT2JqZWN0LCBh
cnJheSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDA4ODY4ODgwNWRhZTE5
YTZjNzNiNDI3OWU3YTA5MjdmNDc2ZGI3N2MuLmNhMmMwNzAzZDM5OGM2OWEwNzExYzIwNTE1YmM3
YmEzODc3NDE4NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlu
ZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRpY3Rpb25hcnku
Y3BwIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5jcHAiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZl
ckN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwIgogI2lu
Y2x1ZGUgIkpTQXR0ckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNCbG9iQ3VzdG9tLmNwcCIKICNp
bmNsdWRlICJKU0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNw
cAppbmRleCBlNTRmOWI0NzBiYTcxYTRmNGRlMmRlZDFlZWM5YTRmMDY2NmM5ZTEzLi5kM2VmNGUx
MzQyOGI0YTM3MjY2YmI3NTE1M2Y3MDhmNGMwOTZkMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3Rv
bS5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJW
OEFycmF5QnVmZmVyVmlld0N1c3RvbS5oIgogCisjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlclZpZXcu
aCIKICNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlld0N1c3RvbVNjcmlwdC5oIgogI2luY2x1ZGUg
IlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCiAKQEAgLTMzLDYgKzM0LDEzIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEFycmF5QnVmZmVyVmll
dyogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29s
YXRlKiBpc29sYXRlKQoreworICAgIEFTU0VSVChpbXBsKTsKKyAgICBBU1NFUlQoRE9NRGF0YVN0
b3JlOjpnZXRXcmFwcGVyKGltcGwsIGlzb2xhdGUpLklzRW1wdHkoKSk7CisgICAgcmV0dXJuIFY4
QXJyYXlCdWZmZXJWaWV3OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRIaWRkZW5Db3B5TWV0aG9kKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG90eXBlKQogewogICAgIHJldHVybiBwcm90b3R5cGUt
PkdldEhpZGRlblZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjp0eXBlZEFycmF5SGlkZGVuQ29w
eU1ldGhvZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcAppbmRleCAxNjcwOWU5ZTBlNmZiODM3N2Fk
NGM4Njk0N2U4YWJmMGE4ZDA1YmFlLi5jOWFhNTExZjI4MGM4N2IzODE5ODMzYjY4NmNiNDcyNjgz
NDVlOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uY3BwCkBAIC01NiwyMiArNTYsMjIgQEAgQ3J5cHRv
OjpDcnlwdG8oKQogewogfQogCi12b2lkIENyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzKEFycmF5QnVm
ZmVyVmlldyogYXJyYXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxBcnJheUJ1ZmZl
clZpZXc+IENyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3
PiBhcnJheSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAjaWYgVVNFKE9TX1JBTkRPTU5FU1MpCi0g
ICAgaWYgKCFhcnJheSB8fCAhaXNJbnRlZ2VyQXJyYXkoYXJyYXkpKSB7CisgICAgaWYgKCFhcnJh
eSB8fCAhaXNJbnRlZ2VyQXJyYXkoYXJyYXkuZ2V0KCkpKSB7CiAgICAgICAgIGVjID0gVFlQRV9N
SVNNQVRDSF9FUlI7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
ICAgIGlmIChhcnJheS0+Ynl0ZUxlbmd0aCgpID4gNjU1MzYpIHsKICAgICAgICAgZWMgPSBRVU9U
QV9FWENFRURFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogICAgIGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKGFycmF5LT5iYXNlQWRkcmVzcygp
LCBhcnJheS0+Ynl0ZUxlbmd0aCgpKTsKICNlbHNlCi0gICAgQVNTRVJUX1VOVVNFRChhcnJheSwg
YXJyYXkpOwogICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAjZW5kaWYKKyAgICByZXR1cm4g
YXJyYXk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5oCmluZGV4IDE3MjVhZjg2ZWIyMWE0ODE2NGQ3
MGQ4YWZlMmJhYjYxZmNjMzAyMzAuLmRlYzdmYzBhZGM4ZmFmZmE2ZWZiMDBjYTk4YTg0N2IyZGQ1
MDlmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBDcnlwdG8g
OiBwdWJsaWMgU2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxDcnlwdG8+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDcnlwdG8+IGNyZWF0ZSgpIHsgcmV0dXJuIGFk
b3B0UmVmKG5ldyBDcnlwdG8oKSk7IH0KIAotICAgIHZvaWQgZ2V0UmFuZG9tVmFsdWVzKEFycmF5
QnVmZmVyVmlldyosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVy
Vmlldz4gZ2V0UmFuZG9tVmFsdWVzKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiwgRXhjZXB0
aW9uQ29kZSYpOwogCiBwcml2YXRlOgogICAgIENyeXB0bygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRs
CmluZGV4IDU4OTI4MWFmNTMxOWU4YjE3ZTU1ZWE2ZTNkYTlhZDM3NTQyMTIxNGEuLmZlZmVhYWZi
MzkxMWE1N2Y3N2QxNjdjNjRkMDAzOGFkMGYwZTFhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvQ3J5cHRvLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5pZGwK
QEAgLTI5LDYgKzI5LDYgQEAKIFsKICAgICBPbWl0Q29uc3RydWN0b3IKIF0gaW50ZXJmYWNlIENy
eXB0byB7Ci0gICAgdm9pZCBnZXRSYW5kb21WYWx1ZXMoaW4gQXJyYXlCdWZmZXJWaWV3IGFycmF5
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICBBcnJheUJ1ZmZlclZpZXcgZ2V0UmFuZG9tVmFs
dWVzKGluIEFycmF5QnVmZmVyVmlldyBhcnJheSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiB9Owog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggYWRmZjI4MGY0MzBhNmQyMjNhNzI3MzM2YTdhNTM2YmI0MWIxOGJlYS4uNGRjZTBh
ZWVhMDJiYWYxYmZmMzFmZDE5OGE1NGU5NWM3ZGY5Y2RlZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDEyLTEyLTEyICBSeWFuIFNsZWV2aSAgPHJzbGVldmlAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIHNob3VsZCByZXR1cm4gdGhlIGlucHV0
IEFycmF5QnVmZmVyVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTA0ODQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBzZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBlcy1leHBlY3RlZC50
eHQ6CisgICAgICAgICogc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMuaHRtbDoK
KyAgICAgICAgVGVzdCBhbGwgcG9zc2libGUgVHlwZWRBcnJheSBpbnRlZ2VyIHR5cGVzIGFuZCBl
bnN1cmUgdGhhdCBib3RoIHRoZQorICAgICAgICBjb3JyZWN0IFR5cGVkQXJyYXkgdHlwZSBpcyBy
ZXR1cm5lZCBhbmQgdGhhdCBpdCBpcyBlcXVhbCB0byB0aGUgaW5wdXQKKyAgICAgICAgdHlwZSAo
dGhhdCBpcywgdGhhdCB0aGUgaW5wdXQgdHlwZSBpcyBtb2RpZmllZCBpbiBwbGFjZSwgcmF0aGVy
IHRoZW4KKyAgICAgICAgY29waWVkKQorCiAyMDEyLTEyLTEwICBJbHlhIFRpa2hvbm92c2t5ICA8
bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkOiBXZWIgSW5zcGVjdG9y
OiB1cGRhdGUgdGVzdCBleHBlY3RhdGlvbiBmb3IgaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29t
cHV0ZWQtdHJhY2UuaHRtbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0
by1yYW5kb20tdmFsdWVzLXR5cGVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3NlY3VyaXR5
L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLWV4cGVjdGVkLnR4dAppbmRleCA2ODNkZTMyZjYz
NGQ4NjFiNTA0NjAwMGEwMTkyNDdiZTE1Y2FmM2ZiLi4xNTVhNzQ5ZWEyYzA1MTVkOTgwZGY2ZTlj
YjgzMWU3ZWMxOWE0YzNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zZWN1cml0eS9jcnlwdG8t
cmFuZG9tLXZhbHVlcy10eXBlcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc2VjdXJp
dHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMtZXhwZWN0ZWQudHh0CkBAIC01LDEzICs1LDQz
IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiAKIFBBU1MgJ2NyeXB0bycgaW4gd2luZG93IGlz
IHRydWUKIFBBU1MgJ2dldFJhbmRvbVZhbHVlcycgaW4gd2luZG93LmNyeXB0byBpcyB0cnVlCi1Q
QVNTIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMykpIGlzIHVuZGVmaW5l
ZC4KLVBBU1MgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50OEFycmF5KDMpKSBpcyB1bmRl
ZmluZWQuCi1QQVNTIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQxNkFycmF5KDMpKSBp
cyB1bmRlZmluZWQuCi1QQVNTIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDE2QXJyYXko
MykpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDMy
QXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcg
SW50MzJBcnJheSgzKSkgaXMgdW5kZWZpbmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFu
ZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDMpKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMg
YW4gaW5zdGFuY2Ugb2YgVWludDhBcnJheQorUEFTUyB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMykg
aXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBp
cyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldworUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0
UmFuZG9tVmFsdWVzKG5ldyBJbnQ4QXJyYXkoMykpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBp
cyBhbiBpbnN0YW5jZSBvZiBJbnQ4QXJyYXkKK1BBU1MgdmlldyA9IG5ldyBJbnQ4QXJyYXkoMykg
aXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBp
cyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldworUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0
UmFuZG9tVmFsdWVzKG5ldyBVaW50OENsYW1wZWRBcnJheSgzKSkgaXMgZGVmaW5lZC4KK1BBU1Mg
cmFuZG9tIGlzIGFuIGluc3RhbmNlIG9mIFVpbnQ4Q2xhbXBlZEFycmF5CitQQVNTIHZpZXcgPSBu
ZXcgVWludDhDbGFtcGVkQXJyYXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRv
LmdldFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldwor
UEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MTZBcnJheSgzKSkg
aXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlzIGFuIGluc3RhbmNlIG9mIFVpbnQxNkFycmF5CitQ
QVNTIHZpZXcgPSBuZXcgVWludDE2QXJyYXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0g
Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMg
dmlldworUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQxNkFycmF5
KDMpKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgYW4gaW5zdGFuY2Ugb2YgSW50MTZBcnJh
eQorUEFTUyB2aWV3ID0gbmV3IEludDE2QXJyYXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9t
ID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20g
aXMgdmlldworUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJB
cnJheSgzKSkgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlzIGFuIGluc3RhbmNlIG9mIFVpbnQz
MkFycmF5CitQQVNTIHZpZXcgPSBuZXcgVWludDMyQXJyYXkoMykgaXMgZGVmaW5lZC4KK1BBU1Mg
cmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVkLgorUEFTUyBy
YW5kb20gaXMgdmlldworUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJ
bnQzMkFycmF5KDMpKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgYW4gaW5zdGFuY2Ugb2Yg
SW50MzJBcnJheQorUEFTUyB2aWV3ID0gbmV3IEludDMyQXJyYXkoMykgaXMgZGVmaW5lZC4KK1BB
U1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVkLgorUEFT
UyByYW5kb20gaXMgdmlldwogUEFTUyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBGbG9hdDMy
QXJyYXkoMykpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVHlwZU1pc21hdGNoRXJyb3I6IERPTSBF
eGNlcHRpb24gMTcuCitQQVNTIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEZsb2F0NjRBcnJh
eSgzKSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUeXBlTWlzbWF0Y2hFcnJvcjogRE9NIEV4Y2Vw
dGlvbiAxNy4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMt
dHlwZXMuaHRtbCBiL0xheW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5
cGVzLmh0bWwKaW5kZXggMmZhNWFlY2QxMzM0MjE0OTY2NmJmZTM3MWRjZjFhOTU0ZDc5OWE4NS4u
YzgzOWRmMjA1NmQzOTEyZTEyZTM5NjA1ZDA4ZTQ0N2EyNjEwZDA2MyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBlcy5odG1sCkBAIC0x
NiwxNCArMTYsNTAgQEAgaWYgKCF3aW5kb3cuQXJyYXlCdWZmZXIpCiBzaG91bGRCZSgiJ2NyeXB0
bycgaW4gd2luZG93IiwgInRydWUiKTsKIHNob3VsZEJlKCInZ2V0UmFuZG9tVmFsdWVzJyBpbiB3
aW5kb3cuY3J5cHRvIiwgInRydWUiKTsKIAotc2hvdWxkQmVVbmRlZmluZWQoImNyeXB0by5nZXRS
YW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMykpIik7Ci1zaG91bGRCZVVuZGVmaW5lZCgiY3J5
cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50OEFycmF5KDMpKSIpOwotc2hvdWxkQmVVbmRlZmlu
ZWQoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQxNkFycmF5KDMpKSIpOwotc2hvdWxk
QmVVbmRlZmluZWQoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDE2QXJyYXkoMykpIik7
Ci1zaG91bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDMyQXJy
YXkoMykpIik7Ci1zaG91bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcg
SW50MzJBcnJheSgzKSkiKTsKLQotc2hvdWxkVGhyb3coImNyeXB0by5nZXRSYW5kb21WYWx1ZXMo
bmV3IEZsb2F0MzJBcnJheSgzKSkiKTsKK2Z1bmN0aW9uIHNob3VsZEJlVHlwZShfYSwgX3R5cGUp
IHsKKyAgdmFyIGV4Y2VwdGlvbjsKKyAgdmFyIF9hdjsKKyAgdHJ5IHsKKyAgICBfYXYgPSBldmFs
KF9hKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGV4Y2VwdGlvbiA9IGU7CisgIH0KKworICB2YXIg
X3R5cGV2ID0gZXZhbChfdHlwZSk7CisgIGlmIChfYXYgaW5zdGFuY2VvZiBfdHlwZXYpIHsKKyAg
ICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBhbiBpbnN0YW5jZSBvZiAiICsgX3R5cGUpOworICB9IGVs
c2UgeworICAgIHRlc3RGYWlsZWQoX2EgKyAiIGlzIG5vdCBhbiBpbnN0YW5jZSBvZiAiICsgX3R5
cGUpOworICB9Cit9CisKK2Z1bmN0aW9uIGNoZWNrSW50ZWdlclR5cGVzKCkgeworICB2YXIgaW50
ZWdlclR5cGVzID0gWworICAgICJVaW50OEFycmF5IiwgIkludDhBcnJheSIsICJVaW50OENsYW1w
ZWRBcnJheSIsCisgICAgIlVpbnQxNkFycmF5IiwgIkludDE2QXJyYXkiLAorICAgICJVaW50MzJB
cnJheSIsICJJbnQzMkFycmF5IiwKKyAgXTsKKyAgaW50ZWdlclR5cGVzLmZvckVhY2goZnVuY3Rp
b24oYXJyYXlUeXBlKSB7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJyYW5kb20gPSBjcnlwdG8uZ2V0
UmFuZG9tVmFsdWVzKG5ldyAiK2FycmF5VHlwZSsiKDMpKSIpOworICAgIHNob3VsZEJlVHlwZSgi
cmFuZG9tIiwgYXJyYXlUeXBlKTsKKworICAgIHNob3VsZEJlRGVmaW5lZCgidmlldyA9IG5ldyAi
K2FycmF5VHlwZSsiKDMpIik7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJyYW5kb20gPSBjcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzKHZpZXcpIik7CisgICAgc2hvdWxkQmUoInJhbmRvbSIsICJ2aWV3Iik7
CisgIH0pOworfQorCitmdW5jdGlvbiBjaGVja05vbkludGVnZXJUeXBlcygpIHsKKyAgdmFyIGZs
b2F0VHlwZXMgPSBbCisgICAgIkZsb2F0MzJBcnJheSIsICJGbG9hdDY0QXJyYXkiCisgIF07Cisg
IGZsb2F0VHlwZXMuZm9yRWFjaChmdW5jdGlvbihhcnJheVR5cGUpIHsKKyAgICBzaG91bGRUaHJv
dygiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgIithcnJheVR5cGUrIigzKSkiKTsKKyAgfSk7
Cit9ICAKKworY2hlY2tJbnRlZ2VyVHlwZXMoKTsKK2NoZWNrTm9uSW50ZWdlclR5cGVzKCk7CiAK
IDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179175</attachid>
            <date>2012-12-12 18:32:02 -0800</date>
            <delta_ts>2012-12-19 18:21:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104845-20121212182923.patch</filename>
            <type>text/plain</type>
            <size>18588</size>
            <attacher name="Ryan Sleevi">rsleevi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3NTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmIzMzY5NzhiMTVkYWRj
NjIzNzgyN2I2YzI0OWIwYjFhZDljNzVhNC4uNTYxNDMwYWYyMWQ3ZjAyNWYyZjQ2MmUzMjY5YTQ1
YzUzNjNhZWI4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEyLTEyLTEyICBSeWFu
IFNsZWV2aSAgPHJzbGVldmlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHdpbmRvdy5jcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzIHNob3VsZCByZXR1cm4gdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODQ1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogc2Vj
dXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMuaHRtbAorCisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5j
bWFrZToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6IEFkZGVkIHRvSlMoKSBm
b3IgQXJyYXlCdWZmZXJWaWV3CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JhcCk6IEFkZGVkIHdyYXAoKSBmb3IgQXJy
YXlCdWZmZXJWaWV3CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL0NyeXB0by5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAg
ICogcGFnZS9DcnlwdG8uaDoKKyAgICAgICAgKENyeXB0byk6CisgICAgICAgICogcGFnZS9Dcnlw
dG8uaWRsOgorICAgICAgICBnZXRSYW5kb21WYWx1ZXMgbm93IHJldHVybnMgdGhlIGlucHV0IGFy
cmF5IG9uIHN1Y2Nlc3MKKwogMjAxMi0xMi0xMiAgS3l1bmdUYWUgS2ltICA8a3RmLmtpbUBzYW1z
dW5nLmNvbT4KIAogICAgICAgICBVbnVzZWQgcGFyYW1ldGVycyBvbiBUZXh0dXJlTWFwcGVySW1h
Z2VCdWZmZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA3YmJkNjM3NDdl
MWEwMzc5OWM5OTZkM2I1MGI3MjgzYTQ4MzdhZjQyLi4wNzI3NzVjZmMwNzlhYjRiNjdkZWVmMDI5
NTJkYjAxOGYzZDcxMzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIyNDgs
NiArMjI0OCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNBdHRyQ3VzdG9tLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0J1
ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDUxYTE0ZjM4Yjg1YWQx
MWMzYWE3YzAzYzdhYjc0NDBiNmM0YWI2NmEuLjAzMDVmODE5ODc1MmI3ZmFkNGQ4NjMyZjBjYWQ2
Y2M4NmIzNTA3OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtNjcsNiArNjcsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICAgYmluZGluZ3MvanMvRGljdGlvbmFyeS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9HQ0Nv
bnRyb2xsZXIuY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNBcnJheUJ1ZmZlckN1c3RvbS5jcHAg
XAorICAgICBiaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAgXAogICAgICBi
aW5kaW5ncy9qcy9KU0F0dHJDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNCbG9iQ3Vz
dG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pzL0pTQ0RBVEFTZWN0aW9uQ3VzdG9tLmNwcCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9V
c2VKU0MuY21ha2UKaW5kZXggODlmZjhjYjJkOTcxYmY1ZjI1ZjJiMzNhZGRlYTQ1NDY3MWRiZDky
NS4uYTdhYWM2MzRkYjM3MzZjOTg5OTIzMTEwZDAyNjI4YWRkZjE5MTE5YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5j
bWFrZQpAQCAtMzAsNiArMzAsNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBi
aW5kaW5ncy9qcy9EaWN0aW9uYXJ5LmNwcAogICAgIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5j
cHAKICAgICBiaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyQ3VzdG9tLmNwcAorICAgIGJpbmRpbmdz
L2pzL0pTQXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTQXR0ckN1
c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCiAgICAgYmluZGluZ3Mv
anMvSlNDREFUQVNlY3Rpb25DdXN0b20uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzFiNTIxOTM5NWJjYjcwNzA1OGNkZGVm
MDA4MzU0OGI5MzY3ODBiMi4uZjM1YjQzNmFmZDgwNjYwYjQxNGVlZTBjNThlMTc1MTU0ZDQyN2U5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtNjkzLDYgKzY5Myw3IEBACiAJCTFGM0YxOTUzMTQ5OUNBNzYwMEE1QUVBNyAvKiBQ
T0RGcmVlTGlzdEFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxRjNGMTk1MjE0OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RBcmVuYS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFGQUZCRjE4
MTVBNUZBNkUwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyogVVRJ
VXRpbGl0aWVzLm1tICovOyB9OwogCQkxRkFGQkYxOTE1QTVGQTc0MDAwODNBMjAgLyogVVRJVXRp
bGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
RkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi87IH07CisJCTIwOUI0
NTZCMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0FycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMDlCNDU2QTE2Nzk2QTdF
MDBFNTRFNEUgLyogSlNBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwICovOyB9OwogCQkyMEQ2Mjky
NjEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYyOTI0MTI1MzY5MEIw
MDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICovOyB9OwogCQkyMEQ2Mjky
NzEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMEQ2MjkyNTEyNTM2OTBCMDAw
ODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi87IH07CiAJCTIyNzc3NzYwMTM0
NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1
NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzg2Niw2ICs3ODY3LDcgQEAKIAkJMUYzRjE5NTIx
NDk5Q0E3NjAwQTVBRUE3IC8qIFBPREZyZWVMaXN0QXJlbmEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUE9ERnJlZUxpc3RBcmVuYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxRkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVUSVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVz
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVRJVXRpbGl0aWVz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMDlCNDU2QTE2Nzk2QTdFMDBFNTRF
NEUgLyogSlNBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyMEQ2MjkyNDEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTIwRDYyOTI1MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1
NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDU2Nyw2ICsyMDU2OSw3IEBACiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0
OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTIwOUI0NTZBMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0FycmF5QnVmZmVyVmlld0N1c3RvbS5j
cHAgKi8sCiAJCQkJQkMyNzVDQjIxMUM1RTg1QzAwQzkyMDZDIC8qIEpTQXJyYXlCdWZmZXJDdXN0
b20uY3BwICovLAogCQkJCTg2MjQzRDAwMTFCQzMxRjcwMENDMDA2QSAvKiBKU0FycmF5QnVmZmVy
Vmlld0hlbHBlci5oICovLAogCQkJCUJDMkVENkJCMEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJD
dXN0b20uY3BwICovLApAQCAtMjkwMjEsNiArMjkwMjQsNyBAQAogCQkJCUZEQTkzMjVEMTY3MDNC
MkEwMDg5ODJEQyAvKiBPZmZsaW5lQXVkaW9Db250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUZEQTkzMjY2MTY3MDNCQTkwMDg5ODJEQyAvKiBKU09mZmxpbmVBdWRpb0NvbnRleHQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRkU0NTZGMTgxNjc3RDc0RTAwNUVEREY5IC8qIERhdGFiYXNlTWFu
YWdlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyMDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyog
SlNBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0FycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTc2MjAwNzJjMWZhMTZkODI1Yzc5OWUwZmRkNTQyYzYzZmUzYzhhYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXJyYXlCdWZmZXJWaWV3
Q3VzdG9tLmNwcApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkpTQXJyYXlCdWZmZXJWaWV3LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQXJyYXlCdWZmZXJWaWV3KiBhcnJheSkKK3sKKyAgICByZXR1
cm4gd3JhcDxKU0FycmF5QnVmZmVyVmlldz4oZXhlYywgZ2xvYmFsT2JqZWN0LCBhcnJheSk7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDU5OTg4OWU5ZDE1M2FhOWRkZmJmNTAw
MjI3Zjk4MTI2OWJlZmQ5OGIuLmIzZTMyNGIwZDI5NzA3MTUxNjgwNmMxMzQwMjM0ZDdlYTQyOTJi
ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJ
bk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkRpY3Rpb25hcnkuY3BwIgogI2lu
Y2x1ZGUgIkdDQ29udHJvbGxlci5jcHAiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlckN1c3RvbS5j
cHAiCisjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
QXR0ckN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNCbG9iQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJK
U0NEQVRBU2VjdGlvbkN1c3RvbS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXJyYXlCdWZmZXJWaWV3Q3VzdG9tLmNwcAppbmRleCBl
NTRmOWI0NzBiYTcxYTRmNGRlMmRlZDFlZWM5YTRmMDY2NmM5ZTEzLi5kM2VmNGUxMzQyOGI0YTM3
MjY2YmI3NTE1M2Y3MDhmNGMwOTZkMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5jcHAKQEAg
LTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJWOEFycmF5QnVm
ZmVyVmlld0N1c3RvbS5oIgogCisjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNs
dWRlICJWOEFycmF5QnVmZmVyVmlld0N1c3RvbVNjcmlwdC5oIgogI2luY2x1ZGUgIlY4SGlkZGVu
UHJvcGVydHlOYW1lLmgiCiAKQEAgLTMzLDYgKzM0LDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAordjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKEFycmF5QnVmZmVyVmlldyogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQoreworICAgIEFTU0VSVChpbXBsKTsKKyAgICBBU1NFUlQoRE9NRGF0YVN0b3JlOjpnZXRX
cmFwcGVyKGltcGwsIGlzb2xhdGUpLklzRW1wdHkoKSk7CisgICAgcmV0dXJuIFY4QXJyYXlCdWZm
ZXJWaWV3OjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7Cit9
CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXRIaWRkZW5Db3B5TWV0aG9kKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gcHJvdG90eXBlKQogewogICAgIHJldHVybiBwcm90b3R5cGUtPkdldEhpZGRl
blZhbHVlKFY4SGlkZGVuUHJvcGVydHlOYW1lOjp0eXBlZEFycmF5SGlkZGVuQ29weU1ldGhvZCgp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ3J5cHRvLmNwcAppbmRleCAxNjcwOWU5ZTBlNmZiODM3N2FkNGM4Njk0N2U4
YWJmMGE4ZDA1YmFlLi5jOWFhNTExZjI4MGM4N2IzODE5ODMzYjY4NmNiNDcyNjgzNDVlOGExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9DcnlwdG8uY3BwCkBAIC01NiwyMiArNTYsMjIgQEAgQ3J5cHRvOjpDcnlwdG8o
KQogewogfQogCi12b2lkIENyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzKEFycmF5QnVmZmVyVmlldyog
YXJyYXksIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IENy
eXB0bzo6Z2V0UmFuZG9tVmFsdWVzKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiBhcnJheSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAjaWYgVVNFKE9TX1JBTkRPTU5FU1MpCi0gICAgaWYgKCFh
cnJheSB8fCAhaXNJbnRlZ2VyQXJyYXkoYXJyYXkpKSB7CisgICAgaWYgKCFhcnJheSB8fCAhaXNJ
bnRlZ2VyQXJyYXkoYXJyYXkuZ2V0KCkpKSB7CiAgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9F
UlI7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChh
cnJheS0+Ynl0ZUxlbmd0aCgpID4gNjU1MzYpIHsKICAgICAgICAgZWMgPSBRVU9UQV9FWENFRURF
RF9FUlI7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGNy
eXB0b2dyYXBoaWNhbGx5UmFuZG9tVmFsdWVzKGFycmF5LT5iYXNlQWRkcmVzcygpLCBhcnJheS0+
Ynl0ZUxlbmd0aCgpKTsKICNlbHNlCi0gICAgQVNTRVJUX1VOVVNFRChhcnJheSwgYXJyYXkpOwog
ICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7CiAjZW5kaWYKKyAgICByZXR1cm4gYXJyYXk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0NyeXB0by5oCmluZGV4IDE3MjVhZjg2ZWIyMWE0ODE2NGQ3MGQ4YWZlMmJh
YjYxZmNjMzAyMzAuLmRlYzdmYzBhZGM4ZmFmZmE2ZWZiMDBjYTk4YTg0N2IyZGQ1MDlmZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DcnlwdG8uaApAQCAtNDIsNyArNDIsNyBAQCBjbGFzcyBDcnlwdG8gOiBwdWJsaWMg
U2NyaXB0V3JhcHBhYmxlLCBwdWJsaWMgUmVmQ291bnRlZDxDcnlwdG8+IHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxDcnlwdG8+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDcnlwdG8oKSk7IH0KIAotICAgIHZvaWQgZ2V0UmFuZG9tVmFsdWVzKEFycmF5QnVmZmVyVmll
dyosIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBQYXNzUmVmUHRyPEFycmF5QnVmZmVyVmlldz4gZ2V0
UmFuZG9tVmFsdWVzKFBhc3NSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiwgRXhjZXB0aW9uQ29kZSYp
OwogCiBwcml2YXRlOgogICAgIENyeXB0bygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9DcnlwdG8uaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsCmluZGV4IDU4
OTI4MWFmNTMxOWU4YjE3ZTU1ZWE2ZTNkYTlhZDM3NTQyMTIxNGEuLmZlZmVhYWZiMzkxMWE1N2Y3
N2QxNjdjNjRkMDAzOGFkMGYwZTFhZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Q3J5cHRvLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5pZGwKQEAgLTI5LDYg
KzI5LDYgQEAKIFsKICAgICBPbWl0Q29uc3RydWN0b3IKIF0gaW50ZXJmYWNlIENyeXB0byB7Ci0g
ICAgdm9pZCBnZXRSYW5kb21WYWx1ZXMoaW4gQXJyYXlCdWZmZXJWaWV3IGFycmF5KSByYWlzZXMo
RE9NRXhjZXB0aW9uKTsKKyAgICBBcnJheUJ1ZmZlclZpZXcgZ2V0UmFuZG9tVmFsdWVzKGluIEFy
cmF5QnVmZmVyVmlldyBhcnJheSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiB9OwogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YzAxMDVjMDEwZGRmNmJhNzVhNDZmZGNiOTM1ZDkyYmJiZDlkZGUxMC4uYTNiMmU3MDk3NTAwMWE5
Zjg4MTU3MGZjYTlkMTk0ODU4OGMxNDkxNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTEy
LTEyICBSeWFuIFNsZWV2aSAgPHJzbGVldmlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHdpbmRv
dy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIHNob3VsZCByZXR1cm4gdGhlIGlucHV0IEFycmF5QnVm
ZmVyVmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA0ODQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBlcy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMuaHRtbDoKKyAgICAgICAg
VGVzdCBhbGwgcG9zc2libGUgVHlwZWRBcnJheSBpbnRlZ2VyIHR5cGVzIGFuZCBlbnN1cmUgdGhh
dCBib3RoIHRoZQorICAgICAgICBjb3JyZWN0IFR5cGVkQXJyYXkgdHlwZSBpcyByZXR1cm5lZCBh
bmQgdGhhdCBpdCBpcyBlcXVhbCB0byB0aGUgaW5wdXQKKyAgICAgICAgdHlwZSAodGhhdCBpcywg
dGhhdCB0aGUgaW5wdXQgdHlwZSBpcyBtb2RpZmllZCBpbiBwbGFjZSwgcmF0aGVyIHRoZW4KKyAg
ICAgICAgY29waWVkKQorCiAyMDEyLTEyLTEyICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbU2hhZG93XSBIVE1MQ29udGVudEVsZW1lbnQ6OmdldERp
c3RyaWJ1dGVkTm9kZXMoKSBkb2Vzbid0IHdvcmsgY29ycmVjdGx5IGlmIG5vdCBpbiBkb2N1bWVu
dCB0cmVlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12
YWx1ZXMtdHlwZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJh
bmRvbS12YWx1ZXMtdHlwZXMtZXhwZWN0ZWQudHh0CmluZGV4IDY4M2RlMzJmNjM0ZDg2MWI1MDQ2
MDAwYTAxOTI0N2JlMTVjYWYzZmIuLjE1NWE3NDllYTJjMDUxNWQ5ODBkZjZlOWNiODMxZTdlYzE5
YTRjM2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFs
dWVzLXR5cGVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zZWN1cml0eS9jcnlwdG8t
cmFuZG9tLXZhbHVlcy10eXBlcy1leHBlY3RlZC50eHQKQEAgLTUsMTMgKzUsNDMgQEAgT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUKIAogUEFTUyAnY3J5cHRvJyBpbiB3aW5kb3cgaXMgdHJ1ZQogUEFT
UyAnZ2V0UmFuZG9tVmFsdWVzJyBpbiB3aW5kb3cuY3J5cHRvIGlzIHRydWUKLVBBU1MgY3J5cHRv
LmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgzKSkgaXMgdW5kZWZpbmVkLgotUEFTUyBj
cnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQ4QXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KLVBB
U1MgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDE2QXJyYXkoMykpIGlzIHVuZGVmaW5l
ZC4KLVBBU1MgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MTZBcnJheSgzKSkgaXMgdW5k
ZWZpbmVkLgotUEFTUyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgzKSkg
aXMgdW5kZWZpbmVkLgotUEFTUyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5
KDMpKSBpcyB1bmRlZmluZWQuCitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMo
bmV3IFVpbnQ4QXJyYXkoMykpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyBhbiBpbnN0YW5j
ZSBvZiBVaW50OEFycmF5CitQQVNTIHZpZXcgPSBuZXcgVWludDhBcnJheSgzKSBpcyBkZWZpbmVk
LgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcpIGlzIGRlZmluZWQu
CitQQVNTIHJhbmRvbSBpcyB2aWV3CitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1
ZXMobmV3IEludDhBcnJheSgzKSkgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlzIGFuIGluc3Rh
bmNlIG9mIEludDhBcnJheQorUEFTUyB2aWV3ID0gbmV3IEludDhBcnJheSgzKSBpcyBkZWZpbmVk
LgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcpIGlzIGRlZmluZWQu
CitQQVNTIHJhbmRvbSBpcyB2aWV3CitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1
ZXMobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMg
YW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVkQXJyYXkKK1BBU1MgdmlldyA9IG5ldyBVaW50OENs
YW1wZWRBcnJheSgzKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9t
VmFsdWVzKHZpZXcpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyB2aWV3CitQQVNTIHJhbmRv
bSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQxNkFycmF5KDMpKSBpcyBkZWZpbmVk
LgorUEFTUyByYW5kb20gaXMgYW4gaW5zdGFuY2Ugb2YgVWludDE2QXJyYXkKK1BBU1MgdmlldyA9
IG5ldyBVaW50MTZBcnJheSgzKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0
UmFuZG9tVmFsdWVzKHZpZXcpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyB2aWV3CitQQVNT
IHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDE2QXJyYXkoMykpIGlzIGRl
ZmluZWQuCitQQVNTIHJhbmRvbSBpcyBhbiBpbnN0YW5jZSBvZiBJbnQxNkFycmF5CitQQVNTIHZp
ZXcgPSBuZXcgSW50MTZBcnJheSgzKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzKHZpZXcpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyB2aWV3CitQ
QVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KDMpKSBp
cyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgYW4gaW5zdGFuY2Ugb2YgVWludDMyQXJyYXkKK1BB
U1MgdmlldyA9IG5ldyBVaW50MzJBcnJheSgzKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gPSBj
cnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyB2
aWV3CitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDMyQXJyYXko
MykpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyBhbiBpbnN0YW5jZSBvZiBJbnQzMkFycmF5
CitQQVNTIHZpZXcgPSBuZXcgSW50MzJBcnJheSgzKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20g
PSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBp
cyB2aWV3CiBQQVNTIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEZsb2F0MzJBcnJheSgzKSkg
dGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUeXBlTWlzbWF0Y2hFcnJvcjogRE9NIEV4Y2VwdGlvbiAx
Ny4KK1BBU1MgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgRmxvYXQ2NEFycmF5KDMpKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IFR5cGVNaXNtYXRjaEVycm9yOiBET00gRXhjZXB0aW9uIDE3Lgog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBlcy5odG1s
IGIvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMuaHRtbApp
bmRleCAyZmE1YWVjZDEzMzQyMTQ5NjY2YmZlMzcxZGNmMWE5NTRkNzk5YTg1Li5jODM5ZGYyMDU2
ZDM5MTJlMTJlMzk2MDVkMDhlNDQ3YTI2MTBkMDYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9z
ZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBlcy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLmh0bWwKQEAgLTE2LDE0ICsxNiw1
MCBAQCBpZiAoIXdpbmRvdy5BcnJheUJ1ZmZlcikKIHNob3VsZEJlKCInY3J5cHRvJyBpbiB3aW5k
b3ciLCAidHJ1ZSIpOwogc2hvdWxkQmUoIidnZXRSYW5kb21WYWx1ZXMnIGluIHdpbmRvdy5jcnlw
dG8iLCAidHJ1ZSIpOwogCi1zaG91bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdldFJhbmRvbVZhbHVl
cyhuZXcgVWludDhBcnJheSgzKSkiKTsKLXNob3VsZEJlVW5kZWZpbmVkKCJjcnlwdG8uZ2V0UmFu
ZG9tVmFsdWVzKG5ldyBJbnQ4QXJyYXkoMykpIik7Ci1zaG91bGRCZVVuZGVmaW5lZCgiY3J5cHRv
LmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDE2QXJyYXkoMykpIik7Ci1zaG91bGRCZVVuZGVmaW5l
ZCgiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MTZBcnJheSgzKSkiKTsKLXNob3VsZEJl
VW5kZWZpbmVkKCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgzKSkiKTsK
LXNob3VsZEJlVW5kZWZpbmVkKCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5
KDMpKSIpOwotCi1zaG91bGRUaHJvdygiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgRmxvYXQz
MkFycmF5KDMpKSIpOworZnVuY3Rpb24gc2hvdWxkQmVUeXBlKF9hLCBfdHlwZSkgeworICB2YXIg
ZXhjZXB0aW9uOworICB2YXIgX2F2OworICB0cnkgeworICAgIF9hdiA9IGV2YWwoX2EpOworICB9
IGNhdGNoIChlKSB7CisgICAgZXhjZXB0aW9uID0gZTsKKyAgfQorCisgIHZhciBfdHlwZXYgPSBl
dmFsKF90eXBlKTsKKyAgaWYgKF9hdiBpbnN0YW5jZW9mIF90eXBldikgeworICAgIHRlc3RQYXNz
ZWQoX2EgKyAiIGlzIGFuIGluc3RhbmNlIG9mICIgKyBfdHlwZSk7CisgIH0gZWxzZSB7CisgICAg
dGVzdEZhaWxlZChfYSArICIgaXMgbm90IGFuIGluc3RhbmNlIG9mICIgKyBfdHlwZSk7CisgIH0K
K30KKworZnVuY3Rpb24gY2hlY2tJbnRlZ2VyVHlwZXMoKSB7CisgIHZhciBpbnRlZ2VyVHlwZXMg
PSBbCisgICAgIlVpbnQ4QXJyYXkiLCAiSW50OEFycmF5IiwgIlVpbnQ4Q2xhbXBlZEFycmF5IiwK
KyAgICAiVWludDE2QXJyYXkiLCAiSW50MTZBcnJheSIsCisgICAgIlVpbnQzMkFycmF5IiwgIklu
dDMyQXJyYXkiLAorICBdOworICBpbnRlZ2VyVHlwZXMuZm9yRWFjaChmdW5jdGlvbihhcnJheVR5
cGUpIHsKKyAgICBzaG91bGRCZURlZmluZWQoInJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1
ZXMobmV3ICIrYXJyYXlUeXBlKyIoMykpIik7CisgICAgc2hvdWxkQmVUeXBlKCJyYW5kb20iLCBh
cnJheVR5cGUpOworCisgICAgc2hvdWxkQmVEZWZpbmVkKCJ2aWV3ID0gbmV3ICIrYXJyYXlUeXBl
KyIoMykiKTsKKyAgICBzaG91bGRCZURlZmluZWQoInJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21W
YWx1ZXModmlldykiKTsKKyAgICBzaG91bGRCZSgicmFuZG9tIiwgInZpZXciKTsKKyAgfSk7Cit9
CisKK2Z1bmN0aW9uIGNoZWNrTm9uSW50ZWdlclR5cGVzKCkgeworICB2YXIgZmxvYXRUeXBlcyA9
IFsKKyAgICAiRmxvYXQzMkFycmF5IiwgIkZsb2F0NjRBcnJheSIKKyAgXTsKKyAgZmxvYXRUeXBl
cy5mb3JFYWNoKGZ1bmN0aW9uKGFycmF5VHlwZSkgeworICAgIHNob3VsZFRocm93KCJjcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzKG5ldyAiK2FycmF5VHlwZSsiKDMpKSIpOworICB9KTsKK30gIAorCitj
aGVja0ludGVnZXJUeXBlcygpOworY2hlY2tOb25JbnRlZ2VyVHlwZXMoKTsKIAogPC9zY3JpcHQ+
CiA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180257</attachid>
            <date>2012-12-19 18:21:08 -0800</date>
            <delta_ts>2012-12-19 19:55:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104845-20121219181824.patch</filename>
            <type>text/plain</type>
            <size>21434</size>
            <attacher name="Ryan Sleevi">rsleevi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk1ZDM2OTRiZDNhMTk2
NDc1ZWI1NTdhZDRlOTM5ZWY2MWNkM2E3Mi4uMmFhZjBmOTNkNzQ1M2U0ODUwMzE5ZGM3YTI0NzI1
Yzk0YjgyZGRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEyLTE5ICBSeWFu
IFNsZWV2aSAgPHJzbGVldmlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHdpbmRvdy5jcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzIHNob3VsZCByZXR1cm4gdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODQ1CisK
KyAgICAgICAgVGhlIFczQyBXZWIgQ3J5cHRvIEFQSSBGUFdELCBhcyB3ZWxsIGFzIHRoZSBXSEFU
V0cgRmVicnVhcnkgMjAxMiBkcmFmdCwKKyAgICAgICAgZGVmaW5lIGNyeXB0by5nZXRSYW5kb21W
YWx1ZXMoKSBhcyByZXR1cm5pbmcgdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldywKKyAgICAgICAg
dG8gYWxsb3cgZnVuY3Rpb24gY2FsbCBjaGFpbmluZy4gVXBkYXRlIHRoZSBpbXBsZW1lbnRhdGlv
biB0byBtYXRjaAorICAgICAgICB0aGUgY3VycmVudCBzcGVjLCByYXRoZXIgdGhhbiB0aGUgb2xk
IHNwZWMgb2Ygdm9pZC91bmRlZmluZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlw
ZXMuaHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDcnlwdG9DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDcnlwdG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAgIEFkZGVkIGN1
c3RvbSBnZXRSYW5kb21WYWx1ZXMgaW1wbGVtZW50YXRpb24gc28gdGhhdCB0aGUgaW5wdXQgd3Jh
cHBlZAorICAgICAgICBBcnJheUJ1ZmZlclZpZXcgY2FuIGJlIHJldHVybmVkIGRpcmVjdGx5IHRv
IHRoZSBjYWxsZXIuIFRoaXMgaXMgdG8KKyAgICAgICAgcHJlc2VydmUgdGhlIHVuZGVybHlpbmcg
dHlwZSBhbmQgaW5kZXhpbmcgYWNjZXNzb3IgZm9yIHRoZSBUeXBlZEFycmF5CisgICAgICAgIHN1
YmNsYXNzLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENyeXB0b0N1c3RvbS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOENyeXB0bzo6
Z2V0UmFuZG9tVmFsdWVzQ2FsbGJhY2spOgorICAgICAgICBBZGRlZCBjdXN0b20gZ2V0UmFuZG9t
VmFsdWVzIGltcGxlbWVudGF0aW9uIHNvIHRoYXQgdGhlIGlucHV0IHdyYXBwZWQKKyAgICAgICAg
QXJyYXlCdWZmZXJWaWV3IGNhbiBiZSByZXR1cm5lZCBkaXJlY3RseSB0byB0aGUgY2FsbGVyLiBU
aGlzIGlzIHRvCisgICAgICAgIHByZXNlcnZlIHRoZSB1bmRlcmx5aW5nIHR5cGUgYW5kIGluZGV4
aW5nIGFjY2Vzc29yIGZvciB0aGUgVHlwZWRBcnJheQorICAgICAgICBzdWJjbGFzcy4KKyAgICAg
ICAgKiBwYWdlL0NyeXB0by5pZGw6CisKIDIwMTItMTItMTkgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyODk2NDc4PiBDYW5u
b3QgbG9nIGludG8gZ21haWwvZmFjZWJvb2sgd2l0aCBOZXR3b3JrUHJvY2VzcyBhbmQgcHJpdmF0
ZSBicm93c2luZyBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1ZWEz
YWYyOTI3MWI0MTdmMWIyMWI3ZDVkYzYzNjc0OGYzMGU3MWUwLi4xOGYwNDg3NGMwNWYxZjg0NzJk
MzAxZGNhZWYwMzNmNzVmMDVjMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTIyNzQsNiArMjI3NCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0Nvb3JkaW5hdGVzQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDcnlwdG9DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZTZkNDdm
NmNhZjI4MmI4MWRmMGZlZWQ0YWFiYjY0OTI0YzY4NjE4ZS4uYjFiYjhmM2M4YjU4NzkxYjNlY2Q2
NzExOGExYjEzZjEwMzRkNGVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC04Niw2ICs4Niw3IEBAIFNPVVJD
RVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAgXAogICAgICBi
aW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNDb29y
ZGluYXRlc0N1c3RvbS5jcHAgXAorICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAg
XAogICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgXAogICAgICBi
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggNTY0NGFmNWRhZGY4MTYwZDc5Y2JkYTdhYzJh
YTcwMWFjY2FmYmVmOC4uYzBjYWY4N2Y2NmFiMWEyZWFkOTRiYTgyNzcyZTIyYWMyMmRkOGI0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1VzZUpTQy5jbWFrZQpAQCAtNDksNiArNDksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNDb29yZGluYXRlc0N1
c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RpY3Rp
b25hcnkuY3BwCiAgICAgYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDkzYjc1NTQzOTc5ZjY3OThmNzZkOTVjMjNlZTFkYTkxZmY5YmNmNTAuLmMwNzg0OGNl
NjkyNTk0MDJiNjc3NTY2MTE2MThkMGNjYWZhYTBjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEz
MDgsNiArMTMwOCw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJv
YXJkQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29s
ZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvb3JkaW5h
dGVzQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRv
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRXZl
bnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21T
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDVlZmNkMmM4ZTVkNjBl
NDJlN2FmZGI1MWE4Y2FjZDVlZjY0ZDJiOC4uNDEwOWQwMjIwYWE1ZjVlY2I1YzM4OTQ2Y2U1YzVj
ZTZlMTM4ZTQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNjk3LDYgKzY5Nyw3IEBACiAJCTFGM0YxOTUzMTQ5OUNBNzYwMEE1
QUVBNyAvKiBQT0RGcmVlTGlzdEFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxRjNGMTk1MjE0OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RB
cmVuYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTFGQUZCRjE4MTVBNUZBNkUwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRkFGQkYxNzE1QTVGQTUyMDAwODNB
MjAgLyogVVRJVXRpbGl0aWVzLm1tICovOyB9OwogCQkxRkFGQkYxOTE1QTVGQTc0MDAwODNBMjAg
LyogVVRJVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxRkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi87IH07
CisJCTIwOUI0NTZCMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMDlCNDU2QTE2Nzk2QTdF
MDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20uY3BwICovOyB9OwogCQkyMEQ2MjkyNjEyNTM2OTBC
MDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICovOyB9OwogCQkyMEQ2MjkyNzEyNTM2OTBC
MDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi87IH07CiAJCTIyNzc3NzYwMTM0NURFQTkwMDhF
QTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNzg4OCw2ICs3ODg5LDcgQEAKIAkJMUYzRjE5NTIxNDk5Q0E3NjAw
QTVBRUE3IC8qIFBPREZyZWVMaXN0QXJlbmEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUE9ERnJlZUxpc3RBcmVuYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
RkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVUSVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVRJVXRpbGl0aWVzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMDlCNDU2QTE2Nzk2QTdFMDBFNTRFNEUgLyogSlND
cnlwdG9DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlND
cnlwdG9DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMEQ2MjkyNDEy
NTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRDYyOTI1MTI1MzY5MEIwMDA4MTU0MyAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDYxOCw2ICsyMDYyMCw3
IEBACiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTIwOUI0NTZBMTY3OTZBN0UwMEU1NEU0
RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi8sCiAJCQkJQkMyNzVDQjIxMUM1RTg1QzAwQzkyMDZD
IC8qIEpTQXJyYXlCdWZmZXJDdXN0b20uY3BwICovLAogCQkJCTg2MjQzRDAwMTFCQzMxRjcwMEND
MDA2QSAvKiBKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oICovLAogCQkJCUJDMkVENkJCMEM2QkQy
RjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovLApAQCAtMjkwOTYsNiArMjkwOTksNyBA
QAogCQkJCTlBOUNFRjhEMTYzQjNFQTEwMERFN0VGRSAvKiBFeGNsdXNpb25TaGFwZU91dHNpZGVJ
bmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjg4OTBCMTY3RDJGQTEwMDEwQ0RBNSAvKiBT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQjg4OTBFMTY3
RDMwMTYwMDEwQ0RBNSAvKiBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMjA5QjQ1NkIxNjc5NkE3RTAwRTU0RTRFIC8qIEpTQ3J5cHRvQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAKaW5kZXggMzU3MjU0YzY5NDNmOGE2NzQ3NDMxOGVmNzhiM2U2N2MyZThi
NmEzMC4uOGY3MWRhNWFlM2VmMmE0ZDBmMDg4YmM2Y2Q0YWUxM2U4OTYwMWFmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC01
MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNDbGlwYm9hcmRDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTQ29uc29sZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDb29yZGluYXRlc0N1c3RvbS5jcHAi
CisjaW5jbHVkZSAiSlNDcnlwdG9DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQ3VzdG9tU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXIuY3BwIgogI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTk2MWUyMGY1YWMxYjMy
ODQyNzc2ZjRlNjdhZWJkNDU1OTBkOGY4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ3J5cHRvLmgiCisKKyNpbmNsdWRlICJBcnJheUJ1
ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNBcnJh
eUJ1ZmZlclZpZXcuaCIKKworI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKwordXNpbmcgbmFt
ZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlIEpTQ3J5cHRvOjpn
ZXRSYW5kb21WYWx1ZXMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChleGVjLT5hcmd1bWVu
dENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKworICAgIEpTVmFsdWUgYnVmZmVyID0gZXhl
Yy0+YXJndW1lbnQoMCk7CisgICAgQXJyYXlCdWZmZXJWaWV3KiBhcnJheUJ1ZmZlclZpZXcgPSB0
b0FycmF5QnVmZmVyVmlldyhidWZmZXIpOworICAgIGlmICghYXJyYXlCdWZmZXJWaWV3KQorICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKworICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIGltcGwoKS0+Z2V0UmFuZG9tVmFsdWVzKGFycmF5QnVmZmVyVmlldywgZWMp
OworCisgICAgaWYgKFVOTElLRUxZKGVjKSkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICByZXR1
cm4gYnVmZmVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDcnlwdG9DdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRvQ3VzdG9tLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNTVmZmNmMWVjYjdkZGZhYmVlMDM4MTMxYThkYjA5MGNkMzJhM2ZiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRvQ3VzdG9tLmNw
cApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4Q3J5cHRv
LmgiCisKKyNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKKyNpbmNsdWRlICJDcnlwdG8uaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiVjhBcnJheUJ1ZmZlclZpZXcu
aCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJWOFV0aWxpdGllcy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENyeXB0bzo6Z2V0
UmFuZG9tVmFsdWVzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBidWZmZXIgPSBhcmdzWzBdOworICAgIGlmICghVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3Rh
bmNlKGJ1ZmZlcikpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigiRmlyc3QgYXJndW1l
bnQgaXMgbm90IGFuIEFycmF5QnVmZmVyVmlldyIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKworICAg
IEFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3ID0gVjhBcnJheUJ1ZmZlclZpZXc6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYnVmZmVyKSk7CisgICAgQVNTRVJU
KGFycmF5QnVmZmVyVmlldyk7CisKKyAgICBDcnlwdG8qIGNyeXB0byA9IFY4Q3J5cHRvOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBjcnlw
dG8tPmdldFJhbmRvbVZhbHVlcyhhcnJheUJ1ZmZlclZpZXcsIGVjKTsKKworICAgIGlmIChVTkxJ
S0VMWShlYykpCisgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKKworICAgIHJldHVybiBidWZmZXI7ICAgIAorfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0NyeXB0by5pZGwKaW5kZXggNTg5MjgxYWY1MzE5ZThiMTdlNTVlYTZl
M2RhOWFkMzc1NDIxMjE0YS4uNWJlYzM3YWUwM2M4ZjRhOThiNmFlNzNmNTZjY2NjYmI0NDU4YjA4
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmlkbApAQCAtMjksNiArMjksNiBAQAogWwogICAgIE9taXRD
b25zdHJ1Y3RvcgogXSBpbnRlcmZhY2UgQ3J5cHRvIHsKLSAgICB2b2lkIGdldFJhbmRvbVZhbHVl
cyhpbiBBcnJheUJ1ZmZlclZpZXcgYXJyYXkpIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIFtD
dXN0b21dIEFycmF5QnVmZmVyVmlldyBnZXRSYW5kb21WYWx1ZXMoaW4gQXJyYXlCdWZmZXJWaWV3
IGFycmF5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNzA4ZDk0MWFlYjY1
MmQxYzQ2NzI5ODZmNDdhOTY2MDAxOGY2Y2Y0Li4wOWQ1ODJmYjcxYmIwZDNjYWU1ZjI3NGExNWIx
OTlmZWFiM2RkNDQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMTItMTkgIFJ5YW4gU2xl
ZXZpICA8cnNsZWV2aUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgd2luZG93LmNyeXB0by5nZXRS
YW5kb21WYWx1ZXMgc2hvdWxkIHJldHVybiB0aGUgaW5wdXQgQXJyYXlCdWZmZXJWaWV3CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQ4NDUKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNlY3VyaXR5L2Ny
eXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzZWN1cml0
eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBlcy5odG1sOgorICAgICAgICBUZXN0IGFsbCBwb3Nz
aWJsZSBUeXBlZEFycmF5IGludGVnZXIgdHlwZXMgYW5kIGVuc3VyZSB0aGF0IGJvdGggdGhlCisg
ICAgICAgIGNvcnJlY3QgVHlwZWRBcnJheSB0eXBlIGlzIHJldHVybmVkIGFuZCB0aGF0IGl0IGlz
IGVxdWFsIHRvIHRoZSBpbnB1dAorICAgICAgICB0eXBlOyB0aGF0IGlzLCB0aGF0IHRoZSBpbnB1
dCB0eXBlIGlzIG1vZGlmaWVkIGluIHBsYWNlLCByYXRoZXIgdGhlbgorICAgICAgICBjb3BpZWQu
CisKIDIwMTItMTItMTkgIExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJlLXNraXBwaW5nIHRvdWNoLWlucHV0LWVsZW1lbnQtY2hhbmctZG9jdW1lbnRzLmh0
bWwgc2luY2UgaXQncyBzdGlsbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcwppbmRleCAyNmMwYzVlZWVjMzU1ZDNjMjM0NmNjZTFkMjgxODYzMDBmNjlmNTE4
Li45YTBjNWQ3NDg0NDEzYTQ2NWVlYTIxOWE0OWIwNTk0NjQwMzgwZWIwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcworKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcwpAQCAtMTg4LDYgKzE4OCwyMyBA
QCBmdW5jdGlvbiBzaG91bGRCZShfYSwgX2IsIHF1aWV0KQogICAgIHRlc3RGYWlsZWQoX2EgKyAi
IHNob3VsZCBiZSAiICsgX2J2ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9idiArICIpLiBXYXMg
IiArIF9hdiArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYXYgKyAiKS4iKTsKIH0KIAorZnVuY3Rp
b24gc2hvdWxkQmVUeXBlKF9hLCBfdHlwZSkgeworICB2YXIgZXhjZXB0aW9uOworICB2YXIgX2F2
OworICB0cnkgeworICAgIF9hdiA9IGV2YWwoX2EpOworICB9IGNhdGNoIChlKSB7CisgICAgZXhj
ZXB0aW9uID0gZTsKKyAgfQorCisgIHZhciBfdHlwZXYgPSBldmFsKF90eXBlKTsKKyAgaWYgKF9h
diBpbnN0YW5jZW9mIF90eXBldikgeworICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzIGFuIGluc3Rh
bmNlIG9mICIgKyBfdHlwZSk7CisgIH0gZWxzZSB7CisgICAgdGVzdEZhaWxlZChfYSArICIgaXMg
bm90IGFuIGluc3RhbmNlIG9mICIgKyBfdHlwZSk7CisgIH0KK30KKwogLy8gVmFyaWFudCBvZiBz
aG91bGRCZSgpLS1jb25maXJtcyB0aGF0IHJlc3VsdCBvZiBldmFsKF90b19ldmFsKSBpcyB3aXRo
aW4KIC8vIG51bWVyaWMgX3RvbGVyYW5jZSBvZiBudW1lcmljIF90YXJnZXQuCiBmdW5jdGlvbiBz
aG91bGRCZUNsb3NlVG8oX3RvX2V2YWwsIF90YXJnZXQsIF90b2xlcmFuY2UsIHF1aWV0KQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMt
dHlwZXMtZXhwZWN0ZWQudHh0CmluZGV4IDY4M2RlMzJmNjM0ZDg2MWI1MDQ2MDAwYTAxOTI0N2Jl
MTVjYWYzZmIuLjE1NWE3NDllYTJjMDUxNWQ5ODBkZjZlOWNiODMxZTdlYzE5YTRjM2MgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVl
cy10eXBlcy1leHBlY3RlZC50eHQKQEAgLTUsMTMgKzUsNDMgQEAgT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUKIAogUEFTUyAnY3J5cHRvJyBpbiB3aW5kb3cgaXMgdHJ1ZQogUEFTUyAnZ2V0UmFuZG9t
VmFsdWVzJyBpbiB3aW5kb3cuY3J5cHRvIGlzIHRydWUKLVBBU1MgY3J5cHRvLmdldFJhbmRvbVZh
bHVlcyhuZXcgVWludDhBcnJheSgzKSkgaXMgdW5kZWZpbmVkLgotUEFTUyBjcnlwdG8uZ2V0UmFu
ZG9tVmFsdWVzKG5ldyBJbnQ4QXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY3J5cHRvLmdl
dFJhbmRvbVZhbHVlcyhuZXcgVWludDE2QXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY3J5
cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MTZBcnJheSgzKSkgaXMgdW5kZWZpbmVkLgotUEFT
UyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgzKSkgaXMgdW5kZWZpbmVk
LgotUEFTUyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDMpKSBpcyB1bmRl
ZmluZWQuCitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJy
YXkoMykpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyBhbiBpbnN0YW5jZSBvZiBVaW50OEFy
cmF5CitQQVNTIHZpZXcgPSBuZXcgVWludDhBcnJheSgzKSBpcyBkZWZpbmVkLgorUEFTUyByYW5k
b20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRv
bSBpcyB2aWV3CitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDhB
cnJheSgzKSkgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlzIGFuIGluc3RhbmNlIG9mIEludDhB
cnJheQorUEFTUyB2aWV3ID0gbmV3IEludDhBcnJheSgzKSBpcyBkZWZpbmVkLgorUEFTUyByYW5k
b20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRv
bSBpcyB2aWV3CitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4
Q2xhbXBlZEFycmF5KDMpKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgYW4gaW5zdGFuY2Ug
b2YgVWludDhDbGFtcGVkQXJyYXkKK1BBU1MgdmlldyA9IG5ldyBVaW50OENsYW1wZWRBcnJheSgz
KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcp
IGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyB2aWV3CitQQVNTIHJhbmRvbSA9IGNyeXB0by5n
ZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQxNkFycmF5KDMpKSBpcyBkZWZpbmVkLgorUEFTUyByYW5k
b20gaXMgYW4gaW5zdGFuY2Ugb2YgVWludDE2QXJyYXkKK1BBU1MgdmlldyA9IG5ldyBVaW50MTZB
cnJheSgzKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVz
KHZpZXcpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyB2aWV3CitQQVNTIHJhbmRvbSA9IGNy
eXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDE2QXJyYXkoMykpIGlzIGRlZmluZWQuCitQQVNT
IHJhbmRvbSBpcyBhbiBpbnN0YW5jZSBvZiBJbnQxNkFycmF5CitQQVNTIHZpZXcgPSBuZXcgSW50
MTZBcnJheSgzKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFs
dWVzKHZpZXcpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyB2aWV3CitQQVNTIHJhbmRvbSA9
IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KDMpKSBpcyBkZWZpbmVkLgor
UEFTUyByYW5kb20gaXMgYW4gaW5zdGFuY2Ugb2YgVWludDMyQXJyYXkKK1BBU1MgdmlldyA9IG5l
dyBVaW50MzJBcnJheSgzKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFu
ZG9tVmFsdWVzKHZpZXcpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyB2aWV3CitQQVNTIHJh
bmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDMyQXJyYXkoMykpIGlzIGRlZmlu
ZWQuCitQQVNTIHJhbmRvbSBpcyBhbiBpbnN0YW5jZSBvZiBJbnQzMkFycmF5CitQQVNTIHZpZXcg
PSBuZXcgSW50MzJBcnJheSgzKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0
UmFuZG9tVmFsdWVzKHZpZXcpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyB2aWV3CiBQQVNT
IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEZsb2F0MzJBcnJheSgzKSkgdGhyZXcgZXhjZXB0
aW9uIEVycm9yOiBUeXBlTWlzbWF0Y2hFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgY3J5
cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgRmxvYXQ2NEFycmF5KDMpKSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IFR5cGVNaXNtYXRjaEVycm9yOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBlcy5odG1sIGIvTGF5b3V0VGVz
dHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMuaHRtbAppbmRleCAyZmE1YWVj
ZDEzMzQyMTQ5NjY2YmZlMzcxZGNmMWE5NTRkNzk5YTg1Li40YWU2YjNiYmUxMjRhMDc3NmRjMWQ1
NzgyNDM3MWE3YmNkMzljNDlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zZWN1cml0eS9jcnlw
dG8tcmFuZG9tLXZhbHVlcy10eXBlcy5odG1sCisrKyBiL0xheW91dFRlc3RzL3NlY3VyaXR5L2Ny
eXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLmh0bWwKQEAgLTE2LDE0ICsxNiwzMyBAQCBpZiAoIXdp
bmRvdy5BcnJheUJ1ZmZlcikKIHNob3VsZEJlKCInY3J5cHRvJyBpbiB3aW5kb3ciLCAidHJ1ZSIp
Owogc2hvdWxkQmUoIidnZXRSYW5kb21WYWx1ZXMnIGluIHdpbmRvdy5jcnlwdG8iLCAidHJ1ZSIp
OwogCi1zaG91bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhB
cnJheSgzKSkiKTsKLXNob3VsZEJlVW5kZWZpbmVkKCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5l
dyBJbnQ4QXJyYXkoMykpIik7Ci1zaG91bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdldFJhbmRvbVZh
bHVlcyhuZXcgVWludDE2QXJyYXkoMykpIik7Ci1zaG91bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdl
dFJhbmRvbVZhbHVlcyhuZXcgSW50MTZBcnJheSgzKSkiKTsKLXNob3VsZEJlVW5kZWZpbmVkKCJj
cnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgzKSkiKTsKLXNob3VsZEJlVW5k
ZWZpbmVkKCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDMpKSIpOwotCi1z
aG91bGRUaHJvdygiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgRmxvYXQzMkFycmF5KDMpKSIp
OworZnVuY3Rpb24gY2hlY2tJbnRlZ2VyVHlwZXMoKSB7CisgICAgdmFyIGludGVnZXJUeXBlcyA9
IFsKKyAgICAgICAgIlVpbnQ4QXJyYXkiLCAiSW50OEFycmF5IiwgIlVpbnQ4Q2xhbXBlZEFycmF5
IiwKKyAgICAgICAgIlVpbnQxNkFycmF5IiwgIkludDE2QXJyYXkiLAorICAgICAgICAiVWludDMy
QXJyYXkiLCAiSW50MzJBcnJheSIsCisgICAgXTsKKyAgICBpbnRlZ2VyVHlwZXMuZm9yRWFjaChm
dW5jdGlvbihhcnJheVR5cGUpIHsKKyAgICAgICAgc2hvdWxkQmVEZWZpbmVkKCJyYW5kb20gPSBj
cnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyAiK2FycmF5VHlwZSsiKDMpKSIpOworICAgICAgICBz
aG91bGRCZVR5cGUoInJhbmRvbSIsIGFycmF5VHlwZSk7CisKKyAgICAgICAgc2hvdWxkQmVEZWZp
bmVkKCJ2aWV3ID0gbmV3ICIrYXJyYXlUeXBlKyIoMykiKTsKKyAgICAgICAgc2hvdWxkQmVEZWZp
bmVkKCJyYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcpIik7CisgICAgICAgIHNo
b3VsZEJlKCJyYW5kb20iLCAidmlldyIpOworICAgIH0pOworfQorCitmdW5jdGlvbiBjaGVja05v
bkludGVnZXJUeXBlcygpIHsKKyAgICB2YXIgZmxvYXRUeXBlcyA9IFsKKyAgICAgICAgIkZsb2F0
MzJBcnJheSIsICJGbG9hdDY0QXJyYXkiCisgICAgXTsKKyAgICBmbG9hdFR5cGVzLmZvckVhY2go
ZnVuY3Rpb24oYXJyYXlUeXBlKSB7CisgICAgICAgIHNob3VsZFRocm93KCJjcnlwdG8uZ2V0UmFu
ZG9tVmFsdWVzKG5ldyAiK2FycmF5VHlwZSsiKDMpKSIpOworICAgIH0pOworfSAgCisKK2NoZWNr
SW50ZWdlclR5cGVzKCk7CitjaGVja05vbkludGVnZXJUeXBlcygpOwogCiA8L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180264</attachid>
            <date>2012-12-19 19:55:48 -0800</date>
            <delta_ts>2012-12-19 20:31:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104845-20121219195304.patch</filename>
            <type>text/plain</type>
            <size>21620</size>
            <attacher name="Ryan Sleevi">rsleevi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk1ZDM2OTRiZDNhMTk2
NDc1ZWI1NTdhZDRlOTM5ZWY2MWNkM2E3Mi4uMmFhZjBmOTNkNzQ1M2U0ODUwMzE5ZGM3YTI0NzI1
Yzk0YjgyZGRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEyLTE5ICBSeWFu
IFNsZWV2aSAgPHJzbGVldmlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHdpbmRvdy5jcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzIHNob3VsZCByZXR1cm4gdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODQ1CisK
KyAgICAgICAgVGhlIFczQyBXZWIgQ3J5cHRvIEFQSSBGUFdELCBhcyB3ZWxsIGFzIHRoZSBXSEFU
V0cgRmVicnVhcnkgMjAxMiBkcmFmdCwKKyAgICAgICAgZGVmaW5lIGNyeXB0by5nZXRSYW5kb21W
YWx1ZXMoKSBhcyByZXR1cm5pbmcgdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldywKKyAgICAgICAg
dG8gYWxsb3cgZnVuY3Rpb24gY2FsbCBjaGFpbmluZy4gVXBkYXRlIHRoZSBpbXBsZW1lbnRhdGlv
biB0byBtYXRjaAorICAgICAgICB0aGUgY3VycmVudCBzcGVjLCByYXRoZXIgdGhhbiB0aGUgb2xk
IHNwZWMgb2Ygdm9pZC91bmRlZmluZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlw
ZXMuaHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDcnlwdG9DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDcnlwdG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAgIEFkZGVkIGN1
c3RvbSBnZXRSYW5kb21WYWx1ZXMgaW1wbGVtZW50YXRpb24gc28gdGhhdCB0aGUgaW5wdXQgd3Jh
cHBlZAorICAgICAgICBBcnJheUJ1ZmZlclZpZXcgY2FuIGJlIHJldHVybmVkIGRpcmVjdGx5IHRv
IHRoZSBjYWxsZXIuIFRoaXMgaXMgdG8KKyAgICAgICAgcHJlc2VydmUgdGhlIHVuZGVybHlpbmcg
dHlwZSBhbmQgaW5kZXhpbmcgYWNjZXNzb3IgZm9yIHRoZSBUeXBlZEFycmF5CisgICAgICAgIHN1
YmNsYXNzLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENyeXB0b0N1c3RvbS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOENyeXB0bzo6
Z2V0UmFuZG9tVmFsdWVzQ2FsbGJhY2spOgorICAgICAgICBBZGRlZCBjdXN0b20gZ2V0UmFuZG9t
VmFsdWVzIGltcGxlbWVudGF0aW9uIHNvIHRoYXQgdGhlIGlucHV0IHdyYXBwZWQKKyAgICAgICAg
QXJyYXlCdWZmZXJWaWV3IGNhbiBiZSByZXR1cm5lZCBkaXJlY3RseSB0byB0aGUgY2FsbGVyLiBU
aGlzIGlzIHRvCisgICAgICAgIHByZXNlcnZlIHRoZSB1bmRlcmx5aW5nIHR5cGUgYW5kIGluZGV4
aW5nIGFjY2Vzc29yIGZvciB0aGUgVHlwZWRBcnJheQorICAgICAgICBzdWJjbGFzcy4KKyAgICAg
ICAgKiBwYWdlL0NyeXB0by5pZGw6CisKIDIwMTItMTItMTkgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyODk2NDc4PiBDYW5u
b3QgbG9nIGludG8gZ21haWwvZmFjZWJvb2sgd2l0aCBOZXR3b3JrUHJvY2VzcyBhbmQgcHJpdmF0
ZSBicm93c2luZyBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1ZWEz
YWYyOTI3MWI0MTdmMWIyMWI3ZDVkYzYzNjc0OGYzMGU3MWUwLi4xOGYwNDg3NGMwNWYxZjg0NzJk
MzAxZGNhZWYwMzNmNzVmMDVjMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTIyNzQsNiArMjI3NCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0Nvb3JkaW5hdGVzQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDcnlwdG9DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZTZkNDdm
NmNhZjI4MmI4MWRmMGZlZWQ0YWFiYjY0OTI0YzY4NjE4ZS4uYjFiYjhmM2M4YjU4NzkxYjNlY2Q2
NzExOGExYjEzZjEwMzRkNGVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC04Niw2ICs4Niw3IEBAIFNPVVJD
RVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAgXAogICAgICBi
aW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNDb29y
ZGluYXRlc0N1c3RvbS5jcHAgXAorICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAg
XAogICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgXAogICAgICBi
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggNTY0NGFmNWRhZGY4MTYwZDc5Y2JkYTdhYzJh
YTcwMWFjY2FmYmVmOC4uYzBjYWY4N2Y2NmFiMWEyZWFkOTRiYTgyNzcyZTIyYWMyMmRkOGI0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1VzZUpTQy5jbWFrZQpAQCAtNDksNiArNDksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNDb29yZGluYXRlc0N1
c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RpY3Rp
b25hcnkuY3BwCiAgICAgYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDkzYjc1NTQzOTc5ZjY3OThmNzZkOTVjMjNlZTFkYTkxZmY5YmNmNTAuLmMwNzg0OGNl
NjkyNTk0MDJiNjc3NTY2MTE2MThkMGNjYWZhYTBjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEz
MDgsNiArMTMwOCw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJv
YXJkQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29s
ZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvb3JkaW5h
dGVzQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRv
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRXZl
bnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21T
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDVlZmNkMmM4ZTVkNjBl
NDJlN2FmZGI1MWE4Y2FjZDVlZjY0ZDJiOC4uNDEwOWQwMjIwYWE1ZjVlY2I1YzM4OTQ2Y2U1YzVj
ZTZlMTM4ZTQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNjk3LDYgKzY5Nyw3IEBACiAJCTFGM0YxOTUzMTQ5OUNBNzYwMEE1
QUVBNyAvKiBQT0RGcmVlTGlzdEFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxRjNGMTk1MjE0OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RB
cmVuYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTFGQUZCRjE4MTVBNUZBNkUwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRkFGQkYxNzE1QTVGQTUyMDAwODNB
MjAgLyogVVRJVXRpbGl0aWVzLm1tICovOyB9OwogCQkxRkFGQkYxOTE1QTVGQTc0MDAwODNBMjAg
LyogVVRJVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxRkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi87IH07
CisJCTIwOUI0NTZCMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMDlCNDU2QTE2Nzk2QTdF
MDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20uY3BwICovOyB9OwogCQkyMEQ2MjkyNjEyNTM2OTBC
MDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICovOyB9OwogCQkyMEQ2MjkyNzEyNTM2OTBC
MDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi87IH07CiAJCTIyNzc3NzYwMTM0NURFQTkwMDhF
QTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNzg4OCw2ICs3ODg5LDcgQEAKIAkJMUYzRjE5NTIxNDk5Q0E3NjAw
QTVBRUE3IC8qIFBPREZyZWVMaXN0QXJlbmEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUE9ERnJlZUxpc3RBcmVuYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
RkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVUSVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVRJVXRpbGl0aWVzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMDlCNDU2QTE2Nzk2QTdFMDBFNTRFNEUgLyogSlND
cnlwdG9DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlND
cnlwdG9DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMEQ2MjkyNDEy
NTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRDYyOTI1MTI1MzY5MEIwMDA4MTU0MyAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDYxOCw2ICsyMDYyMCw3
IEBACiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTIwOUI0NTZBMTY3OTZBN0UwMEU1NEU0
RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi8sCiAJCQkJQkMyNzVDQjIxMUM1RTg1QzAwQzkyMDZD
IC8qIEpTQXJyYXlCdWZmZXJDdXN0b20uY3BwICovLAogCQkJCTg2MjQzRDAwMTFCQzMxRjcwMEND
MDA2QSAvKiBKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oICovLAogCQkJCUJDMkVENkJCMEM2QkQy
RjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovLApAQCAtMjkwOTYsNiArMjkwOTksNyBA
QAogCQkJCTlBOUNFRjhEMTYzQjNFQTEwMERFN0VGRSAvKiBFeGNsdXNpb25TaGFwZU91dHNpZGVJ
bmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjg4OTBCMTY3RDJGQTEwMDEwQ0RBNSAvKiBT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQjg4OTBFMTY3
RDMwMTYwMDEwQ0RBNSAvKiBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMjA5QjQ1NkIxNjc5NkE3RTAwRTU0RTRFIC8qIEpTQ3J5cHRvQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAKaW5kZXggMzU3MjU0YzY5NDNmOGE2NzQ3NDMxOGVmNzhiM2U2N2MyZThi
NmEzMC4uOGY3MWRhNWFlM2VmMmE0ZDBmMDg4YmM2Y2Q0YWUxM2U4OTYwMWFmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC01
MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNDbGlwYm9hcmRDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTQ29uc29sZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDb29yZGluYXRlc0N1c3RvbS5jcHAi
CisjaW5jbHVkZSAiSlNDcnlwdG9DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQ3VzdG9tU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXIuY3BwIgogI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2IwNjIzYzQ1NmUyMWQ0
ODk2MTZkOWE3MDcwZDQ4OGM5NjVjMWQxZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcApAQCAtMCwwICsxLDU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDcnlwdG8uaCIKKwor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5o
IgorCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZl
clZpZXcuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitKU1ZhbHVlIEpTQ3J5cHRvOjpnZXRSYW5kb21WYWx1ZXMoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKworICAg
IEpTVmFsdWUgYnVmZmVyID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgQXJyYXlCdWZmZXJWaWV3
KiBhcnJheUJ1ZmZlclZpZXcgPSB0b0FycmF5QnVmZmVyVmlldyhidWZmZXIpOworICAgIGlmICgh
YXJyYXlCdWZmZXJWaWV3KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsK
KworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGltcGwoKS0+Z2V0UmFuZG9tVmFsdWVz
KGFycmF5QnVmZmVyVmlldywgZWMpOworCisgICAgaWYgKFVOTElLRUxZKGVjKSkgeworICAgICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICB9CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDcnlw
dG9DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRv
Q3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kYWJlYzMyMDFkNzk2NWFjNmM5ZWEwZWE2OTI3YjA5Y2Ex
MTA1NDQyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q3J5cHRvQ3VzdG9tLmNwcApAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICog
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVjhDcnlwdG8uaCIKKworI2luY2x1ZGUgIkNy
eXB0by5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJWOEFycmF5QnVm
ZmVyVmlldy5oIgorI2luY2x1ZGUgIlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4VXRpbGl0aWVz
LmgiCisKKyNpbmNsdWRlIDx3dGYvQXJyYXlCdWZmZXJWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3J5cHRvOjpnZXRSYW5kb21WYWx1ZXND
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMSkKKyAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJn
cy5HZXRJc29sYXRlKCkpOworCisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGJ1ZmZlciA9IGFy
Z3NbMF07CisgICAgaWYgKCFWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UoYnVmZmVyKSkK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCJGaXJzdCBhcmd1bWVudCBpcyBub3QgYW4g
QXJyYXlCdWZmZXJWaWV3IiwgYXJncy5HZXRJc29sYXRlKCkpOworCisgICAgQXJyYXlCdWZmZXJW
aWV3KiBhcnJheUJ1ZmZlclZpZXcgPSBWOEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChidWZmZXIpKTsKKyAgICBBU1NFUlQoYXJyYXlCdWZmZXJW
aWV3KTsKKworICAgIENyeXB0byogY3J5cHRvID0gVjhDcnlwdG86OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGNyeXB0by0+Z2V0UmFuZG9t
VmFsdWVzKGFycmF5QnVmZmVyVmlldywgZWMpOworCisgICAgaWYgKFVOTElLRUxZKGVjKSkKKyAg
ICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOworCisg
ICAgcmV0dXJuIGJ1ZmZlcjsgICAgCit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ3J5cHRvLmlkbAppbmRleCA1ODkyODFhZjUzMTllOGIxN2U1NWVhNmUzZGE5YWQzNzU0MjEy
MTRhLi41YmVjMzdhZTAzYzhmNGE5OGI2YWU3M2Y1NmNjY2NiYjQ0NThiMDhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9DcnlwdG8uaWRsCkBAIC0yOSw2ICsyOSw2IEBACiBbCiAgICAgT21pdENvbnN0cnVjdG9yCiBd
IGludGVyZmFjZSBDcnlwdG8gewotICAgIHZvaWQgZ2V0UmFuZG9tVmFsdWVzKGluIEFycmF5QnVm
ZmVyVmlldyBhcnJheSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgW0N1c3RvbV0gQXJyYXlC
dWZmZXJWaWV3IGdldFJhbmRvbVZhbHVlcyhpbiBBcnJheUJ1ZmZlclZpZXcgYXJyYXkpIHJhaXNl
cyhET01FeGNlcHRpb24pOwogfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDE3MDhkOTQxYWViNjUyZDFjNDY3Mjk4NmY0
N2E5NjYwMDE4ZjZjZjQuLjY3OGMwZDE1YjIxMjRiMzQ4MmI1YzU0MDU5NjA2ZWE3MGE1YWRiMWIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0xMi0xOSAgUnlhbiBTbGVldmkgIDxyc2xlZXZp
QGNocm9taXVtLm9yZz4KKworICAgICAgICB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyBz
aG91bGQgcmV0dXJuIHRoZSBpbnB1dCBBcnJheUJ1ZmZlclZpZXcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNDg0NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanM6CisgICAgICAgIChzaG91bGRCZVR5cGUpOgorICAgICAgICBBZGRlZCBoZWxwZXIg
dG8gYXNzZXJ0IHRoYXQgYW4gZXhwcmVzc2lvbiByZXR1cm5zIGFuIG9iamVjdCBvZiB0aGUKKyAg
ICAgICAgY29ycmVjdCB0eXBlLgorICAgICAgICAqIHNlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFs
dWVzLXR5cGVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzZWN1cml0eS9jcnlwdG8tcmFuZG9t
LXZhbHVlcy10eXBlcy5odG1sOgorICAgICAgICBUZXN0IGFsbCBwb3NzaWJsZSBUeXBlZEFycmF5
IGludGVnZXIgdHlwZXMgYW5kIGVuc3VyZSB0aGF0IGJvdGggdGhlCisgICAgICAgIGNvcnJlY3Qg
VHlwZWRBcnJheSB0eXBlIGlzIHJldHVybmVkIGFuZCB0aGF0IGl0IGlzIGVxdWFsIHRvIHRoZSBp
bnB1dAorICAgICAgICB0eXBlOyB0aGF0IGlzLCB0aGF0IHRoZSBpbnB1dCB0eXBlIGlzIG1vZGlm
aWVkIGluIHBsYWNlLCByYXRoZXIgdGhlbgorICAgICAgICBjb3BpZWQuCisKIDIwMTItMTItMTkg
IExldmkgV2VpbnRyYXViICA8bGV2aXdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlLXNraXBw
aW5nIHRvdWNoLWlucHV0LWVsZW1lbnQtY2hhbmctZG9jdW1lbnRzLmh0bWwgc2luY2UgaXQncyBz
dGlsbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcwppbmRl
eCAyNmMwYzVlZWVjMzU1ZDNjMjM0NmNjZTFkMjgxODYzMDBmNjlmNTE4Li45YTBjNWQ3NDg0NDEz
YTQ2NWVlYTIxOWE0OWIwNTk0NjQwMzgwZWIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcwpAQCAtMTg4LDYgKzE4OCwyMyBAQCBmdW5jdGlvbiBzaG91
bGRCZShfYSwgX2IsIHF1aWV0KQogICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCBiZSAiICsg
X2J2ICsgIiAob2YgdHlwZSAiICsgdHlwZW9mIF9idiArICIpLiBXYXMgIiArIF9hdiArICIgKG9m
IHR5cGUgIiArIHR5cGVvZiBfYXYgKyAiKS4iKTsKIH0KIAorZnVuY3Rpb24gc2hvdWxkQmVUeXBl
KF9hLCBfdHlwZSkgeworICB2YXIgZXhjZXB0aW9uOworICB2YXIgX2F2OworICB0cnkgeworICAg
IF9hdiA9IGV2YWwoX2EpOworICB9IGNhdGNoIChlKSB7CisgICAgZXhjZXB0aW9uID0gZTsKKyAg
fQorCisgIHZhciBfdHlwZXYgPSBldmFsKF90eXBlKTsKKyAgaWYgKF9hdiBpbnN0YW5jZW9mIF90
eXBldikgeworICAgIHRlc3RQYXNzZWQoX2EgKyAiIGlzIGFuIGluc3RhbmNlIG9mICIgKyBfdHlw
ZSk7CisgIH0gZWxzZSB7CisgICAgdGVzdEZhaWxlZChfYSArICIgaXMgbm90IGFuIGluc3RhbmNl
IG9mICIgKyBfdHlwZSk7CisgIH0KK30KKwogLy8gVmFyaWFudCBvZiBzaG91bGRCZSgpLS1jb25m
aXJtcyB0aGF0IHJlc3VsdCBvZiBldmFsKF90b19ldmFsKSBpcyB3aXRoaW4KIC8vIG51bWVyaWMg
X3RvbGVyYW5jZSBvZiBudW1lcmljIF90YXJnZXQuCiBmdW5jdGlvbiBzaG91bGRCZUNsb3NlVG8o
X3RvX2V2YWwsIF90YXJnZXQsIF90b2xlcmFuY2UsIHF1aWV0KQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMtZXhwZWN0ZWQu
dHh0CmluZGV4IDY4M2RlMzJmNjM0ZDg2MWI1MDQ2MDAwYTAxOTI0N2JlMTVjYWYzZmIuLjQyMTNm
ZDQ1YTUxMDBhNzQyYjExNjJjMjI1NzRkZDNmNGM3MjVhYjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBlcy1leHBlY3Rl
ZC50eHQKQEAgLTUsMTMgKzUsNDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogUEFTUyAn
Y3J5cHRvJyBpbiB3aW5kb3cgaXMgdHJ1ZQogUEFTUyAnZ2V0UmFuZG9tVmFsdWVzJyBpbiB3aW5k
b3cuY3J5cHRvIGlzIHRydWUKLVBBU1MgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhB
cnJheSgzKSkgaXMgdW5kZWZpbmVkLgotUEFTUyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJ
bnQ4QXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhu
ZXcgVWludDE2QXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY3J5cHRvLmdldFJhbmRvbVZh
bHVlcyhuZXcgSW50MTZBcnJheSgzKSkgaXMgdW5kZWZpbmVkLgotUEFTUyBjcnlwdG8uZ2V0UmFu
ZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgzKSkgaXMgdW5kZWZpbmVkLgotUEFTUyBjcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDMpKSBpcyB1bmRlZmluZWQuCitQQVNTIHJh
bmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMykpIGlzIGRlZmlu
ZWQuCitQQVNTIHJhbmRvbSBpcyBhbiBpbnN0YW5jZSBvZiBVaW50OEFycmF5CitQQVNTIHZpZXcg
PSBuZXcgVWludDhBcnJheSgzKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0
UmFuZG9tVmFsdWVzKHZpZXcpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyB2aWV3CitQQVNT
IHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDhBcnJheSgzKSkgaXMgZGVm
aW5lZC4KK1BBU1MgcmFuZG9tIGlzIGFuIGluc3RhbmNlIG9mIEludDhBcnJheQorUEFTUyB2aWV3
ID0gbmV3IEludDhBcnJheSgzKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0
UmFuZG9tVmFsdWVzKHZpZXcpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyB2aWV3CitQQVNT
IHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMp
KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgYW4gaW5zdGFuY2Ugb2YgVWludDhDbGFtcGVk
QXJyYXkKK1BBU1MgdmlldyA9IG5ldyBVaW50OENsYW1wZWRBcnJheSgzKSBpcyBkZWZpbmVkLgor
UEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcpIGlzIGRlZmluZWQuCitQ
QVNTIHJhbmRvbSBpcyB2aWV3CitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMo
bmV3IFVpbnQxNkFycmF5KDMpKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgYW4gaW5zdGFu
Y2Ugb2YgVWludDE2QXJyYXkKK1BBU1MgdmlldyA9IG5ldyBVaW50MTZBcnJheSgzKSBpcyBkZWZp
bmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcpIGlzIGRlZmlu
ZWQuCitQQVNTIHJhbmRvbSBpcyB2aWV3CitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21W
YWx1ZXMobmV3IEludDE2QXJyYXkoMykpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyBhbiBp
bnN0YW5jZSBvZiBJbnQxNkFycmF5CitQQVNTIHZpZXcgPSBuZXcgSW50MTZBcnJheSgzKSBpcyBk
ZWZpbmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcpIGlzIGRl
ZmluZWQuCitQQVNTIHJhbmRvbSBpcyB2aWV3CitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5k
b21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KDMpKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMg
YW4gaW5zdGFuY2Ugb2YgVWludDMyQXJyYXkKK1BBU1MgdmlldyA9IG5ldyBVaW50MzJBcnJheSgz
KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcp
IGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyB2aWV3CitQQVNTIHJhbmRvbSA9IGNyeXB0by5n
ZXRSYW5kb21WYWx1ZXMobmV3IEludDMyQXJyYXkoMykpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRv
bSBpcyBhbiBpbnN0YW5jZSBvZiBJbnQzMkFycmF5CitQQVNTIHZpZXcgPSBuZXcgSW50MzJBcnJh
eSgzKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZp
ZXcpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyB2aWV3CiBQQVNTIGNyeXB0by5nZXRSYW5k
b21WYWx1ZXMobmV3IEZsb2F0MzJBcnJheSgzKSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUeXBl
TWlzbWF0Y2hFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgY3J5cHRvLmdldFJhbmRvbVZh
bHVlcyhuZXcgRmxvYXQ2NEFycmF5KDMpKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFR5cGVNaXNt
YXRjaEVycm9yOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBidWZmZXIgPSBuZXcgVWludDhBcnJh
eSgzMikgaXMgZGVmaW5lZC4KK1BBU1MgYnVmZmVyLmJ1ZmZlciBpcyBkZWZpbmVkLgorUEFTUyB2
aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIpIGlzIGRlZmluZWQuCitQQVNTIGNyeXB0
by5nZXRSYW5kb21WYWx1ZXModmlldykgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBUeXBlTWlzbWF0
Y2hFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNy4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5
cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMuaHRtbCBiL0xheW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0
by1yYW5kb20tdmFsdWVzLXR5cGVzLmh0bWwKaW5kZXggMmZhNWFlY2QxMzM0MjE0OTY2NmJmZTM3
MWRjZjFhOTU0ZDc5OWE4NS4uMzc3YzU5MzNmZTExMmIwYzUxODRmODdlMjE2ZTcyN2E1MmI3NmZl
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMt
dHlwZXMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVl
cy10eXBlcy5odG1sCkBAIC0xNiwxNCArMTYsMzggQEAgaWYgKCF3aW5kb3cuQXJyYXlCdWZmZXIp
CiBzaG91bGRCZSgiJ2NyeXB0bycgaW4gd2luZG93IiwgInRydWUiKTsKIHNob3VsZEJlKCInZ2V0
UmFuZG9tVmFsdWVzJyBpbiB3aW5kb3cuY3J5cHRvIiwgInRydWUiKTsKIAotc2hvdWxkQmVVbmRl
ZmluZWQoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMykpIik7Ci1zaG91
bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50OEFycmF5KDMpKSIp
Owotc2hvdWxkQmVVbmRlZmluZWQoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQxNkFy
cmF5KDMpKSIpOwotc2hvdWxkQmVVbmRlZmluZWQoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3
IEludDE2QXJyYXkoMykpIik7Ci1zaG91bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdldFJhbmRvbVZh
bHVlcyhuZXcgVWludDMyQXJyYXkoMykpIik7Ci1zaG91bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdl
dFJhbmRvbVZhbHVlcyhuZXcgSW50MzJBcnJheSgzKSkiKTsKLQotc2hvdWxkVGhyb3coImNyeXB0
by5nZXRSYW5kb21WYWx1ZXMobmV3IEZsb2F0MzJBcnJheSgzKSkiKTsKK2Z1bmN0aW9uIGNoZWNr
SW50ZWdlclR5cGVzKCkgeworICAgIHZhciBpbnRlZ2VyVHlwZXMgPSBbCisgICAgICAgICJVaW50
OEFycmF5IiwgIkludDhBcnJheSIsICJVaW50OENsYW1wZWRBcnJheSIsCisgICAgICAgICJVaW50
MTZBcnJheSIsICJJbnQxNkFycmF5IiwKKyAgICAgICAgIlVpbnQzMkFycmF5IiwgIkludDMyQXJy
YXkiLAorICAgIF07CisgICAgaW50ZWdlclR5cGVzLmZvckVhY2goZnVuY3Rpb24oYXJyYXlUeXBl
KSB7CisgICAgICAgIHNob3VsZEJlRGVmaW5lZCgicmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZh
bHVlcyhuZXcgIithcnJheVR5cGUrIigzKSkiKTsKKyAgICAgICAgc2hvdWxkQmVUeXBlKCJyYW5k
b20iLCBhcnJheVR5cGUpOworCisgICAgICAgIHNob3VsZEJlRGVmaW5lZCgidmlldyA9IG5ldyAi
K2FycmF5VHlwZSsiKDMpIik7CisgICAgICAgIHNob3VsZEJlRGVmaW5lZCgicmFuZG9tID0gY3J5
cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSIpOworICAgICAgICBzaG91bGRCZSgicmFuZG9tIiwg
InZpZXciKTsKKyAgICB9KTsKK30KKworZnVuY3Rpb24gY2hlY2tOb25JbnRlZ2VyVHlwZXMoKSB7
CisgICAgdmFyIGZsb2F0VHlwZXMgPSBbCisgICAgICAgICJGbG9hdDMyQXJyYXkiLCAiRmxvYXQ2
NEFycmF5IiwKKyAgICBdOworICAgIGZsb2F0VHlwZXMuZm9yRWFjaChmdW5jdGlvbihhcnJheVR5
cGUpIHsKKyAgICAgICAgc2hvdWxkVGhyb3coImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3ICIr
YXJyYXlUeXBlKyIoMykpIik7CisgICAgfSk7CisKKyAgICBzaG91bGRCZURlZmluZWQoImJ1ZmZl
ciA9IG5ldyBVaW50OEFycmF5KDMyKSIpOworICAgIHNob3VsZEJlRGVmaW5lZCgiYnVmZmVyLmJ1
ZmZlciIpOworICAgIHNob3VsZEJlRGVmaW5lZCgidmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIu
YnVmZmVyKSIpOworICAgIHNob3VsZFRocm93KCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcp
Iik7Cit9CisKK2NoZWNrSW50ZWdlclR5cGVzKCk7CitjaGVja05vbkludGVnZXJUeXBlcygpOwog
CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180267</attachid>
            <date>2012-12-19 20:31:28 -0800</date>
            <delta_ts>2012-12-20 11:55:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104845-20121219202845.patch</filename>
            <type>text/plain</type>
            <size>21616</size>
            <attacher name="Ryan Sleevi">rsleevi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTk1ZDM2OTRiZDNhMTk2
NDc1ZWI1NTdhZDRlOTM5ZWY2MWNkM2E3Mi4uMmFhZjBmOTNkNzQ1M2U0ODUwMzE5ZGM3YTI0NzI1
Yzk0YjgyZGRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEyLTE5ICBSeWFu
IFNsZWV2aSAgPHJzbGVldmlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHdpbmRvdy5jcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzIHNob3VsZCByZXR1cm4gdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODQ1CisK
KyAgICAgICAgVGhlIFczQyBXZWIgQ3J5cHRvIEFQSSBGUFdELCBhcyB3ZWxsIGFzIHRoZSBXSEFU
V0cgRmVicnVhcnkgMjAxMiBkcmFmdCwKKyAgICAgICAgZGVmaW5lIGNyeXB0by5nZXRSYW5kb21W
YWx1ZXMoKSBhcyByZXR1cm5pbmcgdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldywKKyAgICAgICAg
dG8gYWxsb3cgZnVuY3Rpb24gY2FsbCBjaGFpbmluZy4gVXBkYXRlIHRoZSBpbXBsZW1lbnRhdGlv
biB0byBtYXRjaAorICAgICAgICB0aGUgY3VycmVudCBzcGVjLCByYXRoZXIgdGhhbiB0aGUgb2xk
IHNwZWMgb2Ygdm9pZC91bmRlZmluZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlw
ZXMuaHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDcnlwdG9DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDcnlwdG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAgIEFkZGVkIGN1
c3RvbSBnZXRSYW5kb21WYWx1ZXMgaW1wbGVtZW50YXRpb24gc28gdGhhdCB0aGUgaW5wdXQgd3Jh
cHBlZAorICAgICAgICBBcnJheUJ1ZmZlclZpZXcgY2FuIGJlIHJldHVybmVkIGRpcmVjdGx5IHRv
IHRoZSBjYWxsZXIuIFRoaXMgaXMgdG8KKyAgICAgICAgcHJlc2VydmUgdGhlIHVuZGVybHlpbmcg
dHlwZSBhbmQgaW5kZXhpbmcgYWNjZXNzb3IgZm9yIHRoZSBUeXBlZEFycmF5CisgICAgICAgIHN1
YmNsYXNzLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENyeXB0b0N1c3RvbS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOENyeXB0bzo6
Z2V0UmFuZG9tVmFsdWVzQ2FsbGJhY2spOgorICAgICAgICBBZGRlZCBjdXN0b20gZ2V0UmFuZG9t
VmFsdWVzIGltcGxlbWVudGF0aW9uIHNvIHRoYXQgdGhlIGlucHV0IHdyYXBwZWQKKyAgICAgICAg
QXJyYXlCdWZmZXJWaWV3IGNhbiBiZSByZXR1cm5lZCBkaXJlY3RseSB0byB0aGUgY2FsbGVyLiBU
aGlzIGlzIHRvCisgICAgICAgIHByZXNlcnZlIHRoZSB1bmRlcmx5aW5nIHR5cGUgYW5kIGluZGV4
aW5nIGFjY2Vzc29yIGZvciB0aGUgVHlwZWRBcnJheQorICAgICAgICBzdWJjbGFzcy4KKyAgICAg
ICAgKiBwYWdlL0NyeXB0by5pZGw6CisKIDIwMTItMTItMTkgIEFsZXhleSBQcm9za3VyeWFrb3Yg
IDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEyODk2NDc4PiBDYW5u
b3QgbG9nIGludG8gZ21haWwvZmFjZWJvb2sgd2l0aCBOZXR3b3JrUHJvY2VzcyBhbmQgcHJpdmF0
ZSBicm93c2luZyBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA1ZWEz
YWYyOTI3MWI0MTdmMWIyMWI3ZDVkYzYzNjc0OGYzMGU3MWUwLi4xOGYwNDg3NGMwNWYxZjg0NzJk
MzAxZGNhZWYwMzNmNzVmMDVjMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTIyNzQsNiArMjI3NCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0Nvb3JkaW5hdGVzQ3VzdG9tLmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDcnlwdG9DdXN0b20uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZTZkNDdm
NmNhZjI4MmI4MWRmMGZlZWQ0YWFiYjY0OTI0YzY4NjE4ZS4uYjFiYjhmM2M4YjU4NzkxYjNlY2Q2
NzExOGExYjEzZjEwMzRkNGVkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC04Niw2ICs4Niw3IEBAIFNPVVJD
RVMgKz0gXAogICAgICBiaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAgXAogICAgICBi
aW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNDb29y
ZGluYXRlc0N1c3RvbS5jcHAgXAorICAgICBiaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAg
XAogICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgXAogICAgICBi
aW5kaW5ncy9qcy9KU0RpY3Rpb25hcnkuY3BwIFwKICAgICAgYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggNTY0NGFmNWRhZGY4MTYwZDc5Y2JkYTdhYzJh
YTcwMWFjY2FmYmVmOC4uYzBjYWY4N2Y2NmFiMWEyZWFkOTRiYTgyNzcyZTIyYWMyMmRkOGI0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1VzZUpTQy5jbWFrZQpAQCAtNDksNiArNDksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNDb29yZGluYXRlc0N1
c3RvbS5jcHAKKyAgICBiaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKICAgICBiaW5kaW5n
cy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RpY3Rp
b25hcnkuY3BwCiAgICAgYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CmluZGV4IDkzYjc1NTQzOTc5ZjY3OThmNzZkOTVjMjNlZTFkYTkxZmY5YmNmNTAuLmMwNzg0OGNl
NjkyNTk0MDJiNjc3NTY2MTE2MThkMGNjYWZhYTBjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEz
MDgsNiArMTMwOCw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJv
YXJkQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29s
ZUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvb3JkaW5h
dGVzQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRv
Q3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tRXZl
bnRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21T
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDVlZmNkMmM4ZTVkNjBl
NDJlN2FmZGI1MWE4Y2FjZDVlZjY0ZDJiOC4uNDEwOWQwMjIwYWE1ZjVlY2I1YzM4OTQ2Y2U1YzVj
ZTZlMTM4ZTQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtNjk3LDYgKzY5Nyw3IEBACiAJCTFGM0YxOTUzMTQ5OUNBNzYwMEE1
QUVBNyAvKiBQT0RGcmVlTGlzdEFyZW5hLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxRjNGMTk1MjE0OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RB
cmVuYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTFGQUZCRjE4MTVBNUZBNkUwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRkFGQkYxNzE1QTVGQTUyMDAwODNB
MjAgLyogVVRJVXRpbGl0aWVzLm1tICovOyB9OwogCQkxRkFGQkYxOTE1QTVGQTc0MDAwODNBMjAg
LyogVVRJVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxRkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi87IH07
CisJCTIwOUI0NTZCMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMDlCNDU2QTE2Nzk2QTdF
MDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20uY3BwICovOyB9OwogCQkyMEQ2MjkyNjEyNTM2OTBC
MDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICovOyB9OwogCQkyMEQ2MjkyNzEyNTM2OTBC
MDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMEQ2MjkyNTEyNTM2OTBCMDAwODE1NDMgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi87IH07CiAJCTIyNzc3NzYwMTM0NURFQTkwMDhF
QTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNw
ZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNzg4OCw2ICs3ODg5LDcgQEAKIAkJMUYzRjE5NTIxNDk5Q0E3NjAw
QTVBRUE3IC8qIFBPREZyZWVMaXN0QXJlbmEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUE9ERnJlZUxpc3RBcmVuYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkx
RkFGQkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFVUSVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVRJVXRpbGl0aWVzLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyMDlCNDU2QTE2Nzk2QTdFMDBFNTRFNEUgLyogSlND
cnlwdG9DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlND
cnlwdG9DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyMEQ2MjkyNDEy
NTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRDYyOTI1MTI1MzY5MEIwMDA4MTU0MyAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5u
ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDYxOCw2ICsyMDYyMCw3
IEBACiAJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTIwOUI0NTZBMTY3OTZBN0UwMEU1NEU0
RSAvKiBKU0NyeXB0b0N1c3RvbS5jcHAgKi8sCiAJCQkJQkMyNzVDQjIxMUM1RTg1QzAwQzkyMDZD
IC8qIEpTQXJyYXlCdWZmZXJDdXN0b20uY3BwICovLAogCQkJCTg2MjQzRDAwMTFCQzMxRjcwMEND
MDA2QSAvKiBKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oICovLAogCQkJCUJDMkVENkJCMEM2QkQy
RjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwICovLApAQCAtMjkwOTYsNiArMjkwOTksNyBA
QAogCQkJCTlBOUNFRjhEMTYzQjNFQTEwMERFN0VGRSAvKiBFeGNsdXNpb25TaGFwZU91dHNpZGVJ
bmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjg4OTBCMTY3RDJGQTEwMDEwQ0RBNSAvKiBT
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGQjg4OTBFMTY3
RDMwMTYwMDEwQ0RBNSAvKiBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMjA5QjQ1NkIxNjc5NkE3RTAwRTU0RTRFIC8qIEpTQ3J5cHRvQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNC
aW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGlu
Z3NBbGxJbk9uZS5jcHAKaW5kZXggMzU3MjU0YzY5NDNmOGE2NzQ3NDMxOGVmNzhiM2U2N2MyZThi
NmEzMC4uOGY3MWRhNWFlM2VmMmE0ZDBmMDg4YmM2Y2Q0YWUxM2U4OTYwMWFmYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCkBAIC01
MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSlNDbGlwYm9hcmRDdXN0b20uY3BwIgogI2luY2x1ZGUg
IkpTQ29uc29sZUN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDb29yZGluYXRlc0N1c3RvbS5jcHAi
CisjaW5jbHVkZSAiSlNDcnlwdG9DdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTQ3VzdG9tU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjay5jcHAiCiAjaW5jbHVkZSAiSlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXIuY3BwIgogI2luY2x1ZGUgIkpTRGljdGlvbmFyeS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NyeXB0b0N1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2RjMTYxNGMyN2Q0NDk1
MGU4M2YyOWIzMzk1OGI5YTY0OTk0NGQ4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcApAQCAtMCwwICsxLDU5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDcnlwdG8uaCIKKwor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0FycmF5QnVmZmVyVmlldy5o
IgorCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgorI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZl
clZpZXcuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitKU1ZhbHVlIEpTQ3J5cHRvOjpnZXRSYW5kb21WYWx1ZXMoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQorICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CisKKyAgICBK
U1ZhbHVlIGJ1ZmZlciA9IGV4ZWMtPmFyZ3VtZW50KDApOworICAgIEFycmF5QnVmZmVyVmlldyog
YXJyYXlCdWZmZXJWaWV3ID0gdG9BcnJheUJ1ZmZlclZpZXcoYnVmZmVyKTsKKyAgICBpZiAoIWFy
cmF5QnVmZmVyVmlldykKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOworCisg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgpLT5nZXRSYW5kb21WYWx1ZXMoYXJy
YXlCdWZmZXJWaWV3LCBlYyk7CisKKyAgICBpZiAoVU5MSUtFTFkoZWMpKSB7CisgICAgICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIH0KKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENyeXB0b0N1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDcnlwdG9DdXN0
b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmRhYmVjMzIwMWQ3OTY1YWM2YzllYTBlYTY5MjdiMDljYTExMDU0
NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhDcnlwdG9DdXN0b20uY3BwCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJWOENyeXB0by5oIgorCisjaW5jbHVkZSAiQ3J5cHRv
LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlY4QXJyYXlCdWZmZXJW
aWV3LmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIK
KworI2luY2x1ZGUgPHd0Zi9BcnJheUJ1ZmZlclZpZXcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDcnlwdG86OmdldFJhbmRvbVZhbHVlc0NhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PCAxKQorICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdl
dElzb2xhdGUoKSk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYnVmZmVyID0gYXJnc1sw
XTsKKyAgICBpZiAoIVY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZShidWZmZXIpKQorICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhbiBBcnJh
eUJ1ZmZlclZpZXciLCBhcmdzLkdldElzb2xhdGUoKSk7CisKKyAgICBBcnJheUJ1ZmZlclZpZXcq
IGFycmF5QnVmZmVyVmlldyA9IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KGJ1ZmZlcikpOworICAgIEFTU0VSVChhcnJheUJ1ZmZlclZpZXcp
OworCisgICAgQ3J5cHRvKiBjcnlwdG8gPSBWOENyeXB0bzo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgY3J5cHRvLT5nZXRSYW5kb21WYWx1
ZXMoYXJyYXlCdWZmZXJWaWV3LCBlYyk7CisKKyAgICBpZiAoVU5MSUtFTFkoZWMpKQorICAgICAg
ICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CisKKyAgICBy
ZXR1cm4gYnVmZmVyOyAgICAKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9D
cnlwdG8uaWRsCmluZGV4IDU4OTI4MWFmNTMxOWU4YjE3ZTU1ZWE2ZTNkYTlhZDM3NTQyMTIxNGEu
LjViZWMzN2FlMDNjOGY0YTk4YjZhZTczZjU2Y2NjY2JiNDQ1OGIwOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ny
eXB0by5pZGwKQEAgLTI5LDYgKzI5LDYgQEAKIFsKICAgICBPbWl0Q29uc3RydWN0b3IKIF0gaW50
ZXJmYWNlIENyeXB0byB7Ci0gICAgdm9pZCBnZXRSYW5kb21WYWx1ZXMoaW4gQXJyYXlCdWZmZXJW
aWV3IGFycmF5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICBbQ3VzdG9tXSBBcnJheUJ1ZmZl
clZpZXcgZ2V0UmFuZG9tVmFsdWVzKGluIEFycmF5QnVmZmVyVmlldyBhcnJheSkgcmFpc2VzKERP
TUV4Y2VwdGlvbik7CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTcwOGQ5NDFhZWI2NTJkMWM0NjcyOTg2ZjQ3YTk2
NjAwMThmNmNmNC4uNjc4YzBkMTViMjEyNGIzNDgyYjVjNTQwNTk2MDZlYTcwYTVhZGIxYiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEyLTE5ICBSeWFuIFNsZWV2aSAgPHJzbGVldmlAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIHNob3Vs
ZCByZXR1cm4gdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qczoKKyAgICAgICAgKHNob3VsZEJlVHlwZSk6CisgICAgICAgIEFkZGVkIGhlbHBlciB0byBh
c3NlcnQgdGhhdCBhbiBleHByZXNzaW9uIHJldHVybnMgYW4gb2JqZWN0IG9mIHRoZQorICAgICAg
ICBjb3JyZWN0IHR5cGUuCisgICAgICAgICogc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMt
dHlwZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHNlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFs
dWVzLXR5cGVzLmh0bWw6CisgICAgICAgIFRlc3QgYWxsIHBvc3NpYmxlIFR5cGVkQXJyYXkgaW50
ZWdlciB0eXBlcyBhbmQgZW5zdXJlIHRoYXQgYm90aCB0aGUKKyAgICAgICAgY29ycmVjdCBUeXBl
ZEFycmF5IHR5cGUgaXMgcmV0dXJuZWQgYW5kIHRoYXQgaXQgaXMgZXF1YWwgdG8gdGhlIGlucHV0
CisgICAgICAgIHR5cGU7IHRoYXQgaXMsIHRoYXQgdGhlIGlucHV0IHR5cGUgaXMgbW9kaWZpZWQg
aW4gcGxhY2UsIHJhdGhlciB0aGVuCisgICAgICAgIGNvcGllZC4KKwogMjAxMi0xMi0xOSAgTGV2
aSBXZWludHJhdWIgIDxsZXZpd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmUtc2tpcHBpbmcg
dG91Y2gtaW5wdXQtZWxlbWVudC1jaGFuZy1kb2N1bWVudHMuaHRtbCBzaW5jZSBpdCdzIHN0aWxs
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCmluZGV4IDI2
YzBjNWVlZWMzNTVkM2MyMzQ2Y2NlMWQyODE4NjMwMGY2OWY1MTguLjlhMGM1ZDc0ODQ0MTNhNDY1
ZWVhMjE5YTQ5YjA1OTQ2NDAzODBlYjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzCkBAIC0xODgsNiArMTg4LDIzIEBAIGZ1bmN0aW9uIHNob3VsZEJl
KF9hLCBfYiwgcXVpZXQpCiAgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIGJlICIgKyBfYnYg
KyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2J2ICsgIikuIFdhcyAiICsgX2F2ICsgIiAob2YgdHlw
ZSAiICsgdHlwZW9mIF9hdiArICIpLiIpOwogfQogCitmdW5jdGlvbiBzaG91bGRCZVR5cGUoX2Es
IF90eXBlKSB7CisgIHZhciBleGNlcHRpb247CisgIHZhciBfYXY7CisgIHRyeSB7CisgICAgX2F2
ID0gZXZhbChfYSk7CisgIH0gY2F0Y2ggKGUpIHsKKyAgICBleGNlcHRpb24gPSBlOworICB9CisK
KyAgdmFyIF90eXBldiA9IGV2YWwoX3R5cGUpOworICBpZiAoX2F2IGluc3RhbmNlb2YgX3R5cGV2
KSB7CisgICAgdGVzdFBhc3NlZChfYSArICIgaXMgYW4gaW5zdGFuY2Ugb2YgIiArIF90eXBlKTsK
KyAgfSBlbHNlIHsKKyAgICB0ZXN0RmFpbGVkKF9hICsgIiBpcyBub3QgYW4gaW5zdGFuY2Ugb2Yg
IiArIF90eXBlKTsKKyAgfQorfQorCiAvLyBWYXJpYW50IG9mIHNob3VsZEJlKCktLWNvbmZpcm1z
IHRoYXQgcmVzdWx0IG9mIGV2YWwoX3RvX2V2YWwpIGlzIHdpdGhpbgogLy8gbnVtZXJpYyBfdG9s
ZXJhbmNlIG9mIG51bWVyaWMgX3RhcmdldC4KIGZ1bmN0aW9uIHNob3VsZEJlQ2xvc2VUbyhfdG9f
ZXZhbCwgX3RhcmdldCwgX3RvbGVyYW5jZSwgcXVpZXQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBlcy1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBlcy1leHBlY3RlZC50eHQK
aW5kZXggNjgzZGUzMmY2MzRkODYxYjUwNDYwMDBhMDE5MjQ3YmUxNWNhZjNmYi4uNDIxM2ZkNDVh
NTEwMGE3NDJiMTE2MmMyMjU3NGRkM2Y0YzcyNWFiMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
c2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLWV4cGVjdGVkLnR4
dApAQCAtNSwxMyArNSw0NyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiBQQVNTICdjcnlw
dG8nIGluIHdpbmRvdyBpcyB0cnVlCiBQQVNTICdnZXRSYW5kb21WYWx1ZXMnIGluIHdpbmRvdy5j
cnlwdG8gaXMgdHJ1ZQotUEFTUyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5
KDMpKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDhB
cnJheSgzKSkgaXMgdW5kZWZpbmVkLgotUEFTUyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBV
aW50MTZBcnJheSgzKSkgaXMgdW5kZWZpbmVkLgotUEFTUyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVz
KG5ldyBJbnQxNkFycmF5KDMpKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNyeXB0by5nZXRSYW5kb21W
YWx1ZXMobmV3IFVpbnQzMkFycmF5KDMpKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNyeXB0by5nZXRS
YW5kb21WYWx1ZXMobmV3IEludDMyQXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KK1BBU1MgcmFuZG9t
ID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgzKSkgaXMgZGVmaW5lZC4K
K1BBU1MgcmFuZG9tIGlzIGFuIGluc3RhbmNlIG9mIFVpbnQ4QXJyYXkKK1BBU1MgdmlldyA9IG5l
dyBVaW50OEFycmF5KDMpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5k
b21WYWx1ZXModmlldykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlzIHZpZXcKK1BBU1MgcmFu
ZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50OEFycmF5KDMpKSBpcyBkZWZpbmVk
LgorUEFTUyByYW5kb20gaXMgYW4gaW5zdGFuY2Ugb2YgSW50OEFycmF5CitQQVNTIHZpZXcgPSBu
ZXcgSW50OEFycmF5KDMpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5k
b21WYWx1ZXModmlldykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlzIHZpZXcKK1BBU1MgcmFu
ZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhDbGFtcGVkQXJyYXkoMykpIGlz
IGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyBhbiBpbnN0YW5jZSBvZiBVaW50OENsYW1wZWRBcnJh
eQorUEFTUyB2aWV3ID0gbmV3IFVpbnQ4Q2xhbXBlZEFycmF5KDMpIGlzIGRlZmluZWQuCitQQVNT
IHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXModmlldykgaXMgZGVmaW5lZC4KK1BBU1Mg
cmFuZG9tIGlzIHZpZXcKK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcg
VWludDE2QXJyYXkoMykpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyBhbiBpbnN0YW5jZSBv
ZiBVaW50MTZBcnJheQorUEFTUyB2aWV3ID0gbmV3IFVpbnQxNkFycmF5KDMpIGlzIGRlZmluZWQu
CitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXModmlldykgaXMgZGVmaW5lZC4K
K1BBU1MgcmFuZG9tIGlzIHZpZXcKK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVl
cyhuZXcgSW50MTZBcnJheSgzKSkgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlzIGFuIGluc3Rh
bmNlIG9mIEludDE2QXJyYXkKK1BBU1MgdmlldyA9IG5ldyBJbnQxNkFycmF5KDMpIGlzIGRlZmlu
ZWQuCitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXModmlldykgaXMgZGVmaW5l
ZC4KK1BBU1MgcmFuZG9tIGlzIHZpZXcKK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZh
bHVlcyhuZXcgVWludDMyQXJyYXkoMykpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyBhbiBp
bnN0YW5jZSBvZiBVaW50MzJBcnJheQorUEFTUyB2aWV3ID0gbmV3IFVpbnQzMkFycmF5KDMpIGlz
IGRlZmluZWQuCitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXModmlldykgaXMg
ZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlzIHZpZXcKK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJh
bmRvbVZhbHVlcyhuZXcgSW50MzJBcnJheSgzKSkgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlz
IGFuIGluc3RhbmNlIG9mIEludDMyQXJyYXkKK1BBU1MgdmlldyA9IG5ldyBJbnQzMkFycmF5KDMp
IGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXModmlldykg
aXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlzIHZpZXcKIFBBU1MgY3J5cHRvLmdldFJhbmRvbVZh
bHVlcyhuZXcgRmxvYXQzMkFycmF5KDMpKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFR5cGVNaXNt
YXRjaEVycm9yOiBET00gRXhjZXB0aW9uIDE3LgorUEFTUyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVz
KG5ldyBGbG9hdDY0QXJyYXkoMykpIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogVHlwZU1pc21hdGNo
RXJyb3I6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGJ1ZmZlciA9IG5ldyBVaW50OEFycmF5KDMy
KSBpcyBkZWZpbmVkLgorUEFTUyBidWZmZXIuYnVmZmVyIGlzIGRlZmluZWQuCitQQVNTIHZpZXcg
PSBuZXcgRGF0YVZpZXcoYnVmZmVyLmJ1ZmZlcikgaXMgZGVmaW5lZC4KK1BBU1MgY3J5cHRvLmdl
dFJhbmRvbVZhbHVlcyh2aWV3KSB0aHJldyBleGNlcHRpb24gRXJyb3I6IFR5cGVNaXNtYXRjaEVy
cm9yOiBET00gRXhjZXB0aW9uIDE3LgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zZWN1cml0eS9jcnlwdG8t
cmFuZG9tLXZhbHVlcy10eXBlcy5odG1sIGIvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJh
bmRvbS12YWx1ZXMtdHlwZXMuaHRtbAppbmRleCAyZmE1YWVjZDEzMzQyMTQ5NjY2YmZlMzcxZGNm
MWE5NTRkNzk5YTg1Li4zNzdjNTkzM2ZlMTEyYjBjNTE4NGY4N2UyMTZlNzI3YTUyYjc2ZmU2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBl
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5
cGVzLmh0bWwKQEAgLTE2LDE0ICsxNiwzOCBAQCBpZiAoIXdpbmRvdy5BcnJheUJ1ZmZlcikKIHNo
b3VsZEJlKCInY3J5cHRvJyBpbiB3aW5kb3ciLCAidHJ1ZSIpOwogc2hvdWxkQmUoIidnZXRSYW5k
b21WYWx1ZXMnIGluIHdpbmRvdy5jcnlwdG8iLCAidHJ1ZSIpOwogCi1zaG91bGRCZVVuZGVmaW5l
ZCgiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDhBcnJheSgzKSkiKTsKLXNob3VsZEJl
VW5kZWZpbmVkKCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQ4QXJyYXkoMykpIik7Ci1z
aG91bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDE2QXJyYXko
MykpIik7Ci1zaG91bGRCZVVuZGVmaW5lZCgiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50
MTZBcnJheSgzKSkiKTsKLXNob3VsZEJlVW5kZWZpbmVkKCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVz
KG5ldyBVaW50MzJBcnJheSgzKSkiKTsKLXNob3VsZEJlVW5kZWZpbmVkKCJjcnlwdG8uZ2V0UmFu
ZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDMpKSIpOwotCi1zaG91bGRUaHJvdygiY3J5cHRvLmdl
dFJhbmRvbVZhbHVlcyhuZXcgRmxvYXQzMkFycmF5KDMpKSIpOworZnVuY3Rpb24gY2hlY2tJbnRl
Z2VyVHlwZXMoKSB7CisgICAgdmFyIGludGVnZXJUeXBlcyA9IFsKKyAgICAgICAgIlVpbnQ4QXJy
YXkiLCAiSW50OEFycmF5IiwgIlVpbnQ4Q2xhbXBlZEFycmF5IiwKKyAgICAgICAgIlVpbnQxNkFy
cmF5IiwgIkludDE2QXJyYXkiLAorICAgICAgICAiVWludDMyQXJyYXkiLCAiSW50MzJBcnJheSIs
CisgICAgXTsKKyAgICBpbnRlZ2VyVHlwZXMuZm9yRWFjaChmdW5jdGlvbihhcnJheVR5cGUpIHsK
KyAgICAgICAgc2hvdWxkQmVEZWZpbmVkKCJyYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVz
KG5ldyAiK2FycmF5VHlwZSsiKDMpKSIpOworICAgICAgICBzaG91bGRCZVR5cGUoInJhbmRvbSIs
IGFycmF5VHlwZSk7CisKKyAgICAgICAgc2hvdWxkQmVEZWZpbmVkKCJ2aWV3ID0gbmV3ICIrYXJy
YXlUeXBlKyIoMykiKTsKKyAgICAgICAgc2hvdWxkQmVEZWZpbmVkKCJyYW5kb20gPSBjcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzKHZpZXcpIik7CisgICAgICAgIHNob3VsZEJlKCJyYW5kb20iLCAidmll
dyIpOworICAgIH0pOworfQorCitmdW5jdGlvbiBjaGVja05vbkludGVnZXJUeXBlcygpIHsKKyAg
ICB2YXIgZmxvYXRUeXBlcyA9IFsKKyAgICAgICAgIkZsb2F0MzJBcnJheSIsICJGbG9hdDY0QXJy
YXkiLAorICAgIF07CisgICAgZmxvYXRUeXBlcy5mb3JFYWNoKGZ1bmN0aW9uKGFycmF5VHlwZSkg
eworICAgICAgICBzaG91bGRUaHJvdygiY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgIithcnJh
eVR5cGUrIigzKSkiKTsKKyAgICB9KTsKKworICAgIHNob3VsZEJlRGVmaW5lZCgiYnVmZmVyID0g
bmV3IFVpbnQ4QXJyYXkoMzIpIik7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJidWZmZXIuYnVmZmVy
Iik7CisgICAgc2hvdWxkQmVEZWZpbmVkKCJ2aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZm
ZXIpIik7CisgICAgc2hvdWxkVGhyb3coImNyeXB0by5nZXRSYW5kb21WYWx1ZXModmlldykiKTsK
K30KKworY2hlY2tJbnRlZ2VyVHlwZXMoKTsKK2NoZWNrTm9uSW50ZWdlclR5cGVzKCk7CiAKIDwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180379</attachid>
            <date>2012-12-20 11:55:36 -0800</date>
            <delta_ts>2012-12-20 14:13:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104845-20121220115252.patch</filename>
            <type>text/plain</type>
            <size>21519</size>
            <attacher name="Ryan Sleevi">rsleevi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4MjgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTYxZDgzNTA5YmYzNDFi
YjVlNzliZmJiYWJmMDhlOWFiY2UxYzAwOC4uZGVmMzJhMWU2MzcwNTFkYWIwOTNjOTE4MjEyNDZl
NWUzNWEyNGI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEyLTIwICBSeWFu
IFNsZWV2aSAgPHJzbGVldmlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHdpbmRvdy5jcnlwdG8u
Z2V0UmFuZG9tVmFsdWVzIHNob3VsZCByZXR1cm4gdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0ODQ1CisK
KyAgICAgICAgVGhlIFczQyBXZWIgQ3J5cHRvIEFQSSBGUFdELCBhcyB3ZWxsIGFzIHRoZSBXSEFU
V0cgRmVicnVhcnkgMjAxMiBkcmFmdCwKKyAgICAgICAgZGVmaW5lIGNyeXB0by5nZXRSYW5kb21W
YWx1ZXMoKSBhcyByZXR1cm5pbmcgdGhlIGlucHV0IEFycmF5QnVmZmVyVmlldywKKyAgICAgICAg
dG8gYWxsb3cgZnVuY3Rpb24gY2FsbCBjaGFpbmluZy4gVXBkYXRlIHRoZSBpbXBsZW1lbnRhdGlv
biB0byBtYXRjaAorICAgICAgICB0aGUgY3VycmVudCBzcGVjLCByYXRoZXIgdGhhbiB0aGUgb2xk
IHNwZWMgb2Ygdm9pZC91bmRlZmluZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlw
ZXMuaHRtbAorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJn
ZXQucHJpOgorICAgICAgICAqIFVzZUpTQy5jbWFrZToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDcnlwdG9DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNDcnlwdG86OmdldFJhbmRvbVZhbHVlcyk6CisgICAgICAgIEFkZGVkIGN1
c3RvbSBnZXRSYW5kb21WYWx1ZXMgaW1wbGVtZW50YXRpb24gc28gdGhhdCB0aGUgaW5wdXQgd3Jh
cHBlZAorICAgICAgICBBcnJheUJ1ZmZlclZpZXcgY2FuIGJlIHJldHVybmVkIGRpcmVjdGx5IHRv
IHRoZSBjYWxsZXIuIFRoaXMgaXMgdG8KKyAgICAgICAgcHJlc2VydmUgdGhlIHVuZGVybHlpbmcg
dHlwZSBhbmQgaW5kZXhpbmcgYWNjZXNzb3IgZm9yIHRoZSBUeXBlZEFycmF5CisgICAgICAgIHN1
YmNsYXNzLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENyeXB0b0N1c3RvbS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpWOENyeXB0bzo6
Z2V0UmFuZG9tVmFsdWVzQ2FsbGJhY2spOgorICAgICAgICBBZGRlZCBjdXN0b20gZ2V0UmFuZG9t
VmFsdWVzIGltcGxlbWVudGF0aW9uIHNvIHRoYXQgdGhlIGlucHV0IHdyYXBwZWQKKyAgICAgICAg
QXJyYXlCdWZmZXJWaWV3IGNhbiBiZSByZXR1cm5lZCBkaXJlY3RseSB0byB0aGUgY2FsbGVyLiBU
aGlzIGlzIHRvCisgICAgICAgIHByZXNlcnZlIHRoZSB1bmRlcmx5aW5nIHR5cGUgYW5kIGluZGV4
aW5nIGFjY2Vzc29yIGZvciB0aGUgVHlwZWRBcnJheQorICAgICAgICBzdWJjbGFzcy4KKyAgICAg
ICAgKiBwYWdlL0NyeXB0by5pZGw6CisKIDIwMTItMTItMTkgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgTG90cyBvZiBzdGlja3kgdGVzdHMgZmFpbGlu
ZyBpbiBXSzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDVlYTNhZjI5MjcxYjQx
N2YxYjIxYjdkNWRjNjM2NzQ4ZjMwZTcxZTAuLjE4ZjA0ODc0YzA1ZjFmODQ3MmQzMDFkY2FlZjAz
M2Y3NWYwNWMwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjI3NCw2ICsy
Mjc0LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NsaXBib2FyZEN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q29uc29sZUN1c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29vcmRp
bmF0ZXNDdXN0b20uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0N1
c3RvbS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjay5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21YUGF0aE5TUmVzb2x2ZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJn
ZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBlNmQ0N2Y2Y2FmMjgyYjgx
ZGYwZmVlZDRhYWJiNjQ5MjRjNjg2MThlLi5iMWJiOGYzYzhiNTg3OTFiM2VjZDY3MTE4YTFiMTNm
MTAzNGQ0ZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTg2LDYgKzg2LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgIGJpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pz
L0pTQ29uc29sZUN1c3RvbS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0Nvb3JkaW5hdGVzQ3Vz
dG9tLmNwcCBcCisgICAgIGJpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcCBcCiAgICAgIGJp
bmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBcCiAgICAgIGJpbmRpbmdzL2pz
L0pTRGljdGlvbmFyeS5jcHAgXAogICAgICBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZSBiL1NvdXJjZS9XZWJDb3Jl
L1VzZUpTQy5jbWFrZQppbmRleCA1NjQ0YWY1ZGFkZjgxNjBkNzljYmRhN2FjMmFhNzAxYWNjYWZi
ZWY4Li5jMGNhZjg3ZjY2YWIxYTJlYWQ5NGJhODI3NzJlMjJhYzIyZGQ4YjQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlSlND
LmNtYWtlCkBAIC00OSw2ICs0OSw3IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAg
IGJpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTQ29u
c29sZUN1c3RvbS5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0Nvb3JkaW5hdGVzQ3VzdG9tLmNwcAor
ICAgIGJpbmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRGljdGlvbmFyeS5jcHAK
ICAgICBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMjUz
ZGRjNDNhMGM3NDc4OGZkNTgzMDI3MTQ4NDA4ODUwMjhmZDAzZS4uMzY4NWE5ODg0OTM3ZGQzZjcy
MTJlMjE3NmZhZjI2OTg5ODY1YmEwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTMwOCw2ICsxMzA4
LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20u
Y3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDb25zb2xlQ3VzdG9tLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29vcmRpbmF0ZXNDdXN0b20u
Y3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDcnlwdG9DdXN0b20uY3Bw
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21FdmVudEN1c3RvbS5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVNRTFN0YXRlbWVu
dEVycm9yQ2FsbGJhY2suY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhD
dXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4MzUzZGY4ZmY5NWRkNDNiNjRhYmFmOGM1
NjA2OWQyNWNkYjAyMTQ4Li5jY2ZiODk0ZTVhYzJmYWU5ZjBkMzk0OTgyN2U1ZGIyZjkyY2IyYWY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC02OTcsNiArNjk3LDcgQEAKIAkJMUYzRjE5NTMxNDk5Q0E3NjAwQTVBRUE3IC8qIFBP
REZyZWVMaXN0QXJlbmEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFGM0YxOTUyMTQ5OUNBNzYwMEE1QUVBNyAvKiBQT0RGcmVlTGlzdEFyZW5hLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUZBRkJGMTgx
NUE1RkE2RTAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFGQUZCRjE3MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElV
dGlsaXRpZXMubW0gKi87IH07CiAJCTFGQUZCRjE5MTVBNUZBNzQwMDA4M0EyMCAvKiBVVElVdGls
aXRpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFG
QUZCRjE2MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCAqLzsgfTsKKwkJMjA5QjQ1
NkIxNjc5NkE3RTAwRTU0RTRFIC8qIEpTQ3J5cHRvQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwOUI0NTZBMTY3OTZBN0UwMEU1NEU0RSAv
KiBKU0NyeXB0b0N1c3RvbS5jcHAgKi87IH07CiAJCTIwRDYyOTI2MTI1MzY5MEIwMDA4MTU0MyAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMjBENjI5MjQxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAgKi87IH07CiAJCTIwRDYyOTI3MTI1MzY5MEIwMDA4MTU0MyAv
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYyOTI1MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaCAqLzsgfTsKIAkJMjI3Nzc3NjAxMzQ1REVBOTAwOEVBNDU1IC8qIElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjI3Nzc3NUYxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3BlY3RvckZyb250
ZW5kQ2hhbm5lbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC03ODg4LDYgKzc4ODksNyBAQAogCQkxRjNGMTk1MjE0OTlDQTc2MDBBNUFFQTcgLyog
UE9ERnJlZUxpc3RBcmVuYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQT0RG
cmVlTGlzdEFyZW5hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGQUZCRjE2MTVB
NUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVVRJVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFG
QUZCRjE3MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVVElVdGlsaXRpZXMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTIwOUI0NTZBMTY3OTZBN0UwMEU1NEU0RSAvKiBKU0NyeXB0b0N1c3Rv
bS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NyeXB0b0N1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRDYyOTI0MTI1MzY5MEIwMDA4
MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjBENjI5MjUxMjUzNjkwQjAwMDgxNTQzIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjI3
Nzc3NUYxMzQ1REVBOTAwOEVBNDU1IC8qIEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNjE4LDYgKzIwNjIwLDcgQEAKIAkJQkM0
RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMjA5QjQ1NkExNjc5NkE3RTAwRTU0RTRFIC8qIEpTQ3J5
cHRvQ3VzdG9tLmNwcCAqLywKIAkJCQlCQzI3NUNCMjExQzVFODVDMDBDOTIwNkMgLyogSlNBcnJh
eUJ1ZmZlckN1c3RvbS5jcHAgKi8sCiAJCQkJODYyNDNEMDAxMUJDMzFGNzAwQ0MwMDZBIC8qIEpT
QXJyYXlCdWZmZXJWaWV3SGVscGVyLmggKi8sCiAJCQkJQkMyRUQ2QkIwQzZCRDJGMDAwOTIwQkZG
IC8qIEpTQXR0ckN1c3RvbS5jcHAgKi8sCkBAIC0yOTA5Niw2ICsyOTA5OSw3IEBACiAJCQkJOUE5
Q0VGOEQxNjNCM0VBMTAwREU3RUZFIC8qIEV4Y2x1c2lvblNoYXBlT3V0c2lkZUluZm8uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5MEIxNjdEMkZBMTAwMTBDREE1IC8qIFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5MEUxNjdEMzAxNjAwMTBD
REE1IC8qIFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQky
MDlCNDU2QjE2Nzk2QTdFMDBFNTRFNEUgLyogSlNDcnlwdG9DdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxs
SW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcAppbmRleCAzNTcyNTRjNjk0M2Y4YTY3NDc0MzE4ZWY3OGIzZTY3YzJlOGI2YTMwLi44Zjcx
ZGE1YWUzZWYyYTRkMGYwODhiYzZjZDRhZTEzZTg5NjAxYWZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTUxLDYgKzUxLDcg
QEAKICNpbmNsdWRlICJKU0NsaXBib2FyZEN1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDb25zb2xl
Q3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU0Nvb3JkaW5hdGVzQ3VzdG9tLmNwcCIKKyNpbmNsdWRl
ICJKU0NyeXB0b0N1c3RvbS5jcHAiCiAjaW5jbHVkZSAiSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJv
ckNhbGxiYWNrLmNwcCIKICNpbmNsdWRlICJKU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAiCiAj
aW5jbHVkZSAiSlNEaWN0aW9uYXJ5LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3J5cHRvQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOTYzYTc0Njg3NjU0YTJlYzgwMDhkNGZj
MzcyMjE4MzFhOWI1YmE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDcnlwdG9DdXN0b20uY3BwCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisg
KiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0NyeXB0by5oIgorCisjaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTQXJyYXlCdWZmZXJWaWV3LmgiCisKKyNpbmNs
dWRlIDxydW50aW1lL0Vycm9yLmg+CisjaW5jbHVkZSA8d3RmL0FycmF5QnVmZmVyVmlldy5oPgor
Cit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUg
SlNDcnlwdG86OmdldFJhbmRvbVZhbHVlcyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKKworICAgIEpTVmFsdWUgYnVm
ZmVyID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgQXJyYXlCdWZmZXJWaWV3KiBhcnJheUJ1ZmZl
clZpZXcgPSB0b0FycmF5QnVmZmVyVmlldyhidWZmZXIpOworICAgIGlmICghYXJyYXlCdWZmZXJW
aWV3KQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CisKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBpbXBsKCktPmdldFJhbmRvbVZhbHVlcyhhcnJheUJ1ZmZlclZp
ZXcsIGVjKTsKKworICAgIGlmIChlYykgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
ZWMpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICByZXR1cm4g
YnVmZmVyOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDcnlwdG9DdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRvQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MzIzZGRmMGEyNjliNDIzNTc5ZDZmNTcxNDM1MjNiYWZjOWQwYjI2Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRvQ3VzdG9tLmNwcApA
QCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiVjhDcnlwdG8uaCIKKworI2luY2x1ZGUgIkNyeXB0by5oIgorI2luY2x1ZGUgIkV4Y2Vw
dGlvbkNvZGUuaCIKKyNpbmNsdWRlICJWOEFycmF5QnVmZmVyVmlldy5oIgorI2luY2x1ZGUgIlY4
QmluZGluZy5oIgorI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCisKKyNpbmNsdWRlIDx3dGYvQXJy
YXlCdWZmZXJWaWV3Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4Q3J5cHRvOjpnZXRSYW5kb21WYWx1ZXNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQoreworICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKKyAgICAgICAgcmV0dXJu
IHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOworCisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGJ1ZmZlciA9IGFyZ3NbMF07CisgICAgaWYgKCFWOEFycmF5
QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UoYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCJGaXJzdCBhcmd1bWVudCBpcyBub3QgYW4gQXJyYXlCdWZmZXJWaWV3IiwgYXJncy5H
ZXRJc29sYXRlKCkpOworCisgICAgQXJyYXlCdWZmZXJWaWV3KiBhcnJheUJ1ZmZlclZpZXcgPSBW
OEFycmF5QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChi
dWZmZXIpKTsKKyAgICBBU1NFUlQoYXJyYXlCdWZmZXJWaWV3KTsKKworICAgIENyeXB0byogY3J5
cHRvID0gVjhDcnlwdG86OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOworICAgIGNyeXB0by0+Z2V0UmFuZG9tVmFsdWVzKGFycmF5QnVmZmVyVmlldywg
ZWMpOworCisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBh
cmdzLkdldElzb2xhdGUoKSk7CisKKyAgICByZXR1cm4gYnVmZmVyOyAgICAKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8u
aWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DcnlwdG8uaWRsCmluZGV4IDU4OTI4MWFmNTMxOWU4
YjE3ZTU1ZWE2ZTNkYTlhZDM3NTQyMTIxNGEuLjViZWMzN2FlMDNjOGY0YTk4YjZhZTczZjU2Y2Nj
Y2JiNDQ1OGIwOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ3J5cHRvLmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NyeXB0by5pZGwKQEAgLTI5LDYgKzI5LDYgQEAKIFsK
ICAgICBPbWl0Q29uc3RydWN0b3IKIF0gaW50ZXJmYWNlIENyeXB0byB7Ci0gICAgdm9pZCBnZXRS
YW5kb21WYWx1ZXMoaW4gQXJyYXlCdWZmZXJWaWV3IGFycmF5KSByYWlzZXMoRE9NRXhjZXB0aW9u
KTsKKyAgICBbQ3VzdG9tXSBBcnJheUJ1ZmZlclZpZXcgZ2V0UmFuZG9tVmFsdWVzKGluIEFycmF5
QnVmZmVyVmlldyBhcnJheSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiB9OwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzFl
ZjcwZTJmMWJkOTYyYmZmYWY2NTIxNDQyMGY2NzdjZDYxOGZjMy4uZjdkMGJlMjJkMzJkODJhNDAx
NTM4NTlmNjAyNjUxZjgxZDMyNDg5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEyLTIw
ICBSeWFuIFNsZWV2aSAgPHJzbGVldmlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIHdpbmRvdy5j
cnlwdG8uZ2V0UmFuZG9tVmFsdWVzIHNob3VsZCByZXR1cm4gdGhlIGlucHV0IEFycmF5QnVmZmVy
VmlldworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0
ODQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qczoKKyAgICAgICAgKHNob3VsZEJlVHlwZSk6
CisgICAgICAgIEFkZGVkIGhlbHBlciB0byBhc3NlcnQgdGhhdCBhbiBleHByZXNzaW9uIHJldHVy
bnMgYW4gb2JqZWN0IG9mIHRoZQorICAgICAgICBjb3JyZWN0IHR5cGUuCisgICAgICAgICogc2Vj
dXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMtdHlwZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHNlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLmh0bWw6CisgICAgICAgIFRlc3Qg
YWxsIHBvc3NpYmxlIFR5cGVkQXJyYXkgaW50ZWdlciB0eXBlcyBhbmQgZW5zdXJlIHRoYXQgYm90
aCB0aGUKKyAgICAgICAgY29ycmVjdCBUeXBlZEFycmF5IHR5cGUgaXMgcmV0dXJuZWQgYW5kIHRo
YXQgaXQgaXMgZXF1YWwgdG8gdGhlIGlucHV0CisgICAgICAgIHR5cGU7IHRoYXQgaXMsIHRoYXQg
dGhlIGlucHV0IHR5cGUgaXMgbW9kaWZpZWQgaW4gcGxhY2UsIHJhdGhlciB0aGVuCisgICAgICAg
IGNvcGllZC4KKwogMjAxMi0xMi0yMCAgRWxsaW90dCBTcHJlaG4gIDxlc3ByZWhuQGdtYWlsLmNv
bT4KIAogICAgICAgICBCbG9jayBsZXZlbCBwc2V1ZG8gZWxlbWVudHMgYmxlZWQgYmFja2dyb3Vu
ZCBjb2xvciB0byA8aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMKaW5kZXggMjZjMGM1ZWVlYzM1NWQzYzIzNDZjY2UxZDI4MTg2MzAwZjY5ZjUxOC4u
OWEwYzVkNzQ4NDQxM2E0NjVlZWEyMTlhNDliMDU5NDY0MDM4MGViMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKQEAgLTE4OCw2ICsxODgsMjMgQEAg
ZnVuY3Rpb24gc2hvdWxkQmUoX2EsIF9iLCBxdWlldCkKICAgICB0ZXN0RmFpbGVkKF9hICsgIiBz
aG91bGQgYmUgIiArIF9idiArICIgKG9mIHR5cGUgIiArIHR5cGVvZiBfYnYgKyAiKS4gV2FzICIg
KyBfYXYgKyAiIChvZiB0eXBlICIgKyB0eXBlb2YgX2F2ICsgIikuIik7CiB9CiAKK2Z1bmN0aW9u
IHNob3VsZEJlVHlwZShfYSwgX3R5cGUpIHsKKyAgdmFyIGV4Y2VwdGlvbjsKKyAgdmFyIF9hdjsK
KyAgdHJ5IHsKKyAgICBfYXYgPSBldmFsKF9hKTsKKyAgfSBjYXRjaCAoZSkgeworICAgIGV4Y2Vw
dGlvbiA9IGU7CisgIH0KKworICB2YXIgX3R5cGV2ID0gZXZhbChfdHlwZSk7CisgIGlmIChfYXYg
aW5zdGFuY2VvZiBfdHlwZXYpIHsKKyAgICB0ZXN0UGFzc2VkKF9hICsgIiBpcyBhbiBpbnN0YW5j
ZSBvZiAiICsgX3R5cGUpOworICB9IGVsc2UgeworICAgIHRlc3RGYWlsZWQoX2EgKyAiIGlzIG5v
dCBhbiBpbnN0YW5jZSBvZiAiICsgX3R5cGUpOworICB9Cit9CisKIC8vIFZhcmlhbnQgb2Ygc2hv
dWxkQmUoKS0tY29uZmlybXMgdGhhdCByZXN1bHQgb2YgZXZhbChfdG9fZXZhbCkgaXMgd2l0aGlu
CiAvLyBudW1lcmljIF90b2xlcmFuY2Ugb2YgbnVtZXJpYyBfdGFyZ2V0LgogZnVuY3Rpb24gc2hv
dWxkQmVDbG9zZVRvKF90b19ldmFsLCBfdGFyZ2V0LCBfdG9sZXJhbmNlLCBxdWlldCkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5
cGVzLWV4cGVjdGVkLnR4dAppbmRleCA2ODNkZTMyZjYzNGQ4NjFiNTA0NjAwMGEwMTkyNDdiZTE1
Y2FmM2ZiLi40MjEzZmQ0NWE1MTAwYTc0MmIxMTYyYzIyNTc0ZGQzZjRjNzI1YWIzIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBlcy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRvLXJhbmRvbS12YWx1ZXMt
dHlwZXMtZXhwZWN0ZWQudHh0CkBAIC01LDEzICs1LDQ3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFCiAKIFBBU1MgJ2NyeXB0bycgaW4gd2luZG93IGlzIHRydWUKIFBBU1MgJ2dldFJhbmRvbVZh
bHVlcycgaW4gd2luZG93LmNyeXB0byBpcyB0cnVlCi1QQVNTIGNyeXB0by5nZXRSYW5kb21WYWx1
ZXMobmV3IFVpbnQ4QXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KLVBBU1MgY3J5cHRvLmdldFJhbmRv
bVZhbHVlcyhuZXcgSW50OEFycmF5KDMpKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNyeXB0by5nZXRS
YW5kb21WYWx1ZXMobmV3IFVpbnQxNkFycmF5KDMpKSBpcyB1bmRlZmluZWQuCi1QQVNTIGNyeXB0
by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDE2QXJyYXkoMykpIGlzIHVuZGVmaW5lZC4KLVBBU1Mg
Y3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDMyQXJyYXkoMykpIGlzIHVuZGVmaW5lZC4K
LVBBU1MgY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhuZXcgSW50MzJBcnJheSgzKSkgaXMgdW5kZWZp
bmVkLgorUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5
KDMpKSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgYW4gaW5zdGFuY2Ugb2YgVWludDhBcnJh
eQorUEFTUyB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9t
ID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20g
aXMgdmlldworUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQ4QXJy
YXkoMykpIGlzIGRlZmluZWQuCitQQVNTIHJhbmRvbSBpcyBhbiBpbnN0YW5jZSBvZiBJbnQ4QXJy
YXkKK1BBU1MgdmlldyA9IG5ldyBJbnQ4QXJyYXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9t
ID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20g
aXMgdmlldworUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OENs
YW1wZWRBcnJheSgzKSkgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tIGlzIGFuIGluc3RhbmNlIG9m
IFVpbnQ4Q2xhbXBlZEFycmF5CitQQVNTIHZpZXcgPSBuZXcgVWludDhDbGFtcGVkQXJyYXkoMykg
aXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2aWV3KSBp
cyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldworUEFTUyByYW5kb20gPSBjcnlwdG8uZ2V0
UmFuZG9tVmFsdWVzKG5ldyBVaW50MTZBcnJheSgzKSkgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9t
IGlzIGFuIGluc3RhbmNlIG9mIFVpbnQxNkFycmF5CitQQVNTIHZpZXcgPSBuZXcgVWludDE2QXJy
YXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVlcyh2
aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldworUEFTUyByYW5kb20gPSBjcnlw
dG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQxNkFycmF5KDMpKSBpcyBkZWZpbmVkLgorUEFTUyBy
YW5kb20gaXMgYW4gaW5zdGFuY2Ugb2YgSW50MTZBcnJheQorUEFTUyB2aWV3ID0gbmV3IEludDE2
QXJyYXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRvbVZhbHVl
cyh2aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldworUEFTUyByYW5kb20gPSBj
cnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50MzJBcnJheSgzKSkgaXMgZGVmaW5lZC4KK1BB
U1MgcmFuZG9tIGlzIGFuIGluc3RhbmNlIG9mIFVpbnQzMkFycmF5CitQQVNTIHZpZXcgPSBuZXcg
VWludDMyQXJyYXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJhbmRv
bVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldworUEFTUyByYW5k
b20gPSBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBJbnQzMkFycmF5KDMpKSBpcyBkZWZpbmVk
LgorUEFTUyByYW5kb20gaXMgYW4gaW5zdGFuY2Ugb2YgSW50MzJBcnJheQorUEFTUyB2aWV3ID0g
bmV3IEludDMyQXJyYXkoMykgaXMgZGVmaW5lZC4KK1BBU1MgcmFuZG9tID0gY3J5cHRvLmdldFJh
bmRvbVZhbHVlcyh2aWV3KSBpcyBkZWZpbmVkLgorUEFTUyByYW5kb20gaXMgdmlldwogUEFTUyBj
cnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBGbG9hdDMyQXJyYXkoMykpIHRocmV3IGV4Y2VwdGlv
biBFcnJvcjogVHlwZU1pc21hdGNoRXJyb3I6IERPTSBFeGNlcHRpb24gMTcuCitQQVNTIGNyeXB0
by5nZXRSYW5kb21WYWx1ZXMobmV3IEZsb2F0NjRBcnJheSgzKSkgdGhyZXcgZXhjZXB0aW9uIEVy
cm9yOiBUeXBlTWlzbWF0Y2hFcnJvcjogRE9NIEV4Y2VwdGlvbiAxNy4KK1BBU1MgYnVmZmVyID0g
bmV3IFVpbnQ4QXJyYXkoMzIpIGlzIGRlZmluZWQuCitQQVNTIGJ1ZmZlci5idWZmZXIgaXMgZGVm
aW5lZC4KK1BBU1MgdmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIuYnVmZmVyKSBpcyBkZWZpbmVk
LgorUEFTUyBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHZpZXcpIHRocmV3IGV4Y2VwdGlvbiBFcnJv
cjogVHlwZU1pc21hdGNoRXJyb3I6IERPTSBFeGNlcHRpb24gMTcuCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3NlY3VyaXR5L2NyeXB0by1yYW5kb20tdmFsdWVzLXR5cGVzLmh0bWwgYi9MYXlvdXRUZXN0cy9z
ZWN1cml0eS9jcnlwdG8tcmFuZG9tLXZhbHVlcy10eXBlcy5odG1sCmluZGV4IDJmYTVhZWNkMTMz
NDIxNDk2NjZiZmUzNzFkY2YxYTk1NGQ3OTlhODUuLjM3N2M1OTMzZmUxMTJiMGM1MTg0Zjg3ZTIx
NmU3MjdhNTJiNzZmZTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3NlY3VyaXR5L2NyeXB0by1y
YW5kb20tdmFsdWVzLXR5cGVzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc2VjdXJpdHkvY3J5cHRv
LXJhbmRvbS12YWx1ZXMtdHlwZXMuaHRtbApAQCAtMTYsMTQgKzE2LDM4IEBAIGlmICghd2luZG93
LkFycmF5QnVmZmVyKQogc2hvdWxkQmUoIidjcnlwdG8nIGluIHdpbmRvdyIsICJ0cnVlIik7CiBz
aG91bGRCZSgiJ2dldFJhbmRvbVZhbHVlcycgaW4gd2luZG93LmNyeXB0byIsICJ0cnVlIik7CiAK
LXNob3VsZEJlVW5kZWZpbmVkKCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5
KDMpKSIpOwotc2hvdWxkQmVVbmRlZmluZWQoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IElu
dDhBcnJheSgzKSkiKTsKLXNob3VsZEJlVW5kZWZpbmVkKCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVz
KG5ldyBVaW50MTZBcnJheSgzKSkiKTsKLXNob3VsZEJlVW5kZWZpbmVkKCJjcnlwdG8uZ2V0UmFu
ZG9tVmFsdWVzKG5ldyBJbnQxNkFycmF5KDMpKSIpOwotc2hvdWxkQmVVbmRlZmluZWQoImNyeXB0
by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQzMkFycmF5KDMpKSIpOwotc2hvdWxkQmVVbmRlZmlu
ZWQoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDMyQXJyYXkoMykpIik7Ci0KLXNob3Vs
ZFRocm93KCJjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBGbG9hdDMyQXJyYXkoMykpIik7Citm
dW5jdGlvbiBjaGVja0ludGVnZXJUeXBlcygpIHsKKyAgICB2YXIgaW50ZWdlclR5cGVzID0gWwor
ICAgICAgICAiVWludDhBcnJheSIsICJJbnQ4QXJyYXkiLCAiVWludDhDbGFtcGVkQXJyYXkiLAor
ICAgICAgICAiVWludDE2QXJyYXkiLCAiSW50MTZBcnJheSIsCisgICAgICAgICJVaW50MzJBcnJh
eSIsICJJbnQzMkFycmF5IiwKKyAgICBdOworICAgIGludGVnZXJUeXBlcy5mb3JFYWNoKGZ1bmN0
aW9uKGFycmF5VHlwZSkgeworICAgICAgICBzaG91bGRCZURlZmluZWQoInJhbmRvbSA9IGNyeXB0
by5nZXRSYW5kb21WYWx1ZXMobmV3ICIrYXJyYXlUeXBlKyIoMykpIik7CisgICAgICAgIHNob3Vs
ZEJlVHlwZSgicmFuZG9tIiwgYXJyYXlUeXBlKTsKKworICAgICAgICBzaG91bGRCZURlZmluZWQo
InZpZXcgPSBuZXcgIithcnJheVR5cGUrIigzKSIpOworICAgICAgICBzaG91bGRCZURlZmluZWQo
InJhbmRvbSA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXModmlldykiKTsKKyAgICAgICAgc2hvdWxk
QmUoInJhbmRvbSIsICJ2aWV3Iik7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrTm9uSW50
ZWdlclR5cGVzKCkgeworICAgIHZhciBmbG9hdFR5cGVzID0gWworICAgICAgICAiRmxvYXQzMkFy
cmF5IiwgIkZsb2F0NjRBcnJheSIsCisgICAgXTsKKyAgICBmbG9hdFR5cGVzLmZvckVhY2goZnVu
Y3Rpb24oYXJyYXlUeXBlKSB7CisgICAgICAgIHNob3VsZFRocm93KCJjcnlwdG8uZ2V0UmFuZG9t
VmFsdWVzKG5ldyAiK2FycmF5VHlwZSsiKDMpKSIpOworICAgIH0pOworCisgICAgc2hvdWxkQmVE
ZWZpbmVkKCJidWZmZXIgPSBuZXcgVWludDhBcnJheSgzMikiKTsKKyAgICBzaG91bGRCZURlZmlu
ZWQoImJ1ZmZlci5idWZmZXIiKTsKKyAgICBzaG91bGRCZURlZmluZWQoInZpZXcgPSBuZXcgRGF0
YVZpZXcoYnVmZmVyLmJ1ZmZlcikiKTsKKyAgICBzaG91bGRUaHJvdygiY3J5cHRvLmdldFJhbmRv
bVZhbHVlcyh2aWV3KSIpOworfQorCitjaGVja0ludGVnZXJUeXBlcygpOworY2hlY2tOb25JbnRl
Z2VyVHlwZXMoKTsKIAogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iLi4vZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>