<?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>57770</bug_id>
          
          <creation_ts>2011-04-04 11:27:53 -0700</creation_ts>
          <short_desc>Factoring the creation of &apos;FunctionOnly&apos; callbacks in JavaScriptCore</short_desc>
          <delta_ts>2012-09-19 07:17:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>40012</blocked>
    
    <blocked>56586</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Leandro Graciá Gil">leandrogracia</reporter>
          <assigned_to name="Leandro Graciá Gil">leandrogracia</assigned_to>
          <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>steveblock</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>378905</commentid>
    <comment_count>0</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-04 11:27:53 -0700</bug_when>
    <thetext>Make a template of the existing functions to create callbacks from arguments in JSGeolocationCustom.cpp and place it in a common place somewhere else. This method is going to be used in common by Geolocation, the Media Stream API and possibly more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378912</commentid>
    <comment_count>1</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-04 11:32:24 -0700</bug_when>
    <thetext>This is the JavaScriptCore equivalent of https://bugs.webkit.org/show_bug.cgi?id=57760 for V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379613</commentid>
    <comment_count>2</comment_count>
      <attachid>88244</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-05 09:04:47 -0700</bug_when>
    <thetext>Created attachment 88244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379625</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-05 09:20:02 -0700</bug_when>
    <thetext>&gt;     // FIXME: createFunctionOnlyCallback disallows callable objects created via JSC API. It&apos;s not clear what exactly the specification intends to allow.

My understanding is that it&apos;s clear now, see bug 40012 comment 3.

Gavin or Oliver would probably be the best reviewers for this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379628</commentid>
    <comment_count>4</comment_count>
      <attachid>88244</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-05 09:23:36 -0700</bug_when>
    <thetext>Comment on attachment 88244
Patch

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

Since this patch is entirely about refactoring and not a behavior change, stylistic and clarity issues are paramount, more important even than with a bug fix. So please read my comments with that in mind.

I’m going to say review+ but I strongly suggest making at least some changes in response to my comments even though with my review+ that is not formally required.

&gt; Source/WebCore/bindings/js/CallbackUtilities.h:25
&gt; +#ifndef CallbackUtilities_h

We frown on terms like “utilities” and “manager” in our filenames and class names. These  excess words don’t add much clarity and in the case of classes, are a bit of an object oriented programming anti-pattern.

It looks like some have crept over time, which is unfortunate: IDBBindingUtilities, DOMUtility, V8Utilities, c_utility.cpp, JNIUtility, objc_utility, AudioUtilities, ClipboardUtilitiesChromium, ClipboardUtilitiesWin, SVGParserUtilities, InjectedScriptManager, BreakpointManager, TextureManager, ResourceHandleManager. You’ll notice that most of these are on recent additions to WebKit, so probably just folks who didn’t participate in the consensus view that we want to avoid those vague words.

For this header file, I would suggest the name Callback.h or CallbackFunction.h or FunctionOnlyCallback.h.

&gt; Source/WebCore/bindings/js/CallbackUtilities.h:42
&gt; +// &apos;FunctionOnly&apos; is assumed for the created callback. Callable objects created via JSC API are disallowed.

Comments need to answer the question “why?” and this no longer makes it clear that the “callable objects are disallowed” behavior is possibly a bug. I know we still have FIXMEs at the call site, but it seems wrong to make a function that has behavior that’s probably not helpful anywhere, but comment on it in a way that makes it seem deliberate.

So I’d like to see a comment that’s more clear on this point. And I think that having a FIXME at each call site is not really all that helpful. There’s some slight chance that some day we might change one call site and not others, but it’s more likely we’ll fix things in this central location.

Also, I’m something of an expert on this, but I don’t understand what FunctionOnly means. Is this a reference to something in a specification somewhere?

&gt; Source/WebCore/bindings/js/CallbackUtilities.h:53
&gt; +    if ((value.isUndefined() &amp;&amp; (acceptedValues &amp; CallbackAllowUndefined))
&gt; +        || (value.isNull() &amp;&amp; (acceptedValues &amp; CallbackAllowNull)))
&gt; +        return 0;
&gt; +
&gt; +    if (!value.inherits(&amp;JSC::JSFunction::s_info)) {
&gt; +        setDOMException(exec, TYPE_MISMATCH_ERR);
&gt; +        return 0;
&gt; +    }

If performance is an issue, then the checks for undefined and null should go inside the !inherits block. Otherwise we’ll be doing extra checks for them.

The undefined and null checks would be easier to read in separate if statements, with more straightforward formatting without that line break.

&gt; Source/WebCore/bindings/js/CallbackUtilities.h:56
&gt; +    JSC::JSObject* object = asObject(value);
&gt; +    return JSCallbackType::create(object, globalObject);

The local variable here doesn’t add any clarity; I suggest using asObject directly inside the function call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379655</commentid>
    <comment_count>5</comment_count>
      <attachid>88244</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-04-05 09:40:43 -0700</bug_when>
    <thetext>Comment on attachment 88244
Patch

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

&gt;&gt; Source/WebCore/bindings/js/CallbackUtilities.h:42
&gt;&gt; +// &apos;FunctionOnly&apos; is assumed for the created callback. Callable objects created via JSC API are disallowed.
&gt; 
&gt; Comments need to answer the question “why?” and this no longer makes it clear that the “callable objects are disallowed” behavior is possibly a bug. I know we still have FIXMEs at the call site, but it seems wrong to make a function that has behavior that’s probably not helpful anywhere, but comment on it in a way that makes it seem deliberate.
&gt; 
&gt; So I’d like to see a comment that’s more clear on this point. And I think that having a FIXME at each call site is not really all that helpful. There’s some slight chance that some day we might change one call site and not others, but it’s more likely we’ll fix things in this central location.
&gt; 
&gt; Also, I’m something of an expert on this, but I don’t understand what FunctionOnly means. Is this a reference to something in a specification somewhere?

&apos;FunctionOnly&apos; is a WebIDL tag used by Geolocation and MediaStream. There&apos;s ongoing discussion as to how we should handle this in https://bugs.webkit.org/show_bug.cgi?id=40012.

I agree that the FIXME should be in this new helper, not at each call site. The helper creates a FunctionOnly callback, and that won&apos;t change, the question is how to do this.

&gt; Source/WebCore/bindings/js/JSGeolocationCustom.cpp:118
&gt; +        static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), exec-&gt;argument(0), CallbackAllowFunction);

There&apos;s no maximum line length, so there&apos;s no need to break this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379665</commentid>
    <comment_count>6</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-04-05 09:47:12 -0700</bug_when>
    <thetext>&gt; My understanding is that it&apos;s clear now, see bug 40012 comment 3.
&gt; 
&gt; Gavin or Oliver would probably be the best reviewers for this patch.
OK, if there&apos;s consensus we&apos;ll make fix. Are you OK with us doing it after this refactoring is in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379671</commentid>
    <comment_count>7</comment_count>
      <attachid>88260</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-05 09:51:37 -0700</bug_when>
    <thetext>Created attachment 88260
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379677</commentid>
    <comment_count>8</comment_count>
      <attachid>88244</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-05 09:54:35 -0700</bug_when>
    <thetext>Comment on attachment 88244
Patch

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

&gt;&gt; Source/WebCore/bindings/js/CallbackUtilities.h:25
&gt;&gt; +#ifndef CallbackUtilities_h
&gt; 
&gt; We frown on terms like “utilities” and “manager” in our filenames and class names. These  excess words don’t add much clarity and in the case of classes, are a bit of an object oriented programming anti-pattern.
&gt; 
&gt; It looks like some have crept over time, which is unfortunate: IDBBindingUtilities, DOMUtility, V8Utilities, c_utility.cpp, JNIUtility, objc_utility, AudioUtilities, ClipboardUtilitiesChromium, ClipboardUtilitiesWin, SVGParserUtilities, InjectedScriptManager, BreakpointManager, TextureManager, ResourceHandleManager. You’ll notice that most of these are on recent additions to WebKit, so probably just folks who didn’t participate in the consensus view that we want to avoid those vague words.
&gt; 
&gt; For this header file, I would suggest the name Callback.h or CallbackFunction.h or FunctionOnlyCallback.h.

Changed to CallbackFunction.h as this option should keep the previous ordering in the project files.

&gt;&gt;&gt; Source/WebCore/bindings/js/CallbackUtilities.h:42
&gt;&gt;&gt; +// &apos;FunctionOnly&apos; is assumed for the created callback. Callable objects created via JSC API are disallowed.
&gt;&gt; 
&gt;&gt; Comments need to answer the question “why?” and this no longer makes it clear that the “callable objects are disallowed” behavior is possibly a bug. I know we still have FIXMEs at the call site, but it seems wrong to make a function that has behavior that’s probably not helpful anywhere, but comment on it in a way that makes it seem deliberate.
&gt;&gt; 
&gt;&gt; So I’d like to see a comment that’s more clear on this point. And I think that having a FIXME at each call site is not really all that helpful. There’s some slight chance that some day we might change one call site and not others, but it’s more likely we’ll fix things in this central location.
&gt;&gt; 
&gt;&gt; Also, I’m something of an expert on this, but I don’t understand what FunctionOnly means. Is this a reference to something in a specification somewhere?
&gt; 
&gt; &apos;FunctionOnly&apos; is a WebIDL tag used by Geolocation and MediaStream. There&apos;s ongoing discussion as to how we should handle this in https://bugs.webkit.org/show_bug.cgi?id=40012.
&gt; 
&gt; I agree that the FIXME should be in this new helper, not at each call site. The helper creates a FunctionOnly callback, and that won&apos;t change, the question is how to do this.

This &apos;callable objects are disallowed&apos; comes from the spec and has been discussed and solved here: https://bugs.webkit.org/show_bug.cgi?id=40012.
I&apos;m applying the suggested solution and removing that part from the comment.

FunctionOnly is an extended attributed of [Callback] according to the WebIDL specification: http://dev.w3.org/2006/webapi/WebIDL/#Callback

&gt;&gt; Source/WebCore/bindings/js/CallbackUtilities.h:53
&gt;&gt; +    }
&gt; 
&gt; If performance is an issue, then the checks for undefined and null should go inside the !inherits block. Otherwise we’ll be doing extra checks for them.
&gt; 
&gt; The undefined and null checks would be easier to read in separate if statements, with more straightforward formatting without that line break.

Fixed. Undefined and null checks separated. Not moved into the later check since they are not expected to set an exception, but to allow uses like creating callbacks from optional (undefined) arguments.

&gt;&gt; Source/WebCore/bindings/js/CallbackUtilities.h:56
&gt;&gt; +    return JSCallbackType::create(object, globalObject);
&gt; 
&gt; The local variable here doesn’t add any clarity; I suggest using asObject directly inside the function call.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379684</commentid>
    <comment_count>9</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-05 09:55:30 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt;     // FIXME: createFunctionOnlyCallback disallows callable objects created via JSC API. It&apos;s not clear what exactly the specification intends to allow.
&gt; 
&gt; My understanding is that it&apos;s clear now, see bug 40012 comment 3.
&gt; 
&gt; Gavin or Oliver would probably be the best reviewers for this patch.

Applied the solution proposed there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379687</commentid>
    <comment_count>10</comment_count>
      <attachid>88260</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-04-05 09:59:37 -0700</bug_when>
    <thetext>Comment on attachment 88260
Patch

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

&gt; Source/WebCore/bindings/js/CallbackFunction.h:42
&gt; +// &apos;FunctionOnly&apos; is assumed for the created callback.

Let&apos;s make this explicit - &apos;Creates callback objects for callbacks marked as FunctionOnly in WebIDL&apos;.

&gt; Source/WebCore/bindings/js/CallbackFunction.h:52
&gt; +    if (!value.getCallData() != CallTypeNone) {

I think it best to keep the bug fix in a separate patch from this refactoring. You can do the fix in Bug 40012 and do so for V8 and JSC together. In any case, you have an extra &apos;!&apos; here.

&gt; Source/WebCore/bindings/js/JSGeolocationCustom.cpp:117
&gt; +        static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), exec-&gt;argument(0), CallbackAllowFunction);

No need for these line breaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379715</commentid>
    <comment_count>11</comment_count>
      <attachid>88272</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-05 10:29:45 -0700</bug_when>
    <thetext>Created attachment 88272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379716</commentid>
    <comment_count>12</comment_count>
      <attachid>88260</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-05 10:30:12 -0700</bug_when>
    <thetext>Comment on attachment 88260
Patch

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

&gt;&gt; Source/WebCore/bindings/js/CallbackFunction.h:42
&gt;&gt; +// &apos;FunctionOnly&apos; is assumed for the created callback.
&gt; 
&gt; Let&apos;s make this explicit - &apos;Creates callback objects for callbacks marked as FunctionOnly in WebIDL&apos;.

Fixed.

&gt;&gt; Source/WebCore/bindings/js/CallbackFunction.h:52
&gt;&gt; +    if (!value.getCallData() != CallTypeNone) {
&gt; 
&gt; I think it best to keep the bug fix in a separate patch from this refactoring. You can do the fix in Bug 40012 and do so for V8 and JSC together. In any case, you have an extra &apos;!&apos; here.

Done. Restored original contents to separate the refactoring from fixing the problem. This latter task is left to bug 40012.

&gt;&gt; Source/WebCore/bindings/js/JSGeolocationCustom.cpp:117
&gt;&gt; +        static_cast&lt;JSDOMGlobalObject*&gt;(exec-&gt;lexicalGlobalObject()), exec-&gt;argument(0), CallbackAllowFunction);
&gt; 
&gt; No need for these line breaks.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379722</commentid>
    <comment_count>13</comment_count>
      <attachid>88272</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-04-05 10:34:57 -0700</bug_when>
    <thetext>Comment on attachment 88272
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>379799</commentid>
    <comment_count>14</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-05 12:21:02 -0700</bug_when>
    <thetext>Darin, Alexey, any comments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380012</commentid>
    <comment_count>15</comment_count>
      <attachid>88272</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-05 18:10:24 -0700</bug_when>
    <thetext>Comment on attachment 88272
Patch

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

Generally seems OK. A little awkward the way this handles undefined and null, but fine.

&gt; Source/WebCore/bindings/js/CallbackFunction.h:30
&gt; +#include &lt;wtf/Forward.h&gt;

What is wtf/Forward.h needed for? I don’t see anything here that would benefit from including that.

&gt; Source/WebCore/bindings/js/CallbackFunction.h:35
&gt; +    CallbackAllowFunction = 0,

Should probably be named CallbackAllowFunctionOnly. It’s misleading to have it be named AllowFunction when a function will be allowed even if you don’t pass this value!

&gt; Source/WebCore/bindings/js/CallbackFunction.h:57
&gt; +    if (value.isUndefined() &amp;&amp; (acceptedValues &amp; CallbackAllowUndefined))
&gt; +        return 0;
&gt; +
&gt; +    if (value.isNull() &amp;&amp; (acceptedValues &amp; CallbackAllowNull))
&gt; +        return 0;
&gt; +
&gt; +    // FIXME: disallows callable objects created via JSC API. It&apos;s not clear what exactly the specification intends to allow.
&gt; +    // https://bugs.webkit.org/show_bug.cgi?id=40012
&gt; +    if (!value.inherits(&amp;JSC::JSFunction::s_info)) {
&gt; +        setDOMException(exec, TYPE_MISMATCH_ERR);
&gt; +        return 0;
&gt; +    }

There’s no real reason this has to be in the header. If this logic was in a non-template function called by the template function we could make this header include fewer header files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380253</commentid>
    <comment_count>16</comment_count>
      <attachid>88272</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-06 03:44:52 -0700</bug_when>
    <thetext>Comment on attachment 88272
Patch

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

&gt;&gt; Source/WebCore/bindings/js/CallbackFunction.h:30
&gt;&gt; +#include &lt;wtf/Forward.h&gt;
&gt; 
&gt; What is wtf/Forward.h needed for? I don’t see anything here that would benefit from including that.

The return value of the template is a PassRefPtr object.

&gt;&gt; Source/WebCore/bindings/js/CallbackFunction.h:35
&gt;&gt; +    CallbackAllowFunction = 0,
&gt; 
&gt; Should probably be named CallbackAllowFunctionOnly. It’s misleading to have it be named AllowFunction when a function will be allowed even if you don’t pass this value!

I already thought that, but then it makes no sense to write something valid like CallbackAllowFunctionOnly | CallbackAllowNull. Do you think it should be better to have CallbackAllowFunctionOnly since that value is only used in the exclusive cases and ignore it in other situations?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380254</commentid>
    <comment_count>17</comment_count>
      <attachid>88272</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-04-06 04:01:32 -0700</bug_when>
    <thetext>Comment on attachment 88272
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/js/CallbackFunction.h:35
&gt;&gt;&gt; +    CallbackAllowFunction = 0,
&gt;&gt; 
&gt;&gt; Should probably be named CallbackAllowFunctionOnly. It’s misleading to have it be named AllowFunction when a function will be allowed even if you don’t pass this value!
&gt; 
&gt; I already thought that, but then it makes no sense to write something valid like CallbackAllowFunctionOnly | CallbackAllowNull. Do you think it should be better to have CallbackAllowFunctionOnly since that value is only used in the exclusive cases and ignore it in other situations?

Yes, I&apos;d thought about this too. I see problems with both names, so don&apos;t feel strongly either way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380344</commentid>
    <comment_count>18</comment_count>
      <attachid>88272</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-06 07:22:14 -0700</bug_when>
    <thetext>Comment on attachment 88272
Patch

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

&gt;&gt;&gt; Source/WebCore/bindings/js/CallbackFunction.h:30
&gt;&gt;&gt; +#include &lt;wtf/Forward.h&gt;
&gt;&gt; 
&gt;&gt; What is wtf/Forward.h needed for? I don’t see anything here that would benefit from including that.
&gt; 
&gt; The return value of the template is a PassRefPtr object.

Yes, but including Forward.h is insufficient to compile the definition of a function that returns a PassRefPtr. It’s enough to compile a declaration, but not a definition.

The code compiles because JSFunction.h ends up including PassRefPtr.h and your include of Forward.h has no effect.

&gt;&gt;&gt;&gt; Source/WebCore/bindings/js/CallbackFunction.h:35
&gt;&gt;&gt;&gt; +    CallbackAllowFunction = 0,
&gt;&gt;&gt; 
&gt;&gt;&gt; Should probably be named CallbackAllowFunctionOnly. It’s misleading to have it be named AllowFunction when a function will be allowed even if you don’t pass this value!
&gt;&gt; 
&gt;&gt; I already thought that, but then it makes no sense to write something valid like CallbackAllowFunctionOnly | CallbackAllowNull. Do you think it should be better to have CallbackAllowFunctionOnly since that value is only used in the exclusive cases and ignore it in other situations?
&gt; 
&gt; Yes, I&apos;d thought about this too. I see problems with both names, so don&apos;t feel strongly either way.

Yes, I think the real problem is more fundamental. Since these constants are designed to or together it makes no sense to have one with the value 0; you can’t or that with something else in a meaningful way. We’d be better off with no name for the value 0, and with the flags defaulting to 0. Then no caller has to pass 0 explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380349</commentid>
    <comment_count>19</comment_count>
      <attachid>88414</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-06 07:34:06 -0700</bug_when>
    <thetext>Created attachment 88414
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380352</commentid>
    <comment_count>20</comment_count>
      <attachid>88272</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-06 07:35:58 -0700</bug_when>
    <thetext>Comment on attachment 88272
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/bindings/js/CallbackFunction.h:30
&gt;&gt;&gt;&gt; +#include &lt;wtf/Forward.h&gt;
&gt;&gt;&gt; 
&gt;&gt;&gt; What is wtf/Forward.h needed for? I don’t see anything here that would benefit from including that.
&gt;&gt; 
&gt;&gt; The return value of the template is a PassRefPtr object.
&gt; 
&gt; Yes, but including Forward.h is insufficient to compile the definition of a function that returns a PassRefPtr. It’s enough to compile a declaration, but not a definition.
&gt; 
&gt; The code compiles because JSFunction.h ends up including PassRefPtr.h and your include of Forward.h has no effect.

Fixed.

&gt;&gt;&gt;&gt;&gt; Source/WebCore/bindings/js/CallbackFunction.h:35
&gt;&gt;&gt;&gt;&gt; +    CallbackAllowFunction = 0,
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Should probably be named CallbackAllowFunctionOnly. It’s misleading to have it be named AllowFunction when a function will be allowed even if you don’t pass this value!
&gt;&gt;&gt; 
&gt;&gt;&gt; I already thought that, but then it makes no sense to write something valid like CallbackAllowFunctionOnly | CallbackAllowNull. Do you think it should be better to have CallbackAllowFunctionOnly since that value is only used in the exclusive cases and ignore it in other situations?
&gt;&gt; 
&gt;&gt; Yes, I&apos;d thought about this too. I see problems with both names, so don&apos;t feel strongly either way.
&gt; 
&gt; Yes, I think the real problem is more fundamental. Since these constants are designed to or together it makes no sense to have one with the value 0; you can’t or that with something else in a meaningful way. We’d be better off with no name for the value 0, and with the flags defaulting to 0. Then no caller has to pass 0 explicitly.

Fixed. Will prepare a bug to make the V8 version consistent to this.

&gt;&gt; Source/WebCore/bindings/js/CallbackFunction.h:57
&gt;&gt; +    }
&gt; 
&gt; There’s no real reason this has to be in the header. If this logic was in a non-template function called by the template function we could make this header include fewer header files.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380403</commentid>
    <comment_count>21</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-06 08:37:04 -0700</bug_when>
    <thetext>Attachment 88414 did not build on win:
Build output: http://queues.webkit.org/results/8342213</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380434</commentid>
    <comment_count>22</comment_count>
      <attachid>88436</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-06 08:59:42 -0700</bug_when>
    <thetext>Created attachment 88436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380437</commentid>
    <comment_count>23</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-06 09:00:43 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Created an attachment (id=88436) [details]
&gt; Patch

Adding missing CallbackFunction.cpp to JSBindingsAllInOne.cpp. The style error is caused by this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380439</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-06 09:02:16 -0700</bug_when>
    <thetext>Attachment 88436 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1

Source/WebCore/bindings/js/JSBindingsAllInOne.cpp:28:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380479</commentid>
    <comment_count>25</comment_count>
      <attachid>88436</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-06 09:28:47 -0700</bug_when>
    <thetext>Comment on attachment 88436
Patch

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

&gt; Source/WebCore/bindings/js/CallbackFunction.h:52
&gt; +        return JSCallbackType::create(asObject(value), globalObject);

Sorry, the refactoring I asked you for broke the function. This line will assert or crash when asObject is called on a null or undefined value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380482</commentid>
    <comment_count>26</comment_count>
      <attachid>88436</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-04-06 09:29:36 -0700</bug_when>
    <thetext>Comment on attachment 88436
Patch

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

&gt;&gt; Source/WebCore/bindings/js/CallbackFunction.h:52
&gt;&gt; +        return JSCallbackType::create(asObject(value), globalObject);
&gt; 
&gt; Sorry, the refactoring I asked you for broke the function. This line will assert or crash when asObject is called on a null or undefined value.

No, my mistake.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380491</commentid>
    <comment_count>27</comment_count>
      <attachid>88436</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-06 09:37:58 -0700</bug_when>
    <thetext>Comment on attachment 88436
Patch

Rejecting attachment 88436 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=cr-jail-7&apos;, &apos;apply-...&quot; exit_code: 2

Last 500 characters of output:
 file Source/WebCore/WebCore.vcproj/WebCore.vcproj.rej
patching file Source/WebCore/WebCore.xcodeproj/project.pbxproj
patching file Source/WebCore/bindings/js/CallbackFunction.cpp
patching file Source/WebCore/bindings/js/CallbackFunction.h
patching file Source/WebCore/bindings/js/JSBindingsAllInOne.cpp
patching file Source/WebCore/bindings/js/JSGeolocationCustom.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Darin Adler&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/8343223</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380533</commentid>
    <comment_count>28</comment_count>
      <attachid>88461</attachid>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-06 10:11:51 -0700</bug_when>
    <thetext>Created attachment 88461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380534</commentid>
    <comment_count>29</comment_count>
    <who name="Leandro Graciá Gil">leandrogracia</who>
    <bug_when>2011-04-06 10:12:55 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; Created an attachment (id=88461) [details]
&gt; Patch

Rebased to fix the problems with WebCore.vcproj (updated by 83065 before the commit queue).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380538</commentid>
    <comment_count>30</comment_count>
      <attachid>88461</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-04-06 10:14:00 -0700</bug_when>
    <thetext>Comment on attachment 88461
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380540</commentid>
    <comment_count>31</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-06 10:15:04 -0700</bug_when>
    <thetext>Attachment 88461 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1

Source/WebCore/bindings/js/JSBindingsAllInOne.cpp:28:  Found other header before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380555</commentid>
    <comment_count>32</comment_count>
      <attachid>88461</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-06 10:21:22 -0700</bug_when>
    <thetext>Comment on attachment 88461
Patch

Rejecting attachment 88461 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sf&apos;, &apos;ap...&quot; exit_code: 2

Last 500 characters of output:
ects to file Source/WebCore/WebCore.vcproj/WebCore.vcproj.rej
patching file Source/WebCore/WebCore.xcodeproj/project.pbxproj
patching file Source/WebCore/bindings/js/CallbackFunction.cpp
patching file Source/WebCore/bindings/js/CallbackFunction.h
patching file Source/WebCore/bindings/js/JSBindingsAllInOne.cpp
patching file Source/WebCore/bindings/js/JSGeolocationCustom.cpp

Failed to run &quot;[u&apos;/Projects/CommitQueue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Steve Block&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/8347258</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380566</commentid>
    <comment_count>33</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-04-06 10:27:38 -0700</bug_when>
    <thetext>It probably has problems with WebCore.vcproj, and needs a manual commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380569</commentid>
    <comment_count>34</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-06 10:29:35 -0700</bug_when>
    <thetext>Dan Bates has some theories on the vcproj apply problems.  Hopefully we&apos;ll have a fix soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380676</commentid>
    <comment_count>35</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-04-06 11:47:13 -0700</bug_when>
    <thetext>Committed r83079: &lt;http://trac.webkit.org/changeset/83079&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380677</commentid>
    <comment_count>36</comment_count>
      <attachid>88461</attachid>
    <who name="Steve Block">steveblock</who>
    <bug_when>2011-04-06 11:47:55 -0700</bug_when>
    <thetext>Comment on attachment 88461
Patch

Clearing r+ now committed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380742</commentid>
    <comment_count>37</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-04-06 12:57:35 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; Committed r83079: &lt;http://trac.webkit.org/changeset/83079&gt;

And Qt buildfix landed in http://trac.webkit.org/changeset/83086</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88244</attachid>
            <date>2011-04-05 09:04:47 -0700</date>
            <delta_ts>2011-04-05 09:54:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57770-20110405170446.patch</filename>
            <type>text/plain</type>
            <size>14542</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI5NDMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNGViMGU2MGEyMjhmZTVl
YTBjZWYxZGEzZmUxMTY1N2E0NTI2MGYxLi5jNzcwNDZlMjYwMTk1OTdiZTQ2OGE5MDY0NGQ5OTcx
NTY3MDA2MmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDQtMDUgIExlYW5k
cm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZhY3RvcmluZyB0aGUgY3JlYXRp
b24gb2YgJ0Z1bmN0aW9uT25seScgY2FsbGJhY2tzIGluIEphdmFTY3JpcHRDb3JlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3NzAKKworICAgICAg
ICBDcmVhdGUgYSB0ZW1wbGF0ZSBmcm9tIGFuIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgaW4gSlNH
ZW9sb2NhdGlvbkN1c3RvbS5jcHAKKyAgICAgICAgdG8gYmUgdXNlZCBieSB0aGUgY3VzdG9tIGJp
bmRpbmdzIG9mIGJvdGggR2VvbG9jYXRpb24gYW5kIHRoZSBNZWRpYSBTdHJlYW0gQVBJLgorICAg
ICAgICBWOCB2ZXJzaW9uIG9mIHRoaXMgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTc3NjAKKworICAgICAgICBObyBuZXcgdGVzdHMuIExheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL2FyZ3VtZW50LXR5cGVzLmh0bWwKKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWxsYmFja1V0aWxpdGllcy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToKKwogMjAxMS0wNC0wNSAgUGF2ZWwgUG9k
aXZpbG92ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQ
YXZlbCBGZWxkbWFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAxNzZjMTRlNzk5YTg0MmEzNmE3
ZGVhOGQ4MWFiNWFkZDY5YjVjN2M0Li4zZGQwMWZlMGE5ZGUxZDM1ODEzNzRhOTg1YzgwN2M4NjAx
NWMxYzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNzE3LDYgKzcxNyw3IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
bGxiYWNrVXRpbGl0aWVzLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVj
dEhhc2hUYWJsZU1hcC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTU9iamVj
dEhhc2hUYWJsZU1hcC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01XcmFwcGVy
V29ybGQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMjczZDQzM2U5YzdiMTM3NGI2YjQyZjkzNjE3
ODg3ODBlYzQwZDk2My4uMWYzNGYzOTg3ZTRkNGRhYmI5MTZiOWQ4NjA5MjdhMGMyOGNlOGMxYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5wcm8KQEAgLTEyNjgsNiArMTI2OCw3IEBAIHY4IHsKIH0gZWxzZSB7CiAgICAg
SEVBREVSUyArPSBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3Zp
ZGVyLmggXAorICAgICAgICBiaW5kaW5ncy9qcy9DYWxsYmFja1V0aWxpdGllcy5oIFwKICAgICAg
ICAgYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9ET01P
YmplY3RIYXNoVGFibGVNYXAuaCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3Js
ZC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5k
ZXggZjU4ZjdmZWU3YTZjOGM0ZjUzNGM2NjUyZTExMzY1YTc5ZDQwZWNjNC4uZjBjOGM2Njk2YWRh
ZDczZDQ0MTQzM2NiNzNiNWM2MDU3Y2MzZGQ1ZiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTU2NDQ1LDYgKzU2NDQ1LDEwIEBACiAJCQkJCT4K
IAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xDYWxsYmFja1V0aWxpdGllcy5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJ
CQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmNw
cCIKIAkJCQkJPgogCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNWExYzgxODI1YTlkMTA4
ZWRlOTQyNmU1YjliYjNlM2E3ZTRlYjAzLi5iMTdiMWUxMjY2OTRiYzA2OTYyYzFmMTc3ZmU4OTIy
MGUyYmFiOTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC00MDk1LDYgKzQwOTUsNyBAQAogCQlCMDE0OUU3RTExQTRCMjE1MDAx
OTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdBMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdl
UmVzaXplci5oICovOyB9OwogCQlCMDE0OUU3RjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNp
emVyVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIwMTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICov
OyB9OwogCQlCMDE0OUU4MDExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3QzEx
QTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggKi87IH07CisJCUIxRDVFQ0I1
MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFENUVDQjQxMzRCNThEQTAwODdDNzhGIC8q
IENhbGxiYWNrVXRpbGl0aWVzLmggKi87IH07CiAJCUIyMDExMTA3MEFCNzc0MDUwMERCMEU2OCAv
KiBKU1NWR0FFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMDExMTA1MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCAq
LzsgfTsKIAkJQjIwMTExMDgwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMDExMTA2MEFCNzc0
MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmggKi87IH07CiAJCUIyMjI3OTYyMEQwMEJGMjIw
MDcxQjc4MiAvKiBDb2xvckRpc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3N0NCMEQwMEJGMUYwMDcxQjc4MiAvKiBDb2xvckRpc3Rh
bmNlLmNwcCAqLzsgfTsKQEAgLTEwMzYwLDYgKzEwMzYxLDcgQEAKIAkJQjAxNDlFN0ExMUE0QjIx
NTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEFzeW5jSW1hZ2VSZXNpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUIwMTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VSZXNpemVyVGhyZWFkLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdC
IC8qIEltYWdlUmVzaXplclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBJbWFnZVJlc2l6ZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFE
NUVDQjQxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrVXRpbGl0aWVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxiYWNrVXRpbGl0aWVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUIyMDExMTA1MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1NWR0FFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIwMTExMDYwQUI3NzQwNTAwREIw
RTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTU1ZHQUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc3Q0Iw
RDAwQkYxRjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yRGlzdGFuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTc5NjUsNiArMTc5NjcsNyBAQAogCQkJCUJDNEVERUY3MEMwOEY0MTQwMDdF
REQ0OSAvKiBDdXN0b20gKi8sCiAJCQkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERlcml2
ZWQgU291cmNlcyAqLywKIAkJCQlCQ0Q1MzM2MzBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2Ny
aXB0U291cmNlUHJvdmlkZXIuaCAqLywKKwkJCQlCMUQ1RUNCNDEzNEI1OERBMDA4N0M3OEYgLyog
Q2FsbGJhY2tVdGlsaXRpZXMuaCAqLywKIAkJCQk5M0Y4QjMwNjBBMzAwRkVBMDBGNjFBQjggLyog
Q29kZUdlbmVyYXRvckpTLnBtICovLAogCQkJCUJDNTNEQTYxMTE0MzE0QkQwMDBEODE3RSAvKiBE
T01PYmplY3RIYXNoVGFibGVNYXAuY3BwICovLAogCQkJCUJDNTNEQTVGMTE0MzE0MUEwMDBEODE3
RSAvKiBET01PYmplY3RIYXNoVGFibGVNYXAuaCAqLywKQEAgLTIyNzg4LDYgKzIyNzkxLDcgQEAK
IAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFENUVDQjUxMzRCNThEQTAwODdDNzhGIC8qIENhbGxi
YWNrVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NhbGxiYWNrVXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWxsYmFja1V0aWxpdGllcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkNjg5MmQ3NThlYWU2YjE0MmI4
ZGM0MzBhZTVlNWMyMWM0ODJiZTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9DYWxsYmFja1V0aWxpdGllcy5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBDYWxsYmFja1V0aWxpdGllc19oCisjZGVmaW5lIENhbGxiYWNrVXRpbGl0
aWVzX2gKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pT
RnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2VudW0gQ2FsbGJhY2tBbGxvd2VkVmFsdWVGbGFnIHsKKyAgICBDYWxsYmFja0FsbG93
RnVuY3Rpb24gPSAwLAorICAgIENhbGxiYWNrQWxsb3dVbmRlZmluZWQgPSAxLAorICAgIENhbGxi
YWNrQWxsb3dOdWxsID0gMSA8PCAxCit9OworCit0eXBlZGVmIHVuc2lnbmVkIENhbGxiYWNrQWxs
b3dlZFZhbHVlRmxhZ3M7CisKKy8vICdGdW5jdGlvbk9ubHknIGlzIGFzc3VtZWQgZm9yIHRoZSBj
cmVhdGVkIGNhbGxiYWNrLiBDYWxsYWJsZSBvYmplY3RzIGNyZWF0ZWQgdmlhIEpTQyBBUEkgYXJl
IGRpc2FsbG93ZWQuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSlNDYWxsYmFja1R5cGU+CitQYXNzUmVm
UHRyPEpTQ2FsbGJhY2tUeXBlPiBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjayhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHZhbHVlLCBDYWxsYmFja0FsbG93ZWRWYWx1ZUZsYWdzIGFjY2VwdGVkVmFsdWVzKQoreworICAg
IGlmICgodmFsdWUuaXNVbmRlZmluZWQoKSAmJiAoYWNjZXB0ZWRWYWx1ZXMgJiBDYWxsYmFja0Fs
bG93VW5kZWZpbmVkKSkKKyAgICAgICAgfHwgKHZhbHVlLmlzTnVsbCgpICYmIChhY2NlcHRlZFZh
bHVlcyAmIENhbGxiYWNrQWxsb3dOdWxsKSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYg
KCF2YWx1ZS5pbmhlcml0cygmSlNDOjpKU0Z1bmN0aW9uOjpzX2luZm8pKSB7CisgICAgICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKworICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsK
KyAgICByZXR1cm4gSlNDYWxsYmFja1R5cGU6OmNyZWF0ZShvYmplY3QsIGdsb2JhbE9iamVjdCk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENhbGxiYWNrVXRpbGl0
aWVzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1
c3RvbS5jcHAKaW5kZXggMjQ4YWRjZjQ0MTFmOGJlOWM2NmExOTE1ZmZiOTI0ZjQ2ZTUwODhkOS4u
YTYzN2U2MzBlNDY4NTVjN2YyNzAzZjgxODExNWI5M2VkYzYwYmNhOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTI4LDE0
ICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogCisjaW5jbHVkZSAiQ2FsbGJh
Y2tVdGlsaXRpZXMuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJFeGNlcHRp
b25Db2RlLmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJKU0N1c3RvbVBv
c2l0aW9uQ2FsbGJhY2suaCIKICNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFj
ay5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiUG9zaXRpb25PcHRpb25z
LmgiCi0jaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CiAKICNpZiAhRU5BQkxFKENMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikKICNpbmNsdWRlICJHZW9sb2NhdGlvblNlcnZpY2UuaCIKQEAg
LTQ2LDM2ICs0NSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gY3JlYXRlUG9zaXRpb25D
YWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgLy8gVGhlIHNwZWMgc3BlY2lmaWVzICdGdW5jdGlvbk9u
bHknIGZvciB0aGlzIG9iamVjdC4KLSAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBkaXNhbGxvd3Mg
Y2FsbGFibGUgb2JqZWN0cyBjcmVhdGVkIHZpYSBKU0MgQVBJLiBJdCdzIG5vdCBjbGVhciB3aGF0
IGV4YWN0bHkgdGhlIHNwZWNpZmljYXRpb24gaW50ZW5kcyB0byBhbGxvdy4KLSAgICBpZiAoIXZh
bHVlLmluaGVyaXRzKCZKU0Z1bmN0aW9uOjpzX2luZm8pKSB7Ci0gICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0K
LQotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7Ci0gICAgcmV0dXJuIEpT
Q3VzdG9tUG9zaXRpb25DYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZ2xvYmFsT2JqZWN0KTsKLX0K
LQotc3RhdGljIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBjcmVhdGVQb3NpdGlv
bkVycm9yQ2FsbGJhY2soRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQotewotICAgIC8vIEFyZ3VtZW50IGlzIG9wdGlvbmFsICho
ZW5jZSB1bmRlZmluZWQgaXMgYWxsb3dlZCksIGFuZCBudWxsIGlzIGFsbG93ZWQuCi0gICAgaWYg
KHZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8g
VGhlIHNwZWMgc3BlY2lmaWVzICdGdW5jdGlvbk9ubHknIGZvciB0aGlzIG9iamVjdC4KLSAgICAv
LyBGSVhNRTogVGhpcyBjaGVjayBkaXNhbGxvd3MgY2FsbGFibGUgb2JqZWN0cyBjcmVhdGVkIHZp
YSBKU0MgQVBJLiBJdCdzIG5vdCBjbGVhciB3aGF0IGV4YWN0bHkgdGhlIHNwZWNpZmljYXRpb24g
aW50ZW5kcyB0byBhbGxvdy4KLSAgICBpZiAoIXZhbHVlLmluaGVyaXRzKCZKU0Z1bmN0aW9uOjpz
X2luZm8pKSB7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VS
Uik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBh
c09iamVjdCh2YWx1ZSk7Ci0gICAgcmV0dXJuIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
OjpjcmVhdGUob2JqZWN0LCBnbG9iYWxPYmplY3QpOwotfQotCiBzdGF0aWMgUGFzc1JlZlB0cjxQ
b3NpdGlvbk9wdGlvbnM+IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpCiB7CiAgICAgLy8gQ3JlYXRlIGRlZmF1bHQgb3B0aW9ucy4KQEAgLTE0NCwx
MiArMTEzLDE2IEBAIEpTVmFsdWUgSlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyBBcmd1bWVudHM6IFBvc2l0aW9uQ2FsbGJhY2ssIChv
cHRpb25hbClQb3NpdGlvbkVycm9yQ2FsbGJhY2ssIChvcHRpb25hbClQb3NpdGlvbk9wdGlvbnMK
IAotICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNhbGxiYWNrID0gY3JlYXRl
UG9zaXRpb25DYWxsYmFjayhleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICAvLyBG
SVhNRTogY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2sgZGlzYWxsb3dzIGNhbGxhYmxlIG9iamVj
dHMgY3JlYXRlZCB2aWEgSlNDIEFQSS4gSXQncyBub3QgY2xlYXIgd2hhdCBleGFjdGx5IHRoZSBz
cGVjaWZpY2F0aW9uIGludGVuZHMgdG8gYWxsb3cuCisgICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJh
Y2s+IHBvc2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU0N1c3Rv
bVBvc2l0aW9uQ2FsbGJhY2s+KGV4ZWMsCisgICAgICAgIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMCks
IENhbGxiYWNrQWxsb3dGdW5jdGlvbik7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBBU1NFUlQocG9zaXRpb25DYWxsYmFj
ayk7CiAKLSAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2Fs
bGJhY2sgPSBjcmVhdGVQb3NpdGlvbkVycm9yQ2FsbGJhY2soZXhlYywgc3RhdGljX2Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1
bWVudCgxKSk7CisgICAgLy8gRklYTUU6IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrIGRpc2Fs
bG93cyBjYWxsYWJsZSBvYmplY3RzIGNyZWF0ZWQgdmlhIEpTQyBBUEkuIEl0J3Mgbm90IGNsZWFy
IHdoYXQgZXhhY3RseSB0aGUgc3BlY2lmaWNhdGlvbiBpbnRlbmRzIHRvIGFsbG93LgorICAgIFJl
ZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFjayA9IGNyZWF0
ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrPihleGVj
LAorICAgICAgICBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDEpLCBDYWxsYmFja0FsbG93VW5kZWZpbmVk
IHwgQ2FsbGJhY2tBbGxvd051bGwpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTE2NiwxMiArMTM5LDE2IEBAIEpTVmFs
dWUgSlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
Ly8gQXJndW1lbnRzOiBQb3NpdGlvbkNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25FcnJvckNh
bGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25PcHRpb25zCiAKLSAgICBSZWZQdHI8UG9zaXRpb25D
YWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjayA9IGNyZWF0ZVBvc2l0aW9uQ2FsbGJhY2soZXhlYywg
c3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgLy8gRklYTUU6IGNyZWF0ZUZ1bmN0aW9uT25s
eUNhbGxiYWNrIGRpc2FsbG93cyBjYWxsYWJsZSBvYmplY3RzIGNyZWF0ZWQgdmlhIEpTQyBBUEku
IEl0J3Mgbm90IGNsZWFyIHdoYXQgZXhhY3RseSB0aGUgc3BlY2lmaWNhdGlvbiBpbnRlbmRzIHRv
IGFsbG93LgorICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNhbGxiYWNrID0g
Y3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrPihleGVj
LAorICAgICAgICBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDApLCBDYWxsYmFja0FsbG93RnVuY3Rpb24p
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAgICAgQVNTRVJUKHBvc2l0aW9uQ2FsbGJhY2spOwogCi0gICAgUmVmUHRyPFBvc2l0
aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrID0gY3JlYXRlUG9zaXRpb25F
cnJvckNhbGxiYWNrKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIC8vIEZJWE1F
OiBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjayBkaXNhbGxvd3MgY2FsbGFibGUgb2JqZWN0cyBj
cmVhdGVkIHZpYSBKU0MgQVBJLiBJdCdzIG5vdCBjbGVhciB3aGF0IGV4YWN0bHkgdGhlIHNwZWNp
ZmljYXRpb24gaW50ZW5kcyB0byBhbGxvdy4KKyAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxi
YWNrPiBwb3NpdGlvbkVycm9yQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxK
U0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjaz4oZXhlYywKKyAgICAgICAgc3RhdGljX2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5h
cmd1bWVudCgxKSwgQ2FsbGJhY2tBbGxvd1VuZGVmaW5lZCB8IENhbGxiYWNrQWxsb3dOdWxsKTsK
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88260</attachid>
            <date>2011-04-05 09:51:37 -0700</date>
            <delta_ts>2011-04-05 10:30:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57770-20110405175135.patch</filename>
            <type>text/plain</type>
            <size>13841</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI5NDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzNzUwZTdlYzNjMDJkYmQ0
ZmU3MGVhZjg5M2RkYWQ0NjBmZjIzZWU5Li43YWIxYTBmZThiNmQ2MThiNWQyNDczY2E2M2U5M2Ew
YjVlNjc0NDFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDQtMDUgIExlYW5k
cm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZhY3RvcmluZyB0aGUgY3JlYXRp
b24gb2YgJ0Z1bmN0aW9uT25seScgY2FsbGJhY2tzIGluIEphdmFTY3JpcHRDb3JlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3NzAKKworICAgICAg
ICBDcmVhdGUgYSB0ZW1wbGF0ZSBmcm9tIGFuIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgaW4gSlNH
ZW9sb2NhdGlvbkN1c3RvbS5jcHAKKyAgICAgICAgdG8gYmUgdXNlZCBieSB0aGUgY3VzdG9tIGJp
bmRpbmdzIG9mIGJvdGggR2VvbG9jYXRpb24gYW5kIHRoZSBNZWRpYSBTdHJlYW0gQVBJLgorICAg
ICAgICBWOCB2ZXJzaW9uIG9mIHRoaXMgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTc3NjAKKworICAgICAgICBObyBuZXcgdGVzdHMuIExheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL2FyZ3VtZW50LXR5cGVzLmh0bWwKKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2spOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24pOgorCiAyMDExLTA0LTA1ICBOaWtvbGFzIFpp
bW1lcm1hbm4gIDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFk
YW0gUm9iZW4gJiBEaXJrIFNjaHVsemUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDE3NmMxNGU3
OTlhODQyYTM2YTdkZWE4ZDgxYWI1YWRkNjliNWM3YzQuLjc4NDUxNGEwZGNmYjQ5ZjE1NGEwMmEy
MmVkNjMzOWI2ZmNlYjQ3MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC03MTcsNiArNzE3LDcg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9n
ZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCBcCisJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9ET01PYmplY3RIYXNoVGFibGVNYXAuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9ET01PYmplY3RIYXNoVGFibGVNYXAuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
RE9NV3JhcHBlcldvcmxkLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDI3M2Q0MzNlOWM3YjEzNzRi
NmI0MmY5MzYxNzg4NzgwZWM0MGQ5NjMuLjM0MWY4MDFmNDE3ZDY1MzY4OGUyM2QzNTMxYTM0ZTUz
NDYxZDVmNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xMjY4LDYgKzEyNjgsNyBAQCB2OCB7CiB9IGVs
c2UgewogICAgIEhFQURFUlMgKz0gXAogICAgICAgICBiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRT
b3VyY2VQcm92aWRlci5oIFwKKyAgICAgICAgYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5o
IFwKICAgICAgICAgYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmggXAogICAgICAgICBiaW5kaW5n
cy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0RPTVdy
YXBwZXJXb3JsZC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKaW5kZXggZjU4ZjdmZWU3YTZjOGM0ZjUzNGM2NjUyZTExMzY1YTc5ZDQwZWNjNC4uOWZk
ZmQzMjE1YmZiZWE1YTFjZjAxOGZhMDM5MTc2MTFmOWY0N2I1ZiAxMDA3NTUKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTU2NDQ1LDYgKzU2NDQ1LDEwIEBA
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxi
aW5kaW5nc1xqc1xDYWxsYmFja0Z1bmN0aW9uLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJ
PEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xET01PYmplY3RIYXNoVGFi
bGVNYXAuY3BwIgogCQkJCQk+CiAJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDE1YTFjODE4
MjVhOWQxMDhlZGU5NDI2ZTViOWJiM2UzYTdlNGViMDMuLmFlMDQ5Y2VkYWMwOTZlMzc3MjNhMDFm
MzJiZDkyMjhmYmY0ZjM3NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQwOTUsNiArNDA5NSw3IEBACiAJCUIwMTQ5RTdFMTFB
NEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFz
eW5jSW1hZ2VSZXNpemVyLmggKi87IH07CiAJCUIwMTQ5RTdGMTFBNEIyMTUwMDE5NkE3QiAvKiBJ
bWFnZVJlc2l6ZXJUaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjAxNDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVh
ZC5jcHAgKi87IH07CiAJCUIwMTQ5RTgwMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJU
aHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIw
MTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsKKwkJ
QjFENUVDQjUxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxRDVFQ0I0MTM0QjU4REEwMDg3
Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggKi87IH07CiAJCUIyMDExMTA3MEFCNzc0MDUwMERC
MEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMDExMTA1MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50
LmNwcCAqLzsgfTsKIAkJQjIwMTExMDgwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMDExMTA2
MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmggKi87IH07CiAJCUIyMjI3OTYyMEQw
MEJGMjIwMDcxQjc4MiAvKiBDb2xvckRpc3RhbmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3N0NCMEQwMEJGMUYwMDcxQjc4MiAvKiBDb2xv
ckRpc3RhbmNlLmNwcCAqLzsgfTsKQEAgLTEwMzYwLDYgKzEwMzYxLDcgQEAKIAkJQjAxNDlFN0Ex
MUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEFzeW5jSW1hZ2VSZXNpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUIwMTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW1hZ2VSZXNpemVyVGhy
ZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjAxNDlFN0MxMUE0QjIxNTAw
MTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZVJlc2l6ZXJUaHJlYWQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQjFENUVDQjQxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbGJhY2tGdW5jdGlvbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMjAxMTEwNTBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBRWxl
bWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMDExMTA2MEFCNzc0MDUw
MERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU1NWR0FFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3
N0NCMEQwMEJGMUYwMDcxQjc4MiAvKiBDb2xvckRpc3RhbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb2xvckRpc3RhbmNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE3OTY1LDYgKzE3OTY3LDcgQEAKIAkJCQlCQzRFREVGNzBDMDhGNDE0
MDA3RURENDkgLyogQ3VzdG9tICovLAogCQkJCTE0REZCMzNGMEE3REY3NjMwMDE4Rjc2OSAvKiBE
ZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hl
ZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggKi8sCisJCQkJQjFENUVDQjQxMzRCNThEQTAwODdDNzhG
IC8qIENhbGxiYWNrRnVuY3Rpb24uaCAqLywKIAkJCQk5M0Y4QjMwNjBBMzAwRkVBMDBGNjFBQjgg
LyogQ29kZUdlbmVyYXRvckpTLnBtICovLAogCQkJCUJDNTNEQTYxMTE0MzE0QkQwMDBEODE3RSAv
KiBET01PYmplY3RIYXNoVGFibGVNYXAuY3BwICovLAogCQkJCUJDNTNEQTVGMTE0MzE0MUEwMDBE
ODE3RSAvKiBET01PYmplY3RIYXNoVGFibGVNYXAuaCAqLywKQEAgLTIyNzg4LDYgKzIyNzkxLDcg
QEAKIAkJCQk5M0YxOTlFRDA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3Nvci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29y
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0Zp
bHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFENUVDQjUxMzRCNThEQTAwODdDNzhGIC8qIENh
bGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1MmVmMzczOGJlZDkyMmY2Y2I4
NzE5NGNlYmJlMTI0YzExNzg5MjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIENhbGxiYWNrRnVuY3Rpb25faAorI2RlZmluZSBDYWxsYmFja0Z1bmN0aW9u
X2gKKworI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTRnVu
Y3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2VudW0gQ2FsbGJhY2tBbGxvd2VkVmFsdWVGbGFnIHsKKyAgICBDYWxsYmFja0FsbG93RnVu
Y3Rpb24gPSAwLAorICAgIENhbGxiYWNrQWxsb3dVbmRlZmluZWQgPSAxLAorICAgIENhbGxiYWNr
QWxsb3dOdWxsID0gMSA8PCAxCit9OworCit0eXBlZGVmIHVuc2lnbmVkIENhbGxiYWNrQWxsb3dl
ZFZhbHVlRmxhZ3M7CisKKy8vICdGdW5jdGlvbk9ubHknIGlzIGFzc3VtZWQgZm9yIHRoZSBjcmVh
dGVkIGNhbGxiYWNrLgordGVtcGxhdGUgPHR5cGVuYW1lIEpTQ2FsbGJhY2tUeXBlPgorUGFzc1Jl
ZlB0cjxKU0NhbGxiYWNrVHlwZT4gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2soSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSB2YWx1ZSwgQ2FsbGJhY2tBbGxvd2VkVmFsdWVGbGFncyBhY2NlcHRlZFZhbHVlcykKK3sKKyAg
ICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSAmJiAoYWNjZXB0ZWRWYWx1ZXMgJiBDYWxsYmFja0Fs
bG93VW5kZWZpbmVkKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAodmFsdWUuaXNOdWxs
KCkgJiYgKGFjY2VwdGVkVmFsdWVzICYgQ2FsbGJhY2tBbGxvd051bGwpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIGlmICghdmFsdWUuZ2V0Q2FsbERhdGEoKSAhPSBDYWxsVHlwZU5vbmUpIHsK
KyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcmV0dXJuIEpTQ2FsbGJhY2tUeXBlOjpjcmVhdGUo
YXNPYmplY3QodmFsdWUpLCBnbG9iYWxPYmplY3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBDYWxsYmFja0Z1bmN0aW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggMjQ4YWRjZjQ0MTFm
OGJlOWM2NmExOTE1ZmZiOTI0ZjQ2ZTUwODhkOS4uNWY3YTg2NDNhOTdmNWY3Y2E3YjkwYzMxMjEy
NjdjMGNiODNlYjQ3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNH
ZW9sb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNH
ZW9sb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTI4LDE0ICsyOCwxMyBAQAogCiAjaWYgRU5BQkxFKEdF
T0xPQ0FUSU9OKQogCisjaW5jbHVkZSAiQ2FsbGJhY2tGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkRP
TVdpbmRvdy5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJHZW9sb2Nh
dGlvbi5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIgogI2luY2x1ZGUg
IkpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cu
aCIKICNpbmNsdWRlICJQb3NpdGlvbk9wdGlvbnMuaCIKLSNpbmNsdWRlIDxydW50aW1lL0pTRnVu
Y3Rpb24uaD4KIAogI2lmICFFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogI2luY2x1
ZGUgIkdlb2xvY2F0aW9uU2VydmljZS5oIgpAQCAtNDYsMzYgKzQ1LDYgQEAgdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgUGFzc1JlZlB0cjxQb3Np
dGlvbkNhbGxiYWNrPiBjcmVhdGVQb3NpdGlvbkNhbGxiYWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKLXsKLSAgICAvLyBU
aGUgc3BlYyBzcGVjaWZpZXMgJ0Z1bmN0aW9uT25seScgZm9yIHRoaXMgb2JqZWN0LgotICAgIC8v
IEZJWE1FOiBUaGlzIGNoZWNrIGRpc2FsbG93cyBjYWxsYWJsZSBvYmplY3RzIGNyZWF0ZWQgdmlh
IEpTQyBBUEkuIEl0J3Mgbm90IGNsZWFyIHdoYXQgZXhhY3RseSB0aGUgc3BlY2lmaWNhdGlvbiBp
bnRlbmRzIHRvIGFsbG93LgotICAgIGlmICghdmFsdWUuaW5oZXJpdHMoJkpTRnVuY3Rpb246OnNf
aW5mbykpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJS
KTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KHZhbHVlKTsKLSAgICByZXR1cm4gSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpjcmVh
dGUob2JqZWN0LCBnbG9iYWxPYmplY3QpOwotfQotCi1zdGF0aWMgUGFzc1JlZlB0cjxQb3NpdGlv
bkVycm9yQ2FsbGJhY2s+IGNyZWF0ZVBvc2l0aW9uRXJyb3JDYWxsYmFjayhFeGVjU3RhdGUqIGV4
ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCi17Ci0g
ICAgLy8gQXJndW1lbnQgaXMgb3B0aW9uYWwgKGhlbmNlIHVuZGVmaW5lZCBpcyBhbGxvd2VkKSwg
YW5kIG51bGwgaXMgYWxsb3dlZC4KLSAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBUaGUgc3BlYyBzcGVjaWZpZXMgJ0Z1bmN0aW9u
T25seScgZm9yIHRoaXMgb2JqZWN0LgotICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGRpc2FsbG93
cyBjYWxsYWJsZSBvYmplY3RzIGNyZWF0ZWQgdmlhIEpTQyBBUEkuIEl0J3Mgbm90IGNsZWFyIHdo
YXQgZXhhY3RseSB0aGUgc3BlY2lmaWNhdGlvbiBpbnRlbmRzIHRvIGFsbG93LgotICAgIGlmICgh
dmFsdWUuaW5oZXJpdHMoJkpTRnVuY3Rpb246OnNfaW5mbykpIHsKLSAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
fQotCi0gICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKLSAgICByZXR1cm4g
SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGdsb2JhbE9iamVj
dCk7Ci19Ci0KIHN0YXRpYyBQYXNzUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gY3JlYXRlUG9zaXRp
b25PcHRpb25zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICAvLyBDcmVh
dGUgZGVmYXVsdCBvcHRpb25zLgpAQCAtMTQ0LDEyICsxMTMsMTQgQEAgSlNWYWx1ZSBKU0dlb2xv
Y2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oRXhlY1N0YXRlKiBleGVjKQogewogICAgIC8vIEFy
Z3VtZW50czogUG9zaXRpb25DYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uRXJyb3JDYWxsYmFj
aywgKG9wdGlvbmFsKVBvc2l0aW9uT3B0aW9ucwogCi0gICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJh
Y2s+IHBvc2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVQb3NpdGlvbkNhbGxiYWNrKGV4ZWMsIHN0YXRp
Y19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwg
ZXhlYy0+YXJndW1lbnQoMCkpOworICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlv
bkNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNDdXN0b21Qb3NpdGlvbkNh
bGxiYWNrPihleGVjLAorICAgICAgICBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDApLCBDYWxsYmFja0Fs
bG93RnVuY3Rpb24pOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgQVNTRVJUKHBvc2l0aW9uQ2FsbGJhY2spOwogCi0gICAg
UmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrID0gY3Jl
YXRlUG9zaXRpb25FcnJvckNhbGxiYWNrKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMSkpOwor
ICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFjayA9
IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
PihleGVjLAorICAgICAgICBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDEpLCBDYWxsYmFja0FsbG93VW5k
ZWZpbmVkIHwgQ2FsbGJhY2tBbGxvd051bGwpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKQEAgLTE2NiwxMiArMTM3LDE0IEBA
IEpTVmFsdWUgSlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgLy8gQXJndW1lbnRzOiBQb3NpdGlvbkNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25F
cnJvckNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25PcHRpb25zCiAKLSAgICBSZWZQdHI8UG9z
aXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjayA9IGNyZWF0ZVBvc2l0aW9uQ2FsbGJhY2so
ZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJh
Y2s+IHBvc2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU0N1c3Rv
bVBvc2l0aW9uQ2FsbGJhY2s+KGV4ZWMsCisgICAgICAgIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMCks
IENhbGxiYWNrQWxsb3dGdW5jdGlvbik7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBBU1NFUlQocG9zaXRpb25DYWxsYmFj
ayk7CiAKLSAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2Fs
bGJhY2sgPSBjcmVhdGVQb3NpdGlvbkVycm9yQ2FsbGJhY2soZXhlYywgc3RhdGljX2Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1
bWVudCgxKSk7CisgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJv
ckNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNDdXN0b21Qb3NpdGlvbkVy
cm9yQ2FsbGJhY2s+KGV4ZWMsCisgICAgICAgIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMSksIENhbGxi
YWNrQWxsb3dVbmRlZmluZWQgfCBDYWxsYmFja0FsbG93TnVsbCk7CiAgICAgaWYgKGV4ZWMtPmhh
ZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88272</attachid>
            <date>2011-04-05 10:29:45 -0700</date>
            <delta_ts>2011-04-06 07:35:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57770-20110405182943.patch</filename>
            <type>text/plain</type>
            <size>13992</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI5NTIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2OTgyYTc5YTAxOWY1N2Ni
ZmEzMmVhYTdhNDQ3Yjk5MmQ1MDZmYzdjLi5mZTEyZTE1ZDcxMDhiMTRkNWEwMWQ3ZWIzZGIzYWRk
OGNlMWFiNjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDQtMDUgIExlYW5k
cm8gR3JhY2lhIEdpbCAgPGxlYW5kcm9ncmFjaWFAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZhY3RvcmluZyB0aGUgY3JlYXRp
b24gb2YgJ0Z1bmN0aW9uT25seScgY2FsbGJhY2tzIGluIEphdmFTY3JpcHRDb3JlLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTc3NzAKKworICAgICAg
ICBDcmVhdGUgYSB0ZW1wbGF0ZSBmcm9tIGFuIGV4aXN0aW5nIGZ1bmN0aW9uYWxpdHkgaW4gSlNH
ZW9sb2NhdGlvbkN1c3RvbS5jcHAKKyAgICAgICAgdG8gYmUgdXNlZCBieSB0aGUgY3VzdG9tIGJp
bmRpbmdzIG9mIGJvdGggR2VvbG9jYXRpb24gYW5kIHRoZSBNZWRpYSBTdHJlYW0gQVBJLgorICAg
ICAgICBWOCB2ZXJzaW9uIG9mIHRoaXMgYnVnOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTc3NjAKKworICAgICAgICBObyBuZXcgdGVzdHMuIExheW91dFRlc3RzL2Zh
c3QvZG9tL0dlb2xvY2F0aW9uL2FyZ3VtZW50LXR5cGVzLmh0bWwKKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2spOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24pOgorCiAyMDExLTA0LTA0IE1PUklUQSBIYWpp
bWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBO
aXdhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCAxNzZjMTRlNzk5YTg0MmEzNmE3ZGVhOGQ4MWFi
NWFkZDY5YjVjN2M0Li43ODQ1MTRhMGRjZmI0OWYxNTRhMDJhMjJlZDYzMzliNmZjZWI0NzMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNzE3LDYgKzcxNyw3IEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxl
ZEZlYXR1cmVzLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNv
dXJjZVByb3ZpZGVyLmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVu
Y3Rpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxl
TWFwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxl
TWFwLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnBybwppbmRleCAyNzNkNDMzZTljN2IxMzc0YjZiNDJmOTM2MTc4ODc4MGVjNDBk
OTYzLi4zNDFmODAxZjQxN2Q2NTM2ODhlMjNkMzUzMWEzNGU1MzQ2MWQ1ZjVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwpAQCAtMTI2OCw2ICsxMjY4LDcgQEAgdjggewogfSBlbHNlIHsKICAgICBIRUFERVJTICs9
IFwKICAgICAgICAgYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCBcCisg
ICAgICAgIGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uaCBcCiAgICAgICAgIGJpbmRpbmdz
L2pzL0dDQ29udHJvbGxlci5oIFwKICAgICAgICAgYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRh
YmxlTWFwLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuaCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGY1OGY3ZmVl
N2E2YzhjNGY1MzRjNjY1MmUxMTM2NWE3OWQ0MGVjYzQuLjlmZGZkMzIxNWJmYmVhNWExY2YwMThm
YTAzOTE3NjExZjlmNDdiNWYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCkBAIC01NjQ0NSw2ICs1NjQ0NSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxl
PgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcQ2FsbGJhY2tG
dW5jdGlvbi5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cYmluZGluZ3NcanNcRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmNwcCIKIAkJCQkJPgog
CQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNWExYzgxODI1YTlkMTA4ZWRlOTQyNmU1Yjli
YjNlM2E3ZTRlYjAzLi5hZTA0OWNlZGFjMDk2ZTM3NzIzYTAxZjMyYmQ5MjI4ZmJmNGYzNzc5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00MDk1LDYgKzQwOTUsNyBAQAogCQlCMDE0OUU3RTExQTRCMjE1MDAxOTZBN0IgLyogQXN5
bmNJbWFnZVJlc2l6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEIwMTQ5RTdBMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oICov
OyB9OwogCQlCMDE0OUU3RjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdC
MTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovOyB9OwogCQlCMDE0
OUU4MDExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3QzExQTRCMjE1MDAxOTZB
N0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggKi87IH07CisJCUIxRDVFQ0I1MTM0QjU4REEwMDg3
Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMUQ1RUNCNDEzNEI1OERBMDA4N0M3OEYgLyogQ2FsbGJhY2tGdW5j
dGlvbi5oICovOyB9OwogCQlCMjAxMTEwNzBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjAx
MTEwNTBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5jcHAgKi87IH07CiAJCUIyMDEx
MTA4MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjAxMTEwNjBBQjc3NDA1MDBEQjBFNjggLyog
SlNTVkdBRWxlbWVudC5oICovOyB9OwogCQlCMjIyNzk2MjBEMDBCRjIyMDA3MUI3ODIgLyogQ29s
b3JEaXN0YW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCMjIyNzdDQjBEMDBCRjFGMDA3MUI3ODIgLyogQ29sb3JEaXN0YW5jZS5jcHAgKi87IH07
CkBAIC0xMDM2MCw2ICsxMDM2MSw3IEBACiAJCUIwMTQ5RTdBMTFBNEIyMTUwMDE5NkE3QiAvKiBB
c3luY0ltYWdlUmVzaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBc3lu
Y0ltYWdlUmVzaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMDE0OUU3QjEx
QTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzaXplclRocmVhZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUIwMTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6
ZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW1hZ2VSZXNpemVy
VGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIxRDVFQ0I0MTM0QjU4REEw
MDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENhbGxiYWNrRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCMjAxMTEwNjBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBRWxlbWVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzdDQjBEMDBCRjFGMDA3MUI3ODIg
LyogQ29sb3JEaXN0YW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQ29sb3JEaXN0YW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzk2
NSw2ICsxNzk2Nyw3IEBACiAJCQkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1c3RvbSAq
LywKIAkJCQkxNERGQjMzRjBBN0RGNzYzMDAxOEY3NjkgLyogRGVyaXZlZCBTb3VyY2VzICovLAog
CQkJCUJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRl
ci5oICovLAorCQkJCUIxRDVFQ0I0MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9u
LmggKi8sCiAJCQkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3JKUy5w
bSAqLywKIAkJCQlCQzUzREE2MTExNDMxNEJEMDAwRDgxN0UgLyogRE9NT2JqZWN0SGFzaFRhYmxl
TWFwLmNwcCAqLywKIAkJCQlCQzUzREE1RjExNDMxNDFBMDAwRDgxN0UgLyogRE9NT2JqZWN0SGFz
aFRhYmxlTWFwLmggKi8sCkBAIC0yMjc4OCw2ICsyMjc5MSw3IEBACiAJCQkJOTNGMTk5RUQwODI0
NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQkU1
MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk3N0UyRTBGMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCUIxRDVFQ0I1MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxi
YWNrRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44Mjg4NzZjY2M5OTcxMWY0MWZkN2JlNTNiYmRlMWMzN2YxODViYzkx
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbGJhY2tG
dW5jdGlvbi5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDYWxsYmFj
a0Z1bmN0aW9uX2gKKyNkZWZpbmUgQ2FsbGJhY2tGdW5jdGlvbl9oCisKKyNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIENhbGxiYWNrQWxs
b3dlZFZhbHVlRmxhZyB7CisgICAgQ2FsbGJhY2tBbGxvd0Z1bmN0aW9uID0gMCwKKyAgICBDYWxs
YmFja0FsbG93VW5kZWZpbmVkID0gMSwKKyAgICBDYWxsYmFja0FsbG93TnVsbCA9IDEgPDwgMQor
fTsKKwordHlwZWRlZiB1bnNpZ25lZCBDYWxsYmFja0FsbG93ZWRWYWx1ZUZsYWdzOworCisvLyBD
cmVhdGVzIGNhbGxiYWNrIG9iamVjdHMgZm9yIGNhbGxiYWNrcyBtYXJrZWQgYXMgRnVuY3Rpb25P
bmx5IGluIFdlYklETC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBKU0NhbGxiYWNrVHlwZT4KK1Bhc3NS
ZWZQdHI8SlNDYWxsYmFja1R5cGU+IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrKEpTQzo6RXhl
Y1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgdmFsdWUsIENhbGxiYWNrQWxsb3dlZFZhbHVlRmxhZ3MgYWNjZXB0ZWRWYWx1ZXMpCit7Cisg
ICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkgJiYgKGFjY2VwdGVkVmFsdWVzICYgQ2FsbGJhY2tB
bGxvd1VuZGVmaW5lZCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKHZhbHVlLmlzTnVs
bCgpICYmIChhY2NlcHRlZFZhbHVlcyAmIENhbGxiYWNrQWxsb3dOdWxsKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICAvLyBGSVhNRTogZGlzYWxsb3dzIGNhbGxhYmxlIG9iamVjdHMgY3JlYXRl
ZCB2aWEgSlNDIEFQSS4gSXQncyBub3QgY2xlYXIgd2hhdCBleGFjdGx5IHRoZSBzcGVjaWZpY2F0
aW9uIGludGVuZHMgdG8gYWxsb3cuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQwMDEyCisgICAgaWYgKCF2YWx1ZS5pbmhlcml0cygmSlNDOjpKU0Z1bmN0
aW9uOjpzX2luZm8pKSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01B
VENIX0VSUik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHJldHVybiBKU0NhbGxi
YWNrVHlwZTo6Y3JlYXRlKGFzT2JqZWN0KHZhbHVlKSwgZ2xvYmFsT2JqZWN0KTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ2FsbGJhY2tGdW5jdGlvbl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCmlu
ZGV4IDI0OGFkY2Y0NDExZjhiZTljNjZhMTkxNWZmYjkyNGY0NmU1MDg4ZDkuLmZlNTczYmEzNjZh
YmQ2MGU3N2ViMTExMGRmYjEwOTNjNTk3ZTIwOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCkBAIC0yOCwxNCArMjgsMTMgQEAK
IAogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKIAorI2luY2x1ZGUgIkNhbGxiYWNrRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAj
aW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uQ2FsbGJh
Y2suaCIKICNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIgogI2luY2x1
ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiUG9zaXRpb25PcHRpb25zLmgiCi0jaW5jbHVk
ZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CiAKICNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9M
T0NBVElPTikKICNpbmNsdWRlICJHZW9sb2NhdGlvblNlcnZpY2UuaCIKQEAgLTQ2LDM2ICs0NSw2
IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gY3JlYXRlUG9zaXRpb25DYWxsYmFjayhFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCi17Ci0gICAgLy8gVGhlIHNwZWMgc3BlY2lmaWVzICdGdW5jdGlvbk9ubHknIGZvciB0aGlz
IG9iamVjdC4KLSAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBkaXNhbGxvd3MgY2FsbGFibGUgb2Jq
ZWN0cyBjcmVhdGVkIHZpYSBKU0MgQVBJLiBJdCdzIG5vdCBjbGVhciB3aGF0IGV4YWN0bHkgdGhl
IHNwZWNpZmljYXRpb24gaW50ZW5kcyB0byBhbGxvdy4KLSAgICBpZiAoIXZhbHVlLmluaGVyaXRz
KCZKU0Z1bmN0aW9uOjpzX2luZm8pKSB7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBU
WVBFX01JU01BVENIX0VSUik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7Ci0gICAgcmV0dXJuIEpTQ3VzdG9tUG9zaXRp
b25DYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotc3RhdGljIFBh
c3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBjcmVhdGVQb3NpdGlvbkVycm9yQ2FsbGJh
Y2soRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQotewotICAgIC8vIEFyZ3VtZW50IGlzIG9wdGlvbmFsIChoZW5jZSB1bmRlZmlu
ZWQgaXMgYWxsb3dlZCksIGFuZCBudWxsIGlzIGFsbG93ZWQuCi0gICAgaWYgKHZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gVGhlIHNwZWMgc3Bl
Y2lmaWVzICdGdW5jdGlvbk9ubHknIGZvciB0aGlzIG9iamVjdC4KLSAgICAvLyBGSVhNRTogVGhp
cyBjaGVjayBkaXNhbGxvd3MgY2FsbGFibGUgb2JqZWN0cyBjcmVhdGVkIHZpYSBKU0MgQVBJLiBJ
dCdzIG5vdCBjbGVhciB3aGF0IGV4YWN0bHkgdGhlIHNwZWNpZmljYXRpb24gaW50ZW5kcyB0byBh
bGxvdy4KLSAgICBpZiAoIXZhbHVlLmluaGVyaXRzKCZKU0Z1bmN0aW9uOjpzX2luZm8pKSB7Ci0g
ICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1
ZSk7Ci0gICAgcmV0dXJuIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUob2Jq
ZWN0LCBnbG9iYWxPYmplY3QpOwotfQotCiBzdGF0aWMgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlv
bnM+IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiB7CiAgICAgLy8gQ3JlYXRlIGRlZmF1bHQgb3B0aW9ucy4KQEAgLTE0NCwxMiArMTEzLDEyIEBA
IEpTVmFsdWUgSlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICAvLyBBcmd1bWVudHM6IFBvc2l0aW9uQ2FsbGJhY2ssIChvcHRpb25hbClQb3Np
dGlvbkVycm9yQ2FsbGJhY2ssIChvcHRpb25hbClQb3NpdGlvbk9wdGlvbnMKIAotICAgIFJlZlB0
cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNhbGxiYWNrID0gY3JlYXRlUG9zaXRpb25DYWxs
YmFjayhleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBSZWZQdHI8UG9zaXRpb25D
YWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpT
Q3VzdG9tUG9zaXRpb25DYWxsYmFjaz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgwKSwgQ2Fs
bGJhY2tBbGxvd0Z1bmN0aW9uKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIEFTU0VSVChwb3NpdGlvbkNhbGxiYWNrKTsK
IAotICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFj
ayA9IGNyZWF0ZVBvc2l0aW9uRXJyb3JDYWxsYmFjayhleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50
KDEpKTsKKyAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2Fs
bGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU0N1c3RvbVBvc2l0aW9uRXJyb3JD
YWxsYmFjaz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgxKSwgQ2FsbGJhY2tBbGxvd1VuZGVm
aW5lZCB8IENhbGxiYWNrQWxsb3dOdWxsKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBAIC0xNjYsMTIgKzEzNSwxMiBAQCBK
U1ZhbHVlIEpTR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIC8vIEFyZ3VtZW50czogUG9zaXRpb25DYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uRXJy
b3JDYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uT3B0aW9ucwogCi0gICAgUmVmUHRyPFBvc2l0
aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVQb3NpdGlvbkNhbGxiYWNrKGV4
ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNr
PiBwb3NpdGlvbkNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNDdXN0b21Q
b3NpdGlvbkNhbGxiYWNrPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDApLCBDYWxsYmFja0Fs
bG93RnVuY3Rpb24pOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgQVNTRVJUKHBvc2l0aW9uQ2FsbGJhY2spOwogCi0gICAg
UmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrID0gY3Jl
YXRlUG9zaXRpb25FcnJvckNhbGxiYWNrKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMSkpOwor
ICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFjayA9
IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
PihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDEpLCBDYWxsYmFja0FsbG93VW5kZWZpbmVkIHwg
Q2FsbGJhY2tBbGxvd051bGwpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88414</attachid>
            <date>2011-04-06 07:34:06 -0700</date>
            <delta_ts>2011-04-06 08:59:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57770-20110406153404.patch</filename>
            <type>text/plain</type>
            <size>20159</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwNDUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Fu
ZHJvaWQuanNjYmluZGluZ3MubWsgYi9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdz
Lm1rCmluZGV4IDVlNWUzMGY0MzNiMTlmYTdkMDk4ZjYzNjEyNWM2ZWMyNThkMzIwNjIuLmE3NDNh
N2JlNGY4ZjE2Y2Q5ZWE3YWVkZmVlYjcyNzc5Mzc3MjhmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9p
ZC5qc2NiaW5kaW5ncy5tawpAQCAtNTYsNiArNTYsNyBAQCBCSU5ESU5HX0NfSU5DTFVERVMgOj0g
XAogCSQoYmFzZV9pbnRlcm1lZGlhdGVzKS9Tb3VyY2UvV2ViQ29yZS94bWwKIAogTE9DQUxfU1JD
X0ZJTEVTICs9IFwKKwliaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcCBcCiAJYmluZGlu
Z3MvanMvR0NDb250cm9sbGVyLmNwcCBcCiAJYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGll
cy5jcHAgXAogCWJpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA2OWM2N2UyNjZmNDZlNzZiYjBlYmQ4ZGE5NzhmYjU0ZjkyMGRkNzgwLi40NzBlYTVk
NzE0NGVlN2MyMjlhNmNhOTgzOThlNjlmNDYwMTczM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNDUxLDYgKzQ1MSw4IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9nZW5l
cmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcAogICAgIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5jcHAKIAorICAgIGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3Bw
CisKICAgICBjc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5jcHAKICAgICBjc3MvQ1NTQ2FudmFzVmFs
dWUuY3BwCiAgICAgY3NzL0NTU0NoYXJzZXRSdWxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFjMGJhZmY3
OGE4NjU5OTBiNGZjMTkyYWZjNGU4YWYzNjdhOWU2ZWEuLjFiZTk5OTNhM2E0OTIwYTA2YTE1ZDQx
NDM3YzAwNWUxMjFkOGY4OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxMS0wNC0w
NiAgTGVhbmRybyBHcmFjaWEgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmFjdG9yaW5nIHRo
ZSBjcmVhdGlvbiBvZiAnRnVuY3Rpb25Pbmx5JyBjYWxsYmFja3MgaW4gSmF2YVNjcmlwdENvcmUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Nzc3MAor
CisgICAgICAgIENyZWF0ZSBhIHRlbXBsYXRlIGZyb20gYW4gZXhpc3RpbmcgZnVuY3Rpb25hbGl0
eSBpbiBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAorICAgICAgICB0byBiZSB1c2VkIGJ5IHRoZSBj
dXN0b20gYmluZGluZ3Mgb2YgYm90aCBHZW9sb2NhdGlvbiBhbmQgdGhlIE1lZGlhIFN0cmVhbSBB
UEkuCisgICAgICAgIFY4IHZlcnNpb24gb2YgdGhpcyBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01Nzc2MAorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMuaHRtbAorCisgICAgICAg
ICogQW5kcm9pZC5qc2NiaW5kaW5ncy5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrRnVuY3Rpb25Pbmx5Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0Nh
bGxiYWNrRnVuY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGdW5jdGlv
bk9ubHlDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisK
IDIwMTEtMDMtMzAgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5k
ZXggYTdmNDg1YWFiNTY5ZjI0Yjg3OTRmNDA3ZTJlZWVkNWNhZTkzZjM4ZS4uY2M1ZDhjNWUzNGY0
Y2ZhY2ZkMTk0ZDc0YzFhZWMxZDVmNjAwMzQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTcx
Nyw2ICs3MTcsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5jcHAgXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcCBcCisJU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYTdlN2ZiYTI5
MGJhMzAwNTQxNTcyZTk5NDJkNTVjNjE0NTM4MGJjYi4uNmE5MTcwMjk0ZTY4OWU0NzNlY2ZkNWMx
MzMyZmE0M2M2NGNmMDRiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTY3MSw2ICsxNjcxLDggQEAK
ICAgICAgICAgICAgICdiaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhUTUxFbGVtZW50V3JhcHBlckZh
Y3RvcnkuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy9nb2JqZWN0L1dlYktpdEhUTUxFbGVt
ZW50V3JhcHBlckZhY3RvcnkuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvQ2FjaGVkU2Ny
aXB0U291cmNlUHJvdmlkZXIuaCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvQ2FsbGJhY2tG
dW5jdGlvbi5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24u
aCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvanMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmNwcCcs
CiAgICAgICAgICAgICAnYmluZGluZ3MvanMvRE9NV3JhcHBlcldvcmxkLmNwcCcsCiAgICAgICAg
ICAgICAnYmluZGluZ3MvanMvR0NDb250cm9sbGVyLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDI3
M2Q0MzNlOWM3YjEzNzRiNmI0MmY5MzYxNzg4NzgwZWM0MGQ5NjMuLjhkYmQ5MGQ1YjYxNTFjNjlm
M2ZkZmVjYzJjMWE2NjU4MjYxNzBiZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xMjY4LDYgKzEyNjgs
OCBAQCB2OCB7CiB9IGVsc2UgewogICAgIEhFQURFUlMgKz0gXAogICAgICAgICBiaW5kaW5ncy9q
cy9DYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oIFwKKyAgICAgICAgYmluZGluZ3MvanMvQ2Fs
bGJhY2tGdW5jdGlvbi5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9u
LmggXAogICAgICAgICBiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuaCBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oIFwKICAgICAgICAgYmluZGluZ3MvanMvRE9N
V3JhcHBlcldvcmxkLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCA0YWQ1OWE4NzJjNzg2ODc1MDAwMzM2M2RiYzgxN2FjNjVmMzUyMjE1Li4w
ZTM4NjA2MWZlNTY0MzE2MWNmNmY2M2JmN2VmMDMwOTE0MGMyNDk5IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTY0ODEsNiArNTY0ODEsNjIg
QEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XGJpbmRpbmdzXGpzXENhbGxiYWNrRnVuY3Rpb24uY3BwIgorCQkJCQk+CisJCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVk
RnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJ
PEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIi
CisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJ
CQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9D
YWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
CT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRp
b24KKwkJCQkJCU5hbWU9IlByb2R1Y3Rpb258V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWls
ZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPC9GaWxlPgor
CQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcQ2FsbGJhY2tGdW5j
dGlvbi5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0
aD0iLi5cYmluZGluZ3NcanNcRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmNwcCIKIAkJCQkJPgogCQkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlNTFhNDkxN2I5OGY3ZDQ3ODI5MDFkNTA1MmY2NjRk
YWRmM2FlYjA4Li42NWUwNGY3MmYzNDc0NmNiMTBlNzZiZThiNTEyZmIyYzc0MTVjOTZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC00MDk1LDYgKzQwOTUsOCBAQAogCQlCMDE0OUU3RTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJ
bWFnZVJlc2l6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIwMTQ5RTdBMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oICovOyB9
OwogCQlCMDE0OUU3RjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdCMTFB
NEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovOyB9OwogCQlCMDE0OUU4
MDExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3QzExQTRCMjE1MDAxOTZBN0Ig
LyogSW1hZ2VSZXNpemVyVGhyZWFkLmggKi87IH07CisJCUIxODI3NDkzMTM0Q0E0QzEwMEI5OEMy
RCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIxODI3NDkyMTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxsYmFja0Z1bmN0
aW9uLmNwcCAqLzsgfTsKKwkJQjFENUVDQjUxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrRnVu
Y3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIx
RDVFQ0I0MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggKi87IH07CiAJCUIy
MDExMTA3MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMDExMTA1MEFCNzc0MDUwMERCMEU2
OCAvKiBKU1NWR0FFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIwMTExMDgwQUI3NzQwNTAwREIwRTY4
IC8qIEpTU1ZHQUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMDExMTA2MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmggKi87
IH07CiAJCUIyMjI3OTYyMEQwMEJGMjIwMDcxQjc4MiAvKiBDb2xvckRpc3RhbmNlLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3N0NCMEQwMEJG
MUYwMDcxQjc4MiAvKiBDb2xvckRpc3RhbmNlLmNwcCAqLzsgfTsKQEAgLTEwMzcxLDYgKzEwMzcz
LDggQEAKIAkJQjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFzeW5jSW1hZ2VSZXNpemVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIwMTQ5RTdCMTFBNEIyMTUwMDE5NkE3QiAvKiBJ
bWFnZVJlc2l6ZXJUaHJlYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSW1hZ2VSZXNpemVyVGhyZWFkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZVJlc2l6ZXJUaHJlYWQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjE4Mjc0OTIxMzRDQTRDMTAwQjk4QzJEIC8qIENhbGxiYWNr
RnVuY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FsbGJh
Y2tGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUIxRDVFQ0I0MTM0
QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhbGxiYWNrRnVuY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjAxMTEwNjBBQjc3NDA1MDBEQjBFNjggLyogSlNT
VkdBRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTVkdBRWxl
bWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzdDQjBEMDBCRjFGMDA3
MUI3ODIgLyogQ29sb3JEaXN0YW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29sb3JEaXN0YW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0xNzk4OSw2ICsxNzk5Myw4IEBACiAJCQkJQkM0RURFRjcwQzA4RjQxNDAwN0VERDQ5IC8qIEN1
c3RvbSAqLywKIAkJCQkxNERGQjMzRjBBN0RGNzYzMDAxOEY3NjkgLyogRGVyaXZlZCBTb3VyY2Vz
ICovLAogCQkJCUJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQ
cm92aWRlci5oICovLAorCQkJCUIxODI3NDkyMTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxsYmFja0Z1
bmN0aW9uLmNwcCAqLywKKwkJCQlCMUQ1RUNCNDEzNEI1OERBMDA4N0M3OEYgLyogQ2FsbGJhY2tG
dW5jdGlvbi5oICovLAogCQkJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2RlR2VuZXJh
dG9ySlMucG0gKi8sCiAJCQkJQkM1M0RBNjExMTQzMTRCRDAwMEQ4MTdFIC8qIERPTU9iamVjdEhh
c2hUYWJsZU1hcC5jcHAgKi8sCiAJCQkJQkM1M0RBNUYxMTQzMTQxQTAwMEQ4MTdFIC8qIERPTU9i
amVjdEhhc2hUYWJsZU1hcC5oICovLApAQCAtMjI4MjcsNiArMjI4MzMsNyBAQAogCQkJCUZEMDZE
RkE2MTM0QTRERUYwMDZGNUQ3RCAvKiBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUUxQTMxNjJEMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0
ZWRTdHJpbmdFeHRyYXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQTMxNjYzMTM0QkNBRTgwMDdD
OUE0RiAvKiBIVE1MQ29udmVydGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlCMUQ1RUNCNTEzNEI1
OERBMDA4N0M3OEYgLyogQ2FsbGJhY2tGdW5jdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yNTUx
NCw2ICsyNTUyMSw3IEBACiAJCQkJRkRGNkJBRjgxMzRBNEM5ODAwODIyOTIwIC8qIEpTT2ZmbGlu
ZUF1ZGlvQ29tcGxldGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEMDZERkE1MTM0
QTRERUYwMDZGNUQ3RCAvKiBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTFBMzE2MkUxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0
cmluZ0V4dHJhcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCUIxODI3NDkzMTM0Q0E0QzEwMEI5OEMy
RCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2ViNDdj
OTA5MWI4NjVjMjlkYzQ1NjFlZDBlM2JjNWNmZmE2NDFkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5jcHAKQEAgLTAsMCArMSw1
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2FsbGJh
Y2tGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2Jvb2wgY2hlY2tGdW5jdGlvbk9ubHlDYWxsYmFjayhKU0M6OkV4ZWNT
dGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIHZhbHVlLCBDYWxsYmFja0FsbG93ZWRWYWx1ZUZsYWdz
IGFjY2VwdGVkVmFsdWVzKQoreworICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5lZCgpICYmIChhY2Nl
cHRlZFZhbHVlcyAmIENhbGxiYWNrQWxsb3dVbmRlZmluZWQpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAodmFsdWUuaXNOdWxsKCkgJiYgKGFjY2VwdGVkVmFsdWVzICYgQ2FsbGJh
Y2tBbGxvd051bGwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogZGlz
YWxsb3dzIGNhbGxhYmxlIG9iamVjdHMgY3JlYXRlZCB2aWEgSlNDIEFQSS4gSXQncyBub3QgY2xl
YXIgd2hhdCBleGFjdGx5IHRoZSBzcGVjaWZpY2F0aW9uIGludGVuZHMgdG8gYWxsb3cuCisgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMDEyCisgICAgaWYg
KCF2YWx1ZS5pbmhlcml0cygmSlNDOjpKU0Z1bmN0aW9uOjpzX2luZm8pKSB7CisgICAgICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5j
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI1NjJjZTk3YTA5NTJmNGFmZDY1YjU1MTViMGZlMzQxZTI5OWY0MzgKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9u
LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIENhbGxiYWNrRnVuY3Rp
b25faAorI2RlZmluZSBDYWxsYmFja0Z1bmN0aW9uX2gKKworI2luY2x1ZGUgPHJ1bnRpbWUvSlNP
YmplY3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBFeGVjU3RhdGU7Cit9CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CisKK2VudW0gQ2FsbGJh
Y2tBbGxvd2VkVmFsdWVGbGFnIHsKKyAgICBDYWxsYmFja0FsbG93VW5kZWZpbmVkID0gMSwKKyAg
ICBDYWxsYmFja0FsbG93TnVsbCA9IDEgPDwgMQorfTsKKwordHlwZWRlZiB1bnNpZ25lZCBDYWxs
YmFja0FsbG93ZWRWYWx1ZUZsYWdzOworCitib29sIGNoZWNrRnVuY3Rpb25Pbmx5Q2FsbGJhY2so
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUsIENhbGxiYWNrQWxsb3dlZFZhbHVlRmxhZ3Mp
OworCisvLyBDcmVhdGVzIGNhbGxiYWNrIG9iamVjdHMgZm9yIGNhbGxiYWNrcyBtYXJrZWQgYXMg
RnVuY3Rpb25Pbmx5IGluIFdlYklETC4KK3RlbXBsYXRlIDx0eXBlbmFtZSBKU0NhbGxiYWNrVHlw
ZT4KK1Bhc3NSZWZQdHI8SlNDYWxsYmFja1R5cGU+IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNr
KEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgdmFsdWUsIENhbGxiYWNrQWxsb3dlZFZhbHVlRmxhZ3MgYWNjZXB0ZWRWYWx1
ZXMgPSAwKQoreworICAgIGlmIChjaGVja0Z1bmN0aW9uT25seUNhbGxiYWNrKGV4ZWMsIHZhbHVl
LCBhY2NlcHRlZFZhbHVlcykpCisgICAgICAgIHJldHVybiBKU0NhbGxiYWNrVHlwZTo6Y3JlYXRl
KGFzT2JqZWN0KHZhbHVlKSwgZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ2FsbGJhY2tGdW5jdGlvbl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCmlu
ZGV4IDI0OGFkY2Y0NDExZjhiZTljNjZhMTkxNWZmYjkyNGY0NmU1MDg4ZDkuLmI5M2M0Y2VjNGZj
NDQ3ODBlYTVlNzIzM2Q0OTFlYWMyMTI3ZTA5ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCkBAIC0yOCwxNCArMjgsMTMgQEAK
IAogI2lmIEVOQUJMRShHRU9MT0NBVElPTikKIAorI2luY2x1ZGUgIkNhbGxiYWNrRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAj
aW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uQ2FsbGJh
Y2suaCIKICNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIgogI2luY2x1
ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiUG9zaXRpb25PcHRpb25zLmgiCi0jaW5jbHVk
ZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CiAKICNpZiAhRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9M
T0NBVElPTikKICNpbmNsdWRlICJHZW9sb2NhdGlvblNlcnZpY2UuaCIKQEAgLTQ2LDM2ICs0NSw2
IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gY3JlYXRlUG9zaXRpb25DYWxsYmFjayhFeGVj
U3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCi17Ci0gICAgLy8gVGhlIHNwZWMgc3BlY2lmaWVzICdGdW5jdGlvbk9ubHknIGZvciB0aGlz
IG9iamVjdC4KLSAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBkaXNhbGxvd3MgY2FsbGFibGUgb2Jq
ZWN0cyBjcmVhdGVkIHZpYSBKU0MgQVBJLiBJdCdzIG5vdCBjbGVhciB3aGF0IGV4YWN0bHkgdGhl
IHNwZWNpZmljYXRpb24gaW50ZW5kcyB0byBhbGxvdy4KLSAgICBpZiAoIXZhbHVlLmluaGVyaXRz
KCZKU0Z1bmN0aW9uOjpzX2luZm8pKSB7Ci0gICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBU
WVBFX01JU01BVENIX0VSUik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEpTT2Jq
ZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7Ci0gICAgcmV0dXJuIEpTQ3VzdG9tUG9zaXRp
b25DYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZ2xvYmFsT2JqZWN0KTsKLX0KLQotc3RhdGljIFBh
c3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBjcmVhdGVQb3NpdGlvbkVycm9yQ2FsbGJh
Y2soRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlKQotewotICAgIC8vIEFyZ3VtZW50IGlzIG9wdGlvbmFsIChoZW5jZSB1bmRlZmlu
ZWQgaXMgYWxsb3dlZCksIGFuZCBudWxsIGlzIGFsbG93ZWQuCi0gICAgaWYgKHZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gVGhlIHNwZWMgc3Bl
Y2lmaWVzICdGdW5jdGlvbk9ubHknIGZvciB0aGlzIG9iamVjdC4KLSAgICAvLyBGSVhNRTogVGhp
cyBjaGVjayBkaXNhbGxvd3MgY2FsbGFibGUgb2JqZWN0cyBjcmVhdGVkIHZpYSBKU0MgQVBJLiBJ
dCdzIG5vdCBjbGVhciB3aGF0IGV4YWN0bHkgdGhlIHNwZWNpZmljYXRpb24gaW50ZW5kcyB0byBh
bGxvdy4KLSAgICBpZiAoIXZhbHVlLmluaGVyaXRzKCZKU0Z1bmN0aW9uOjpzX2luZm8pKSB7Ci0g
ICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7Ci0gICAgICAg
IHJldHVybiAwOwotICAgIH0KLQotICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1
ZSk7Ci0gICAgcmV0dXJuIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUob2Jq
ZWN0LCBnbG9iYWxPYmplY3QpOwotfQotCiBzdGF0aWMgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlv
bnM+IGNyZWF0ZVBvc2l0aW9uT3B0aW9ucyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUp
CiB7CiAgICAgLy8gQ3JlYXRlIGRlZmF1bHQgb3B0aW9ucy4KQEAgLTE0NCwxMiArMTEzLDEyIEBA
IEpTVmFsdWUgSlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICAvLyBBcmd1bWVudHM6IFBvc2l0aW9uQ2FsbGJhY2ssIChvcHRpb25hbClQb3Np
dGlvbkVycm9yQ2FsbGJhY2ssIChvcHRpb25hbClQb3NpdGlvbk9wdGlvbnMKIAotICAgIFJlZlB0
cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNhbGxiYWNrID0gY3JlYXRlUG9zaXRpb25DYWxs
YmFjayhleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBSZWZQdHI8UG9zaXRpb25D
YWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpT
Q3VzdG9tUG9zaXRpb25DYWxsYmFjaz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgwKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICBBU1NFUlQocG9zaXRpb25DYWxsYmFjayk7CiAKLSAgICBSZWZQdHI8UG9zaXRpb25F
cnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2FsbGJhY2sgPSBjcmVhdGVQb3NpdGlvbkVycm9y
Q2FsbGJhY2soZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgxKSk7CisgICAgUmVmUHRyPFBvc2l0
aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25P
bmx5Q2FsbGJhY2s8SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s+KGV4ZWMsIHN0YXRpY19j
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhl
Yy0+YXJndW1lbnQoMSksIENhbGxiYWNrQWxsb3dVbmRlZmluZWQgfCBDYWxsYmFja0FsbG93TnVs
bCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIApAQCAtMTY2LDEyICsxMzUsMTIgQEAgSlNWYWx1ZSBKU0dlb2xvY2F0aW9uOjp3
YXRjaFBvc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyBBcmd1bWVudHM6IFBvc2l0
aW9uQ2FsbGJhY2ssIChvcHRpb25hbClQb3NpdGlvbkVycm9yQ2FsbGJhY2ssIChvcHRpb25hbClQ
b3NpdGlvbk9wdGlvbnMKIAotICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNh
bGxiYWNrID0gY3JlYXRlUG9zaXRpb25DYWxsYmFjayhleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50
KDApKTsKKyAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjayA9IGNy
ZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjaz4oZXhlYywg
c3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBBU1NFUlQocG9zaXRpb25DYWxsYmFj
ayk7CiAKLSAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2Fs
bGJhY2sgPSBjcmVhdGVQb3NpdGlvbkVycm9yQ2FsbGJhY2soZXhlYywgc3RhdGljX2Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1
bWVudCgxKSk7CisgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJv
ckNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNDdXN0b21Qb3NpdGlvbkVy
cm9yQ2FsbGJhY2s+KGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMSksIENhbGxiYWNrQWxsb3dV
bmRlZmluZWQgfCBDYWxsYmFja0FsbG93TnVsbCk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88436</attachid>
            <date>2011-04-06 08:59:42 -0700</date>
            <delta_ts>2011-04-06 10:11:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57770-20110406165941.patch</filename>
            <type>text/plain</type>
            <size>20794</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwNTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Fu
ZHJvaWQuanNjYmluZGluZ3MubWsgYi9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdz
Lm1rCmluZGV4IDVlNWUzMGY0MzNiMTlmYTdkMDk4ZjYzNjEyNWM2ZWMyNThkMzIwNjIuLmE3NDNh
N2JlNGY4ZjE2Y2Q5ZWE3YWVkZmVlYjcyNzc5Mzc3MjhmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9p
ZC5qc2NiaW5kaW5ncy5tawpAQCAtNTYsNiArNTYsNyBAQCBCSU5ESU5HX0NfSU5DTFVERVMgOj0g
XAogCSQoYmFzZV9pbnRlcm1lZGlhdGVzKS9Tb3VyY2UvV2ViQ29yZS94bWwKIAogTE9DQUxfU1JD
X0ZJTEVTICs9IFwKKwliaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcCBcCiAJYmluZGlu
Z3MvanMvR0NDb250cm9sbGVyLmNwcCBcCiAJYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGll
cy5jcHAgXAogCWJpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCA2OWM2N2UyNjZmNDZlNzZiYjBlYmQ4ZGE5NzhmYjU0ZjkyMGRkNzgwLi40NzBlYTVk
NzE0NGVlN2MyMjlhNmNhOTgzOThlNjlmNDYwMTczM2ZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNDUxLDYgKzQ1MSw4IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9nZW5l
cmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcAogICAgIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5jcHAKIAorICAgIGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3Bw
CisKICAgICBjc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5jcHAKICAgICBjc3MvQ1NTQ2FudmFzVmFs
dWUuY3BwCiAgICAgY3NzL0NTU0NoYXJzZXRSdWxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGEzNDIzODNk
N2VjYTYzYzIxZTM4ZjgwYTUxMDg1YzU0MGZmYjlmNWQuLjlmNjc2ZmM4ZmFjNWY5NTFhMzQ2MWMz
YmIxNGUwNzQ1NWY1YjkwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMS0wNC0w
NiAgTGVhbmRybyBHcmFjaWEgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmFjdG9yaW5nIHRo
ZSBjcmVhdGlvbiBvZiAnRnVuY3Rpb25Pbmx5JyBjYWxsYmFja3MgaW4gSmF2YVNjcmlwdENvcmUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Nzc3MAor
CisgICAgICAgIENyZWF0ZSBhIHRlbXBsYXRlIGZyb20gYW4gZXhpc3RpbmcgZnVuY3Rpb25hbGl0
eSBpbiBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAorICAgICAgICB0byBiZSB1c2VkIGJ5IHRoZSBj
dXN0b20gYmluZGluZ3Mgb2YgYm90aCBHZW9sb2NhdGlvbiBhbmQgdGhlIE1lZGlhIFN0cmVhbSBB
UEkuCisgICAgICAgIFY4IHZlcnNpb24gb2YgdGhpcyBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01Nzc2MAorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMuaHRtbAorCisgICAgICAg
ICogQW5kcm9pZC5qc2NiaW5kaW5ncy5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrRnVuY3Rpb25Pbmx5Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0Nh
bGxiYWNrRnVuY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGdW5jdGlv
bk9ubHlDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToKKwogMjAxMS0wNC0w
NiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgzMDQ1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA4
MWM3ZmQ1ZDZmNWY4NzczZWY3ODJjOWI2Y2Q5ZGRkMTg1ZWI3ZDAxLi5lZDRhYjMyMDBmMzI4Zjlh
NGQ2MTk1YjM0MmJkZjBmYTIwNWVjMTY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNzE3LDYg
KzcxNyw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
Z2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZlYXR1cmVzLmggXAogCVNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggXAorCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9ET01XcmFwcGVyV29ybGQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBhN2U3ZmJhMjkwYmEz
MDA1NDE1NzJlOTk0MmQ1NWM2MTQ1MzgwYmNiLi42YTkxNzAyOTRlNjg5ZTQ3M2VjZmQ1YzEzMzJm
YTQzYzY0Y2YwNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNjcxLDYgKzE2NzEsOCBAQAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRXcmFwcGVyRmFjdG9y
eS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2dvYmplY3QvV2ViS2l0SFRNTEVsZW1lbnRX
cmFwcGVyRmFjdG9yeS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9DYWNoZWRTY3JpcHRT
b3VyY2VQcm92aWRlci5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0
aW9uLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy9qcy9ET01PYmplY3RIYXNoVGFibGVNYXAuY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9HQ0NvbnRyb2xsZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMjczZDQz
M2U5YzdiMTM3NGI2YjQyZjkzNjE3ODg3ODBlYzQwZDk2My4uOGRiZDkwZDViNjE1MWM2OWYzZmRm
ZWNjMmMxYTY2NTgyNjE3MGJmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTEyNjgsNiArMTI2OCw4IEBA
IHY4IHsKIH0gZWxzZSB7CiAgICAgSEVBREVSUyArPSBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0Nh
Y2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVyLmggXAorICAgICAgICBiaW5kaW5ncy9qcy9DYWxsYmFj
a0Z1bmN0aW9uLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uaCBc
CiAgICAgICAgIGJpbmRpbmdzL2pzL0dDQ29udHJvbGxlci5oIFwKICAgICAgICAgYmluZGluZ3Mv
anMvRE9NT2JqZWN0SGFzaFRhYmxlTWFwLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9ET01XcmFw
cGVyV29ybGQuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IDRhZDU5YTg3MmM3ODY4NzUwMDAzMzYzZGJjODE3YWM2NWYzNTIyMTUuLjBlMzg2
MDYxZmU1NjQzMTYxY2Y2ZjYzYmY3ZWYwMzA5MTQwYzI0OTkgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC01NjQ4MSw2ICs1NjQ4MSw2MiBAQAog
CQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcQ2FsbGJhY2tGdW5jdGlvbi5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxk
PSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25m
aWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9t
QnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21w
aWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJ
CQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJ
CQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJh
dGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJv
X0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgor
CQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlO
YW1lPSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJ
CQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJ
CS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQkJTmFtZT0iUHJvZHVjdGlvbnxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJ
PEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xDYWxsYmFja0Z1bmN0aW9u
LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxiaW5kaW5nc1xqc1xET01PYmplY3RIYXNoVGFibGVNYXAuY3BwIgogCQkJCQk+CiAJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGU1MWE0OTE3Yjk4ZjdkNDc4MjkwMWQ1MDUyZjY2NGRhZGYz
YWViMDguLjY1ZTA0ZjcyZjM0NzQ2Y2IxMGU3NmJlOGI1MTJmYjJjNzQxNWM5NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQw
OTUsNiArNDA5NSw4IEBACiAJCUIwMTQ5RTdFMTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdl
UmVzaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjAxNDlFN0ExMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggKi87IH07CiAJ
CUIwMTQ5RTdGMTFBNEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjAxNDlFN0IxMUE0QjIx
NTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgKi87IH07CiAJCUIwMTQ5RTgwMTFB
NEIyMTUwMDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIwMTQ5RTdDMTFBNEIyMTUwMDE5NkE3QiAvKiBJ
bWFnZVJlc2l6ZXJUaHJlYWQuaCAqLzsgfTsKKwkJQjE4Mjc0OTMxMzRDQTRDMTAwQjk4QzJEIC8q
IENhbGxiYWNrRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQjE4Mjc0OTIxMzRDQTRDMTAwQjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rpb24u
Y3BwICovOyB9OworCQlCMUQ1RUNCNTEzNEI1OERBMDA4N0M3OEYgLyogQ2FsbGJhY2tGdW5jdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjFENUVD
QjQxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCAqLzsgfTsKIAkJQjIwMTEx
MDcwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIwMTExMDUwQUI3NzQwNTAwREIwRTY4IC8q
IEpTU1ZHQUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjAxMTEwODBBQjc3NDA1MDBEQjBFNjggLyog
SlNTVkdBRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLzsgfTsK
IAkJQjIyMjc5NjIwRDAwQkYyMjAwNzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc3Q0IwRDAwQkYxRjAw
NzFCNzgyIC8qIENvbG9yRGlzdGFuY2UuY3BwICovOyB9OwpAQCAtMTAzNzEsNiArMTAzNzMsOCBA
QAogCQlCMDE0OUU3QTExQTRCMjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXN5bmNJbWFnZVJlc2l6ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjAxNDlFN0IxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdl
UmVzaXplclRocmVhZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bWFnZVJlc2l6ZXJUaHJlYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMDE0
OUU3QzExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlUmVzaXplclRocmVhZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCMTgyNzQ5MjEzNENBNEMxMDBCOThDMkQgLyogQ2FsbGJhY2tGdW5j
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsYmFja0Z1
bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjFENUVDQjQxMzRCNThE
QTAwODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ2FsbGJhY2tGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlCMjAxMTEwNTBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTVkdBRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMDExMTA2MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1NWR0FFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3N0NCMEQwMEJGMUYwMDcxQjc4
MiAvKiBDb2xvckRpc3RhbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBDb2xvckRpc3RhbmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3
OTg5LDYgKzE3OTkzLDggQEAKIAkJCQlCQzRFREVGNzBDMDhGNDE0MDA3RURENDkgLyogQ3VzdG9t
ICovLAogCQkJCTE0REZCMzNGMEE3REY3NjMwMDE4Rjc2OSAvKiBEZXJpdmVkIFNvdXJjZXMgKi8s
CiAJCQkJQkNENTMzNjMwRUQ2ODQ4OTAwODg3NDY4IC8qIENhY2hlZFNjcmlwdFNvdXJjZVByb3Zp
ZGVyLmggKi8sCisJCQkJQjE4Mjc0OTIxMzRDQTRDMTAwQjk4QzJEIC8qIENhbGxiYWNrRnVuY3Rp
b24uY3BwICovLAorCQkJCUIxRDVFQ0I0MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0
aW9uLmggKi8sCiAJCQkJOTNGOEIzMDYwQTMwMEZFQTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3JK
Uy5wbSAqLywKIAkJCQlCQzUzREE2MTExNDMxNEJEMDAwRDgxN0UgLyogRE9NT2JqZWN0SGFzaFRh
YmxlTWFwLmNwcCAqLywKIAkJCQlCQzUzREE1RjExNDMxNDFBMDAwRDgxN0UgLyogRE9NT2JqZWN0
SGFzaFRhYmxlTWFwLmggKi8sCkBAIC0yMjgyNyw2ICsyMjgzMyw3IEBACiAJCQkJRkQwNkRGQTYx
MzRBNERFRjAwNkY1RDdEIC8qIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJRTFBMzE2MkQxMzRCQzMyRDAwN0M5QTRGIC8qIFdlYk5TQXR0cmlidXRlZFN0
cmluZ0V4dHJhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFBMzE2NjMxMzRCQ0FFODAwN0M5QTRG
IC8qIEhUTUxDb252ZXJ0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUIxRDVFQ0I1MTM0QjU4REEw
MDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1NTE0LDYg
KzI1NTIxLDcgQEAKIAkJCQlGREY2QkFGODEzNEE0Qzk4MDA4MjI5MjAgLyogSlNPZmZsaW5lQXVk
aW9Db21wbGV0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRkQwNkRGQTUxMzRBNERF
RjAwNkY1RDdEIC8qIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlFMUEzMTYyRTEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5n
RXh0cmFzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQjE4Mjc0OTMxMzRDQTRDMTAwQjk4QzJEIC8q
IENhbGxiYWNrRnVuY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzZWI0N2M5MDkx
Yjg2NWMyOWRjNDU2MWVkMGUzYmM1Y2ZmYTY0MWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcApAQCAtMCwwICsxLDUyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
KyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDYWxsYmFja0Z1
bmN0aW9uLmgiCisKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiSlNET01C
aW5kaW5nLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0Z1bmN0aW9uLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworYm9vbCBjaGVja0Z1bmN0aW9uT25seUNhbGxiYWNrKEpTQzo6RXhlY1N0YXRl
KiBleGVjLCBKU0M6OkpTVmFsdWUgdmFsdWUsIENhbGxiYWNrQWxsb3dlZFZhbHVlRmxhZ3MgYWNj
ZXB0ZWRWYWx1ZXMpCit7CisgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkgJiYgKGFjY2VwdGVk
VmFsdWVzICYgQ2FsbGJhY2tBbGxvd1VuZGVmaW5lZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICh2YWx1ZS5pc051bGwoKSAmJiAoYWNjZXB0ZWRWYWx1ZXMgJiBDYWxsYmFja0Fs
bG93TnVsbCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vIEZJWE1FOiBkaXNhbGxv
d3MgY2FsbGFibGUgb2JqZWN0cyBjcmVhdGVkIHZpYSBKU0MgQVBJLiBJdCdzIG5vdCBjbGVhciB3
aGF0IGV4YWN0bHkgdGhlIHNwZWNpZmljYXRpb24gaW50ZW5kcyB0byBhbGxvdy4KKyAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAwMTIKKyAgICBpZiAoIXZh
bHVlLmluaGVyaXRzKCZKU0M6OkpTRnVuY3Rpb246OnNfaW5mbykpIHsKKyAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjU2MmNlOTdhMDk1MmY0YWZkNjViNTUxNWIwZmUzNDFlMjk5ZjQzOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uaApA
QCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ2FsbGJhY2tGdW5jdGlvbl9o
CisjZGVmaW5lIENhbGxiYWNrRnVuY3Rpb25faAorCisjaW5jbHVkZSA8cnVudGltZS9KU09iamVj
dC5oPgorCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEV4ZWNTdGF0ZTsKK30KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKKworZW51bSBDYWxsYmFja0Fs
bG93ZWRWYWx1ZUZsYWcgeworICAgIENhbGxiYWNrQWxsb3dVbmRlZmluZWQgPSAxLAorICAgIENh
bGxiYWNrQWxsb3dOdWxsID0gMSA8PCAxCit9OworCit0eXBlZGVmIHVuc2lnbmVkIENhbGxiYWNr
QWxsb3dlZFZhbHVlRmxhZ3M7CisKK2Jvb2wgY2hlY2tGdW5jdGlvbk9ubHlDYWxsYmFjayhKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgQ2FsbGJhY2tBbGxvd2VkVmFsdWVGbGFncyk7CisK
Ky8vIENyZWF0ZXMgY2FsbGJhY2sgb2JqZWN0cyBmb3IgY2FsbGJhY2tzIG1hcmtlZCBhcyBGdW5j
dGlvbk9ubHkgaW4gV2ViSURMLgordGVtcGxhdGUgPHR5cGVuYW1lIEpTQ2FsbGJhY2tUeXBlPgor
UGFzc1JlZlB0cjxKU0NhbGxiYWNrVHlwZT4gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2soSlND
OjpFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSwgQ2FsbGJhY2tBbGxvd2VkVmFsdWVGbGFncyBhY2NlcHRlZFZhbHVlcyA9
IDApCit7CisgICAgaWYgKGNoZWNrRnVuY3Rpb25Pbmx5Q2FsbGJhY2soZXhlYywgdmFsdWUsIGFj
Y2VwdGVkVmFsdWVzKSkKKyAgICAgICAgcmV0dXJuIEpTQ2FsbGJhY2tUeXBlOjpjcmVhdGUoYXNP
YmplY3QodmFsdWUpLCBnbG9iYWxPYmplY3QpOworICAgIHJldHVybiAwOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBDYWxsYmFja0Z1bmN0aW9uX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IGQ1
YzkxMzUyYWM0OWI0Mzg4NzhiMjc2ZmM2NDc0MDcxZGYzNDNlMGYuLmE0NTdjZThkYWM0NDhhNjAx
NDhhZTUxNGE3NzRjN2VjYTM2MmY5M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApAQCAtMjUsNiArMjUsNyBAQAogCiAvLyBUaGlz
IGFsbC1pbi1vbmUgY3BwIGZpbGUgY3V0cyBkb3duIG9uIHRlbXBsYXRlIGJsb2F0IHRvIGFsbG93
IHVzIHRvIGJ1aWxkIG91ciBXaW5kb3dzIHJlbGVhc2UgYnVpbGQuCiAKKyNpbmNsdWRlICJDYWxs
YmFja0Z1bmN0aW9uLmNwcCIKICNpbmNsdWRlICJET01PYmplY3RIYXNoVGFibGVNYXAuY3BwIgog
I2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5jcHAiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmNw
cCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25D
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3Rv
bS5jcHAKaW5kZXggMjQ4YWRjZjQ0MTFmOGJlOWM2NmExOTE1ZmZiOTI0ZjQ2ZTUwODhkOS4uYjkz
YzRjZWM0ZmM0NDc4MGVhNWU3MjMzZDQ5MWVhYzIxMjdlMDllNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKQEAgLTI4LDE0ICsy
OCwxMyBAQAogCiAjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQogCisjaW5jbHVkZSAiQ2FsbGJhY2tG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRp
b25DYWxsYmFjay5oIgogI2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgi
CiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJQb3NpdGlvbk9wdGlvbnMuaCIK
LSNpbmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KIAogI2lmICFFTkFCTEUoQ0xJRU5UX0JB
U0VEX0dFT0xPQ0FUSU9OKQogI2luY2x1ZGUgIkdlb2xvY2F0aW9uU2VydmljZS5oIgpAQCAtNDYs
MzYgKzQ1LDYgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBjcmVhdGVQb3NpdGlvbkNhbGxi
YWNrKEV4ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB2YWx1ZSkKLXsKLSAgICAvLyBUaGUgc3BlYyBzcGVjaWZpZXMgJ0Z1bmN0aW9uT25seScg
Zm9yIHRoaXMgb2JqZWN0LgotICAgIC8vIEZJWE1FOiBUaGlzIGNoZWNrIGRpc2FsbG93cyBjYWxs
YWJsZSBvYmplY3RzIGNyZWF0ZWQgdmlhIEpTQyBBUEkuIEl0J3Mgbm90IGNsZWFyIHdoYXQgZXhh
Y3RseSB0aGUgc3BlY2lmaWNhdGlvbiBpbnRlbmRzIHRvIGFsbG93LgotICAgIGlmICghdmFsdWUu
aW5oZXJpdHMoJkpTRnVuY3Rpb246OnNfaW5mbykpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9u
KGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0g
ICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KHZhbHVlKTsKLSAgICByZXR1cm4gSlNDdXN0
b21Qb3NpdGlvbkNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBnbG9iYWxPYmplY3QpOwotfQotCi1z
dGF0aWMgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IGNyZWF0ZVBvc2l0aW9uRXJy
b3JDYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCi17Ci0gICAgLy8gQXJndW1lbnQgaXMgb3B0aW9uYWwgKGhlbmNl
IHVuZGVmaW5lZCBpcyBhbGxvd2VkKSwgYW5kIG51bGwgaXMgYWxsb3dlZC4KLSAgICBpZiAodmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBUaGUg
c3BlYyBzcGVjaWZpZXMgJ0Z1bmN0aW9uT25seScgZm9yIHRoaXMgb2JqZWN0LgotICAgIC8vIEZJ
WE1FOiBUaGlzIGNoZWNrIGRpc2FsbG93cyBjYWxsYWJsZSBvYmplY3RzIGNyZWF0ZWQgdmlhIEpT
QyBBUEkuIEl0J3Mgbm90IGNsZWFyIHdoYXQgZXhhY3RseSB0aGUgc3BlY2lmaWNhdGlvbiBpbnRl
bmRzIHRvIGFsbG93LgotICAgIGlmICghdmFsdWUuaW5oZXJpdHMoJkpTRnVuY3Rpb246OnNfaW5m
bykpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsK
LSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2Jq
ZWN0KHZhbHVlKTsKLSAgICByZXR1cm4gSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OmNy
ZWF0ZShvYmplY3QsIGdsb2JhbE9iamVjdCk7Ci19Ci0KIHN0YXRpYyBQYXNzUmVmUHRyPFBvc2l0
aW9uT3B0aW9ucz4gY3JlYXRlUG9zaXRpb25PcHRpb25zKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSkKIHsKICAgICAvLyBDcmVhdGUgZGVmYXVsdCBvcHRpb25zLgpAQCAtMTQ0LDEyICsx
MTMsMTIgQEAgSlNWYWx1ZSBKU0dlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oRXhlY1N0
YXRlKiBleGVjKQogewogICAgIC8vIEFyZ3VtZW50czogUG9zaXRpb25DYWxsYmFjaywgKG9wdGlv
bmFsKVBvc2l0aW9uRXJyb3JDYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uT3B0aW9ucwogCi0g
ICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVQb3Np
dGlvbkNhbGxiYWNrKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMCkpOworICAgIFJlZlB0cjxQ
b3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2Fs
bGJhY2s8SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50
KDApKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgIEFTU0VSVChwb3NpdGlvbkNhbGxiYWNrKTsKIAotICAgIFJlZlB0cjxQ
b3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFjayA9IGNyZWF0ZVBvc2l0
aW9uRXJyb3JDYWxsYmFjayhleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDEpKTsKKyAgICBSZWZQ
dHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2FsbGJhY2sgPSBjcmVhdGVG
dW5jdGlvbk9ubHlDYWxsYmFjazxKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjaz4oZXhlYywg
c3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCkpLCBleGVjLT5hcmd1bWVudCgxKSwgQ2FsbGJhY2tBbGxvd1VuZGVmaW5lZCB8IENhbGxiYWNr
QWxsb3dOdWxsKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCkBAIC0xNjYsMTIgKzEzNSwxMiBAQCBKU1ZhbHVlIEpTR2VvbG9j
YXRpb246OndhdGNoUG9zaXRpb24oRXhlY1N0YXRlKiBleGVjKQogewogICAgIC8vIEFyZ3VtZW50
czogUG9zaXRpb25DYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uRXJyb3JDYWxsYmFjaywgKG9w
dGlvbmFsKVBvc2l0aW9uT3B0aW9ucwogCi0gICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBv
c2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVQb3NpdGlvbkNhbGxiYWNrKGV4ZWMsIHN0YXRpY19jYXN0
PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+
YXJndW1lbnQoMCkpOworICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNhbGxi
YWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNr
PihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIEFTU0VSVChwb3NpdGlv
bkNhbGxiYWNrKTsKIAotICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9u
RXJyb3JDYWxsYmFjayA9IGNyZWF0ZVBvc2l0aW9uRXJyb3JDYWxsYmFjayhleGVjLCBzdGF0aWNf
Y2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4
ZWMtPmFyZ3VtZW50KDEpKTsKKyAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3Np
dGlvbkVycm9yQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU0N1c3RvbVBv
c2l0aW9uRXJyb3JDYWxsYmFjaz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgxKSwgQ2FsbGJh
Y2tBbGxvd1VuZGVmaW5lZCB8IENhbGxiYWNrQWxsb3dOdWxsKTsKICAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>88461</attachid>
            <date>2011-04-06 10:11:51 -0700</date>
            <delta_ts>2011-04-06 11:47:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57770-20110406181149.patch</filename>
            <type>text/plain</type>
            <size>20781</size>
            <attacher name="Leandro Graciá Gil">leandrogracia</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODMwNjYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Fu
ZHJvaWQuanNjYmluZGluZ3MubWsgYi9Tb3VyY2UvV2ViQ29yZS9BbmRyb2lkLmpzY2JpbmRpbmdz
Lm1rCmluZGV4IDVlNWUzMGY0MzNiMTlmYTdkMDk4ZjYzNjEyNWM2ZWMyNThkMzIwNjIuLmE3NDNh
N2JlNGY4ZjE2Y2Q5ZWE3YWVkZmVlYjcyNzc5Mzc3MjhmZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL0FuZHJvaWQuanNjYmluZGluZ3MubWsKKysrIGIvU291cmNlL1dlYkNvcmUvQW5kcm9p
ZC5qc2NiaW5kaW5ncy5tawpAQCAtNTYsNiArNTYsNyBAQCBCSU5ESU5HX0NfSU5DTFVERVMgOj0g
XAogCSQoYmFzZV9pbnRlcm1lZGlhdGVzKS9Tb3VyY2UvV2ViQ29yZS94bWwKIAogTE9DQUxfU1JD
X0ZJTEVTICs9IFwKKwliaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmNwcCBcCiAJYmluZGlu
Z3MvanMvR0NDb250cm9sbGVyLmNwcCBcCiAJYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGll
cy5jcHAgXAogCWJpbmRpbmdzL2pzL0pTQXR0ckN1c3RvbS5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBiZTNhZDY2NTdlNDk4MzhlMTZjMjg4NjVmYjcxOGFlODM2ZTBkNWQ3Li45MDBhNzky
MjM1YzVjMjVlMzQ0MDQ5OWI0MzMwNmI2ZjdmYWQ4ZWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtNDUxLDYgKzQ1MSw4IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9nZW5l
cmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcAogICAgIGJpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5jcHAKIAorICAgIGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3Bw
CisKICAgICBjc3MvQ1NTQm9yZGVySW1hZ2VWYWx1ZS5jcHAKICAgICBjc3MvQ1NTQ2FudmFzVmFs
dWUuY3BwCiAgICAgY3NzL0NTU0NoYXJzZXRSdWxlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDE1YjlmYTQ0
NzE4ZTYwZDA3MGRjNTgxYzc2NTBlYmQ1ZjVlYjZiZTMuLmYyNmEyMDVkODU2NGI5MWY2YjUwZDMy
ZjNmYTgyMWQ3ZmNlZmEwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAxMS0wNC0w
NiAgTGVhbmRybyBHcmFjaWEgR2lsICA8bGVhbmRyb2dyYWNpYUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRmFjdG9yaW5nIHRo
ZSBjcmVhdGlvbiBvZiAnRnVuY3Rpb25Pbmx5JyBjYWxsYmFja3MgaW4gSmF2YVNjcmlwdENvcmUu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Nzc3MAor
CisgICAgICAgIENyZWF0ZSBhIHRlbXBsYXRlIGZyb20gYW4gZXhpc3RpbmcgZnVuY3Rpb25hbGl0
eSBpbiBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAorICAgICAgICB0byBiZSB1c2VkIGJ5IHRoZSBj
dXN0b20gYmluZGluZ3Mgb2YgYm90aCBHZW9sb2NhdGlvbiBhbmQgdGhlIE1lZGlhIFN0cmVhbSBB
UEkuCisgICAgICAgIFY4IHZlcnNpb24gb2YgdGhpcyBidWc6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01Nzc2MAorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTGF5b3V0
VGVzdHMvZmFzdC9kb20vR2VvbG9jYXRpb24vYXJndW1lbnQtdHlwZXMuaHRtbAorCisgICAgICAg
ICogQW5kcm9pZC5qc2NiaW5kaW5ncy5tazoKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAg
ICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6
CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNoZWNrRnVuY3Rpb25Pbmx5Q2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0Nh
bGxiYWNrRnVuY3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVGdW5jdGlv
bk9ubHlDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToKKwogMjAxMS0wNC0w
NiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGEzODc3YzE2ZjY5OTM2
OGQ1MzZlMDU5NDg5ZGY5ZGQ5MjQyYTZlOGEuLjE3MDcyZjg1MzRmYjdmZGE4NGM5ZTMzNzZhZjZm
ZDAwNjMxMDk5YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC03MTcsNiArNzE3LDggQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRp
bWVFbmFibGVkRmVhdHVyZXMuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmlj
L1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
Q2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvQ2FsbGJhY2tGdW5jdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0Nh
bGxiYWNrRnVuY3Rpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0
SGFzaFRhYmxlTWFwLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NT2JqZWN0
SGFzaFRhYmxlTWFwLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTVdyYXBwZXJX
b3JsZC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDVkMDJkZGM3Y2UzY2UyNGNhMWVkOWZkYWNk
ZjQ4YmZiNjI4NGY1NzAuLmU5ZjdmMmFmY2RiODFjYmY4Y2RlYWIyMGNhYWM3MDI3NDA1NWUxNGEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTE2NzEsNiArMTY3MSw4IEBACiAgICAgICAgICAgICAnYmlu
ZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5LmNwcCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvZ29iamVjdC9XZWJLaXRIVE1MRWxlbWVudFdyYXBwZXJGYWN0b3J5
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdFNvdXJjZVByb3ZpZGVy
LmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3BwJywKKyAg
ICAgICAgICAgICdiaW5kaW5ncy9qcy9DYWxsYmFja0Z1bmN0aW9uLmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL2pzL0RPTU9iamVjdEhhc2hUYWJsZU1hcC5jcHAnLAogICAgICAgICAgICAgJ2Jp
bmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL2pz
L0dDQ29udHJvbGxlci5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5w
cm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCA4MGQyMWI0ODE5MTBhNjRkMzIz
NmMxODVjNjQyZmJmYTlmODdiYTQ0Li42Y2UyZWRiYjg5YzQwN2M0MTA3ZTQ5NWMxZjMyOTQ3ZDQ4
ODE5NTgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTI2OSw2ICsxMjY5LDggQEAgdjggewogfSBlbHNl
IHsKICAgICBIRUFERVJTICs9IFwKICAgICAgICAgYmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0U291
cmNlUHJvdmlkZXIuaCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3Bw
IFwKKyAgICAgICAgYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oIFwKICAgICAgICAgYmlu
ZGluZ3MvanMvR0NDb250cm9sbGVyLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9ET01PYmplY3RI
YXNoVGFibGVNYXAuaCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5oIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYmQ5
MzQxOTczMzhjN2RmOTYxOGMxNTY1MGZhMzk3NzMwMDUwNTk3ZS4uYzE3NDkzYTcyNzI4OTdjNGQ5
YjhlOTQ3MWRhZjU1MWYzMmU0ZGUyNyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3By
b2ovV2ViQ29yZS52Y3Byb2oKQEAgLTU2NDg5LDYgKzU2NDg5LDYyIEBACiAJCQkJCT4KIAkJCQk8
L0ZpbGU+CiAJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xDYWxs
YmFja0Z1bmN0aW9uLmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJ
CU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJ
CQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkv
PgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJ
CQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9fQ0ZMaXRlfFdpbjMy
IgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAor
CQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25m
aWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0Fs
bHxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJ
PFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJQ
cm9kdWN0aW9ufFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+
CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgor
CQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXENhbGxiYWNrRnVuY3Rpb24uaCIKKwkJCQkJPgor
CQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpz
XERPTU9iamVjdEhhc2hUYWJsZU1hcC5jcHAiCiAJCQkJCT4KIAkJCQkJPEZpbGVDb25maWd1cmF0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNTA4NDM4MTA3ZDMwZDg4ZDUxYmQ3ZGZiNTE4ODJlNjkzOTQ2ZjZmOS4uMTA4ZDNj
NjM4Y2E3ZjVkNjQ5MmFjNjFkZjM5YzI4OWVkOTBlZjg2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDA5Niw2ICs0MDk2LDgg
QEAKIAkJQjAxNDlFN0UxMUE0QjIxNTAwMTk2QTdCIC8qIEFzeW5jSW1hZ2VSZXNpemVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3QTExQTRC
MjE1MDAxOTZBN0IgLyogQXN5bmNJbWFnZVJlc2l6ZXIuaCAqLzsgfTsKIAkJQjAxNDlFN0YxMUE0
QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMDE0OUU3QjExQTRCMjE1MDAxOTZBN0IgLyog
SW1hZ2VSZXNpemVyVGhyZWFkLmNwcCAqLzsgfTsKIAkJQjAxNDlFODAxMUE0QjIxNTAwMTk2QTdC
IC8qIEltYWdlUmVzaXplclRocmVhZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQjAxNDlFN0MxMUE0QjIxNTAwMTk2QTdCIC8qIEltYWdlUmVzaXplclRo
cmVhZC5oICovOyB9OworCQlCMTgyNzQ5MzEzNENBNEMxMDBCOThDMkQgLyogQ2FsbGJhY2tGdW5j
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
MTgyNzQ5MjEzNENBNEMxMDBCOThDMkQgLyogQ2FsbGJhY2tGdW5jdGlvbi5jcHAgKi87IH07CisJ
CUIxRDVFQ0I1MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1bmN0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMUQ1RUNCNDEzNEI1OERBMDA4
N0M3OEYgLyogQ2FsbGJhY2tGdW5jdGlvbi5oICovOyB9OwogCQlCMjAxMTEwNzBBQjc3NDA1MDBE
QjBFNjggLyogSlNTVkdBRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjAxMTEwNTBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVu
dC5jcHAgKi87IH07CiAJCUIyMDExMTA4MEFCNzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjAxMTEw
NjBBQjc3NDA1MDBEQjBFNjggLyogSlNTVkdBRWxlbWVudC5oICovOyB9OwogCQlCMjIyNzk2MjBE
MDBCRjIyMDA3MUI3ODIgLyogQ29sb3JEaXN0YW5jZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzdDQjBEMDBCRjFGMDA3MUI3ODIgLyogQ29s
b3JEaXN0YW5jZS5jcHAgKi87IH07CkBAIC0xMDM3Myw2ICsxMDM3NSw4IEBACiAJCUIwMTQ5RTdB
MTFBNEIyMTUwMDE5NkE3QiAvKiBBc3luY0ltYWdlUmVzaXplci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBc3luY0ltYWdlUmVzaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCMDE0OUU3QjExQTRCMjE1MDAxOTZBN0IgLyogSW1hZ2VSZXNpemVyVGhyZWFk
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEltYWdlUmVzaXplclRo
cmVhZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIwMTQ5RTdDMTFBNEIyMTUw
MDE5NkE3QiAvKiBJbWFnZVJlc2l6ZXJUaHJlYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW1hZ2VSZXNpemVyVGhyZWFkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUIxODI3NDkyMTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxiYWNrRnVuY3Rpb24uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCMUQ1RUNCNDEzNEI1OERBMDA4N0M3OEYgLyog
Q2FsbGJhY2tGdW5jdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxs
YmFja0Z1bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMDExMTA1MEFC
Nzc0MDUwMERCMEU2OCAvKiBKU1NWR0FFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1NWR0FFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjIwMTExMDYwQUI3NzQwNTAwREIwRTY4IC8qIEpTU1ZHQUVsZW1lbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU1ZHQUVsZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc3Q0IwRDAwQkYxRjAwNzFCNzgyIC8qIENvbG9yRGlz
dGFuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbG9yRGlz
dGFuY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc5OTIsNiArMTc5OTYs
OCBAQAogCQkJCUJDNEVERUY3MEMwOEY0MTQwMDdFREQ0OSAvKiBDdXN0b20gKi8sCiAJCQkJMTRE
RkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQlCQ0Q1MzM2
MzBFRDY4NDg5MDA4ODc0NjggLyogQ2FjaGVkU2NyaXB0U291cmNlUHJvdmlkZXIuaCAqLywKKwkJ
CQlCMTgyNzQ5MjEzNENBNEMxMDBCOThDMkQgLyogQ2FsbGJhY2tGdW5jdGlvbi5jcHAgKi8sCisJ
CQkJQjFENUVDQjQxMzRCNThEQTAwODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCAqLywKIAkJ
CQk5M0Y4QjMwNjBBMzAwRkVBMDBGNjFBQjggLyogQ29kZUdlbmVyYXRvckpTLnBtICovLAogCQkJ
CUJDNTNEQTYxMTE0MzE0QkQwMDBEODE3RSAvKiBET01PYmplY3RIYXNoVGFibGVNYXAuY3BwICov
LAogCQkJCUJDNTNEQTVGMTE0MzE0MUEwMDBEODE3RSAvKiBET01PYmplY3RIYXNoVGFibGVNYXAu
aCAqLywKQEAgLTIyODMwLDYgKzIyODM2LDcgQEAKIAkJCQlGRDA2REZBNjEzNEE0REVGMDA2RjVE
N0QgLyogRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
MUEzMTYyRDEzNEJDMzJEMDA3QzlBNEYgLyogV2ViTlNBdHRyaWJ1dGVkU3RyaW5nRXh0cmFzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMUEzMTY2MzEzNEJDQUU4MDA3QzlBNEYgLyogSFRNTENvbnZl
cnRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFENUVDQjUxMzRCNThEQTAwODdDNzhGIC8qIENh
bGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjU1MTgsNiArMjU1MjUsNyBAQAog
CQkJCUZERjZCQUY4MTM0QTRDOTgwMDgyMjkyMCAvKiBKU09mZmxpbmVBdWRpb0NvbXBsZXRpb25F
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDA2REZBNTEzNEE0REVGMDA2RjVEN0QgLyog
RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQTMx
NjJFMTM0QkMzMkQwMDdDOUE0RiAvKiBXZWJOU0F0dHJpYnV0ZWRTdHJpbmdFeHRyYXMubW0gaW4g
U291cmNlcyAqLywKKwkJCQlCMTgyNzQ5MzEzNENBNEMxMDBCOThDMkQgLyogQ2FsbGJhY2tGdW5j
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
Q2FsbGJhY2tGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjNlYjQ3YzkwOTFiODY1YzI5ZGM0NTYx
ZWQwZTNiYzVjZmZhNjQxZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNhbGxiYWNrRnVuY3Rpb24uaCIKKwor
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNp
bmNsdWRlIDxydW50aW1lL0pTRnVuY3Rpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCiti
b29sIGNoZWNrRnVuY3Rpb25Pbmx5Q2FsbGJhY2soSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTQzo6
SlNWYWx1ZSB2YWx1ZSwgQ2FsbGJhY2tBbGxvd2VkVmFsdWVGbGFncyBhY2NlcHRlZFZhbHVlcykK
K3sKKyAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSAmJiAoYWNjZXB0ZWRWYWx1ZXMgJiBDYWxs
YmFja0FsbG93VW5kZWZpbmVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHZh
bHVlLmlzTnVsbCgpICYmIChhY2NlcHRlZFZhbHVlcyAmIENhbGxiYWNrQWxsb3dOdWxsKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6IGRpc2FsbG93cyBjYWxsYWJsZSBv
YmplY3RzIGNyZWF0ZWQgdmlhIEpTQyBBUEkuIEl0J3Mgbm90IGNsZWFyIHdoYXQgZXhhY3RseSB0
aGUgc3BlY2lmaWNhdGlvbiBpbnRlbmRzIHRvIGFsbG93LgorICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDAxMgorICAgIGlmICghdmFsdWUuaW5oZXJpdHMo
JkpTQzo6SlNGdW5jdGlvbjo6c19pbmZvKSkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxiYWNrRnVuY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTYyY2U5
N2EwOTUyZjRhZmQ2NWI1NTE1YjBmZTM0MWUyOTlmNDM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbGJhY2tGdW5jdGlvbi5oCkBAIC0wLDAgKzEsNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDYWxsYmFja0Z1bmN0aW9uX2gKKyNkZWZpbmUgQ2Fs
bGJhY2tGdW5jdGlvbl9oCisKKyNpbmNsdWRlIDxydW50aW1lL0pTT2JqZWN0Lmg+CisKK25hbWVz
cGFjZSBKU0MgeworY2xhc3MgRXhlY1N0YXRlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEpTRE9NR2xvYmFsT2JqZWN0OworCitlbnVtIENhbGxiYWNrQWxsb3dlZFZhbHVlRmxh
ZyB7CisgICAgQ2FsbGJhY2tBbGxvd1VuZGVmaW5lZCA9IDEsCisgICAgQ2FsbGJhY2tBbGxvd051
bGwgPSAxIDw8IDEKK307CisKK3R5cGVkZWYgdW5zaWduZWQgQ2FsbGJhY2tBbGxvd2VkVmFsdWVG
bGFnczsKKworYm9vbCBjaGVja0Z1bmN0aW9uT25seUNhbGxiYWNrKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBDYWxsYmFja0FsbG93ZWRWYWx1ZUZsYWdzKTsKKworLy8gQ3JlYXRlcyBj
YWxsYmFjayBvYmplY3RzIGZvciBjYWxsYmFja3MgbWFya2VkIGFzIEZ1bmN0aW9uT25seSBpbiBX
ZWJJREwuCit0ZW1wbGF0ZSA8dHlwZW5hbWUgSlNDYWxsYmFja1R5cGU+CitQYXNzUmVmUHRyPEpT
Q2FsbGJhY2tUeXBlPiBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjayhKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHZhbHVl
LCBDYWxsYmFja0FsbG93ZWRWYWx1ZUZsYWdzIGFjY2VwdGVkVmFsdWVzID0gMCkKK3sKKyAgICBp
ZiAoY2hlY2tGdW5jdGlvbk9ubHlDYWxsYmFjayhleGVjLCB2YWx1ZSwgYWNjZXB0ZWRWYWx1ZXMp
KQorICAgICAgICByZXR1cm4gSlNDYWxsYmFja1R5cGU6OmNyZWF0ZShhc09iamVjdCh2YWx1ZSks
IGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIENhbGxiYWNrRnVuY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggZDVjOTEzNTJhYzQ5YjQz
ODg3OGIyNzZmYzY0NzQwNzFkZjM0M2UwZi4uYTQ1N2NlOGRhYzQ0OGE2MDE0OGFlNTE0YTc3NGM3
ZWNhMzYyZjkzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5k
aW5nc0FsbEluT25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRp
bmdzQWxsSW5PbmUuY3BwCkBAIC0yNSw2ICsyNSw3IEBACiAKIC8vIFRoaXMgYWxsLWluLW9uZSBj
cHAgZmlsZSBjdXRzIGRvd24gb24gdGVtcGxhdGUgYmxvYXQgdG8gYWxsb3cgdXMgdG8gYnVpbGQg
b3VyIFdpbmRvd3MgcmVsZWFzZSBidWlsZC4KIAorI2luY2x1ZGUgIkNhbGxiYWNrRnVuY3Rpb24u
Y3BwIgogI2luY2x1ZGUgIkRPTU9iamVjdEhhc2hUYWJsZU1hcC5jcHAiCiAjaW5jbHVkZSAiRE9N
V3JhcHBlcldvcmxkLmNwcCIKICNpbmNsdWRlICJHQ0NvbnRyb2xsZXIuY3BwIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCAy
NDhhZGNmNDQxMWY4YmU5YzY2YTE5MTVmZmI5MjRmNDZlNTA4OGQ5Li5iOTNjNGNlYzRmYzQ0Nzgw
ZWE1ZTcyMzNkNDkxZWFjMjEyN2UwOWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMjgsMTQgKzI4LDEzIEBACiAKICNp
ZiBFTkFCTEUoR0VPTE9DQVRJT04pCiAKKyNpbmNsdWRlICJDYWxsYmFja0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1
ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmgi
CiAjaW5jbHVkZSAiSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCIKICNpbmNsdWRlICJK
U0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIlBvc2l0aW9uT3B0aW9ucy5oIgotI2luY2x1ZGUgPHJ1
bnRpbWUvSlNGdW5jdGlvbi5oPgogCiAjaWYgIUVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJ
T04pCiAjaW5jbHVkZSAiR2VvbG9jYXRpb25TZXJ2aWNlLmgiCkBAIC00NiwzNiArNDUsNiBAQCB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyBQYXNz
UmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IGNyZWF0ZVBvc2l0aW9uQ2FsbGJhY2soRXhlY1N0YXRl
KiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQot
ewotICAgIC8vIFRoZSBzcGVjIHNwZWNpZmllcyAnRnVuY3Rpb25Pbmx5JyBmb3IgdGhpcyBvYmpl
Y3QuCi0gICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgZGlzYWxsb3dzIGNhbGxhYmxlIG9iamVjdHMg
Y3JlYXRlZCB2aWEgSlNDIEFQSS4gSXQncyBub3QgY2xlYXIgd2hhdCBleGFjdGx5IHRoZSBzcGVj
aWZpY2F0aW9uIGludGVuZHMgdG8gYWxsb3cuCi0gICAgaWYgKCF2YWx1ZS5pbmhlcml0cygmSlNG
dW5jdGlvbjo6c19pbmZvKSkgewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9N
SVNNQVRDSF9FUlIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwotICAgIHJldHVybiBKU0N1c3RvbVBvc2l0aW9uQ2Fs
bGJhY2s6OmNyZWF0ZShvYmplY3QsIGdsb2JhbE9iamVjdCk7Ci19Ci0KLXN0YXRpYyBQYXNzUmVm
UHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gY3JlYXRlUG9zaXRpb25FcnJvckNhbGxiYWNrKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKLXsKLSAgICAvLyBBcmd1bWVudCBpcyBvcHRpb25hbCAoaGVuY2UgdW5kZWZpbmVkIGlz
IGFsbG93ZWQpLCBhbmQgbnVsbCBpcyBhbGxvd2VkLgotICAgIGlmICh2YWx1ZS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFRoZSBzcGVjIHNwZWNpZmll
cyAnRnVuY3Rpb25Pbmx5JyBmb3IgdGhpcyBvYmplY3QuCi0gICAgLy8gRklYTUU6IFRoaXMgY2hl
Y2sgZGlzYWxsb3dzIGNhbGxhYmxlIG9iamVjdHMgY3JlYXRlZCB2aWEgSlNDIEFQSS4gSXQncyBu
b3QgY2xlYXIgd2hhdCBleGFjdGx5IHRoZSBzcGVjaWZpY2F0aW9uIGludGVuZHMgdG8gYWxsb3cu
Ci0gICAgaWYgKCF2YWx1ZS5pbmhlcml0cygmSlNGdW5jdGlvbjo6c19pbmZvKSkgewotICAgICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwotICAgICAgICByZXR1
cm4gMDsKLSAgICB9Ci0KLSAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodmFsdWUpOwot
ICAgIHJldHVybiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwg
Z2xvYmFsT2JqZWN0KTsKLX0KLQogc3RhdGljIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBj
cmVhdGVQb3NpdGlvbk9wdGlvbnMoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQogewog
ICAgIC8vIENyZWF0ZSBkZWZhdWx0IG9wdGlvbnMuCkBAIC0xNDQsMTIgKzExMywxMiBAQCBKU1Zh
bHVlIEpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7
CiAgICAgLy8gQXJndW1lbnRzOiBQb3NpdGlvbkNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25F
cnJvckNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25PcHRpb25zCiAKLSAgICBSZWZQdHI8UG9z
aXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjayA9IGNyZWF0ZVBvc2l0aW9uQ2FsbGJhY2so
ZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJh
Y2s+IHBvc2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU0N1c3Rv
bVBvc2l0aW9uQ2FsbGJhY2s+KGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgQVNTRVJUKHBvc2l0aW9uQ2FsbGJhY2spOwogCi0gICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JD
YWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrID0gY3JlYXRlUG9zaXRpb25FcnJvckNhbGxi
YWNrKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMSkpOworICAgIFJlZlB0cjxQb3NpdGlvbkVy
cm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNh
bGxiYWNrPEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrPihleGVjLCBzdGF0aWNfY2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFy
Z3VtZW50KDEpLCBDYWxsYmFja0FsbG93VW5kZWZpbmVkIHwgQ2FsbGJhY2tBbGxvd051bGwpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAKQEAgLTE2NiwxMiArMTM1LDEyIEBAIEpTVmFsdWUgSlNHZW9sb2NhdGlvbjo6d2F0Y2hQ
b3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8gQXJndW1lbnRzOiBQb3NpdGlvbkNh
bGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25FcnJvckNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRp
b25PcHRpb25zCiAKLSAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFj
ayA9IGNyZWF0ZVBvc2l0aW9uQ2FsbGJhY2soZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgwKSk7
CisgICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2sgPSBjcmVhdGVG
dW5jdGlvbk9ubHlDYWxsYmFjazxKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s+KGV4ZWMsIHN0YXRp
Y19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwg
ZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgQVNTRVJUKHBvc2l0aW9uQ2FsbGJhY2spOwog
Ci0gICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNr
ID0gY3JlYXRlUG9zaXRpb25FcnJvckNhbGxiYWNrKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQo
MSkpOworICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxs
YmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPEpTQ3VzdG9tUG9zaXRpb25FcnJvckNh
bGxiYWNrPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KDEpLCBDYWxsYmFja0FsbG93VW5kZWZp
bmVkIHwgQ2FsbGJhY2tBbGxvd051bGwpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
</data>
<flag name="commit-queue"
          id="80963"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>