<?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>168295</bug_id>
          
          <creation_ts>2017-02-14 01:06:06 -0800</creation_ts>
          <short_desc>Expose Symbol.toPrimitive / valueOf on Location instances</short_desc>
          <delta_ts>2017-02-15 10:25:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://html.spec.whatwg.org/#the-location-interface</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anne van Kesteren">annevk</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1276641</commentid>
    <comment_count>0</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2017-02-14 01:06:06 -0800</bug_when>
    <thetext>Test: http://web-platform.test:8000/html/browsers/history/the-location-interface/location-symbol-toprimitive.html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276642</commentid>
    <comment_count>1</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2017-02-14 01:11:12 -0800</bug_when>
    <thetext>The same goes for valueOf: http://web-platform.test:8000/html/browsers/history/the-location-interface/location-valueof.html. (Let me know if you need a separate bug.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276763</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-14 08:42:50 -0800</bug_when>
    <thetext>To create a Location object, run these steps:

Let location be a new Location platform object.

Perform ! location.[[DefineOwnProperty]](&quot;valueOf&quot;, { [[Value]]: %ObjProto_valueOf%, [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }).

Perform ! location.[[DefineOwnProperty]](@@toPrimitive, { [[Value]]: undefined, [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }).

Set the value of the [[DefaultProperties]] internal slot of location to location.[[OwnPropertyKeys]]().

Return location.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276765</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-14 08:43:20 -0800</bug_when>
    <thetext>Will take a look soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276803</commentid>
    <comment_count>4</comment_count>
      <attachid>301516</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-14 10:20:37 -0800</bug_when>
    <thetext>Created attachment 301516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276823</commentid>
    <comment_count>5</comment_count>
      <attachid>301516</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-02-14 10:58:34 -0800</bug_when>
    <thetext>Comment on attachment 301516
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3430
&gt; +        push(@implContent, &quot;    auto objProtoValueOf = globalObject()-&gt;objectPrototype()-&gt;getDirect(vm, vm.propertyNames-&gt;valueOf);\n&quot;);

Please just spell out &quot;object&quot; instead of using &quot;obj&quot;.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3432
&gt; +        push(@implContent, &quot;    putDirect(vm, vm.propertyNames-&gt;valueOf, objProtoValueOf, DontDelete | ReadOnly | DontEnum);\n&quot;);

Is this correct if the object prototype valueOf property’s value changes after creating the Location interface? Do we have test cases covered?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276829</commentid>
    <comment_count>6</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-02-14 11:02:13 -0800</bug_when>
    <thetext>&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3431
&gt; +        push(@implContent, &quot;    auto objProtoValueOf = globalObject()-&gt;objectPrototype()-&gt;getDirect(vm, vm.propertyNames-&gt;valueOf);\n&quot;);
&gt; +        push(@implContent, &quot;    ASSERT(objProtoValueOf);\n&quot;);

It&apos;s possible to change or delete this property, so I don&apos;t think this is correct.

In cases where we might later need the original value of a certain property, we provide an accessor on JSGlobalObject, such as:

    // The following accessors return pristine values, even if a script 
    // replaces the global object&apos;s associated property.

    GetterSetter* speciesGetterSetter() const { return m_speciesGetterSetter.get(); }

    RegExpConstructor* regExpConstructor() const { return m_regExpConstructor.get(); }

    ErrorConstructor* errorConstructor() const { return m_errorConstructor.get(); }
    ArrayConstructor* arrayConstructor() const { return m_arrayConstructor.get(); }
    ObjectConstructor* objectConstructor() const { return m_objectConstructor.get(); }
    JSPromiseConstructor* promiseConstructor() const { return m_promiseConstructor.get(); }
    JSInternalPromiseConstructor* internalPromiseConstructor() const { return m_internalPromiseConstructor.get(); }
    NativeErrorConstructor* evalErrorConstructor() const { return m_evalErrorConstructor.get(this); }
    NativeErrorConstructor* rangeErrorConstructor() const { return m_rangeErrorConstructor.get(); }
    NativeErrorConstructor* referenceErrorConstructor() const { return m_referenceErrorConstructor.get(this); }
    NativeErrorConstructor* syntaxErrorConstructor() const { return m_syntaxErrorConstructor.get(this); }
    NativeErrorConstructor* typeErrorConstructor() const { return m_typeErrorConstructor.get(); }
    NativeErrorConstructor* URIErrorConstructor() const { return m_URIErrorConstructor.get(this); }

    NullGetterFunction* nullGetterFunction() const { return m_nullGetterFunction.get(); }
    NullSetterFunction* nullSetterFunction() const { return m_nullSetterFunction.get(); }

    JSFunction* parseIntFunction() const { return m_parseIntFunction.get(); }

    JSFunction* evalFunction() const { return m_evalFunction.get(); }
    JSFunction* callFunction() const { return m_callFunction.get(); }
    JSFunction* applyFunction() const { return m_applyFunction.get(); }
    JSFunction* throwTypeErrorFunction() const { return m_throwTypeErrorFunction.get(); }
    JSFunction* arrayProtoToStringFunction() const { return m_arrayProtoToStringFunction.get(this); }
    JSFunction* arrayProtoValuesFunction() const { return m_arrayProtoValuesFunction.get(this); }
    JSFunction* initializePromiseFunction() const { return m_initializePromiseFunction.get(this); }
    JSFunction* iteratorProtocolFunction() const { return m_iteratorProtocolFunction.get(this); }
    JSFunction* newPromiseCapabilityFunction() const { return m_newPromiseCapabilityFunction.get(); }
    JSFunction* functionProtoHasInstanceSymbolFunction() const { return m_functionProtoHasInstanceSymbolFunction.get(); }
    JSObject* regExpProtoExecFunction() const { return m_regExpProtoExec.get(); }
    JSObject* regExpProtoSymbolReplaceFunction() const { return m_regExpProtoSymbolReplace.get(); }
    JSObject* regExpProtoGlobalGetter() const { return m_regExpProtoGlobalGetter.get(); }
    JSObject* regExpProtoUnicodeGetter() const { return m_regExpProtoUnicodeGetter.get(); }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276830</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-14 11:03:35 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3431
&gt; &gt; +        push(@implContent, &quot;    auto objProtoValueOf = globalObject()-&gt;objectPrototype()-&gt;getDirect(vm, vm.propertyNames-&gt;valueOf);\n&quot;);
&gt; &gt; +        push(@implContent, &quot;    ASSERT(objProtoValueOf);\n&quot;);
&gt; 
&gt; It&apos;s possible to change or delete this property, so I don&apos;t think this is
&gt; correct.
&gt; 
&gt; In cases where we might later need the original value of a certain property,
&gt; we provide an accessor on JSGlobalObject, such as:
&gt; 
&gt;     // The following accessors return pristine values, even if a script 
&gt;     // replaces the global object&apos;s associated property.
&gt; 
&gt;     GetterSetter* speciesGetterSetter() const { return
&gt; m_speciesGetterSetter.get(); }
&gt; 
&gt;     RegExpConstructor* regExpConstructor() const { return
&gt; m_regExpConstructor.get(); }
&gt; 
&gt;     ErrorConstructor* errorConstructor() const { return
&gt; m_errorConstructor.get(); }
&gt;     ArrayConstructor* arrayConstructor() const { return
&gt; m_arrayConstructor.get(); }
&gt;     ObjectConstructor* objectConstructor() const { return
&gt; m_objectConstructor.get(); }
&gt;     JSPromiseConstructor* promiseConstructor() const { return
&gt; m_promiseConstructor.get(); }
&gt;     JSInternalPromiseConstructor* internalPromiseConstructor() const {
&gt; return m_internalPromiseConstructor.get(); }
&gt;     NativeErrorConstructor* evalErrorConstructor() const { return
&gt; m_evalErrorConstructor.get(this); }
&gt;     NativeErrorConstructor* rangeErrorConstructor() const { return
&gt; m_rangeErrorConstructor.get(); }
&gt;     NativeErrorConstructor* referenceErrorConstructor() const { return
&gt; m_referenceErrorConstructor.get(this); }
&gt;     NativeErrorConstructor* syntaxErrorConstructor() const { return
&gt; m_syntaxErrorConstructor.get(this); }
&gt;     NativeErrorConstructor* typeErrorConstructor() const { return
&gt; m_typeErrorConstructor.get(); }
&gt;     NativeErrorConstructor* URIErrorConstructor() const { return
&gt; m_URIErrorConstructor.get(this); }
&gt; 
&gt;     NullGetterFunction* nullGetterFunction() const { return
&gt; m_nullGetterFunction.get(); }
&gt;     NullSetterFunction* nullSetterFunction() const { return
&gt; m_nullSetterFunction.get(); }
&gt; 
&gt;     JSFunction* parseIntFunction() const { return m_parseIntFunction.get(); }
&gt; 
&gt;     JSFunction* evalFunction() const { return m_evalFunction.get(); }
&gt;     JSFunction* callFunction() const { return m_callFunction.get(); }
&gt;     JSFunction* applyFunction() const { return m_applyFunction.get(); }
&gt;     JSFunction* throwTypeErrorFunction() const { return
&gt; m_throwTypeErrorFunction.get(); }
&gt;     JSFunction* arrayProtoToStringFunction() const { return
&gt; m_arrayProtoToStringFunction.get(this); }
&gt;     JSFunction* arrayProtoValuesFunction() const { return
&gt; m_arrayProtoValuesFunction.get(this); }
&gt;     JSFunction* initializePromiseFunction() const { return
&gt; m_initializePromiseFunction.get(this); }
&gt;     JSFunction* iteratorProtocolFunction() const { return
&gt; m_iteratorProtocolFunction.get(this); }
&gt;     JSFunction* newPromiseCapabilityFunction() const { return
&gt; m_newPromiseCapabilityFunction.get(); }
&gt;     JSFunction* functionProtoHasInstanceSymbolFunction() const { return
&gt; m_functionProtoHasInstanceSymbolFunction.get(); }
&gt;     JSObject* regExpProtoExecFunction() const { return
&gt; m_regExpProtoExec.get(); }
&gt;     JSObject* regExpProtoSymbolReplaceFunction() const { return
&gt; m_regExpProtoSymbolReplace.get(); }
&gt;     JSObject* regExpProtoGlobalGetter() const { return
&gt; m_regExpProtoGlobalGetter.get(); }
&gt;     JSObject* regExpProtoUnicodeGetter() const { return
&gt; m_regExpProtoUnicodeGetter.get(); }

Thanks, I&apos;ll update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276831</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-02-14 11:03:44 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; It&apos;s possible to change or delete this property, so I don&apos;t think this is
&gt; correct.

We should verify this with test cases: one that changes and another that deletes the property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276835</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-14 11:13:49 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt; It&apos;s possible to change or delete this property, so I don&apos;t think this is
&gt; &gt; correct.
&gt; 
&gt; We should verify this with test cases: one that changes and another that
&gt; deletes the property.

Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276899</commentid>
    <comment_count>10</comment_count>
      <attachid>301539</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-14 13:28:17 -0800</bug_when>
    <thetext>Created attachment 301539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276901</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-14 13:28:41 -0800</bug_when>
    <thetext>Take #2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276905</commentid>
    <comment_count>12</comment_count>
      <attachid>301539</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-02-14 13:40:05 -0800</bug_when>
    <thetext>Comment on attachment 301539
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276906</commentid>
    <comment_count>13</comment_count>
      <attachid>301539</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-02-14 13:41:10 -0800</bug_when>
    <thetext>Comment on attachment 301539
Patch

r=me too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276907</commentid>
    <comment_count>14</comment_count>
      <attachid>301539</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-14 13:43:19 -0800</bug_when>
    <thetext>Comment on attachment 301539
Patch

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

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:461
&gt; +    m_objectProtoValueOfFunction.set(vm, this, jsCast&lt;JSFunction*&gt;(objectPrototype()-&gt;getDirect(vm, vm.propertyNames-&gt;valueOf)));

You also need to visit m_objectProtoValueOfFunction in JSGlobalObject::visitChildren().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276909</commentid>
    <comment_count>15</comment_count>
      <attachid>301543</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-14 13:52:56 -0800</bug_when>
    <thetext>Created attachment 301543
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276910</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-14 13:53:30 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Comment on attachment 301539 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=301539&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:461
&gt; &gt; +    m_objectProtoValueOfFunction.set(vm, this, jsCast&lt;JSFunction*&gt;(objectPrototype()-&gt;getDirect(vm, vm.propertyNames-&gt;valueOf)));
&gt; 
&gt; You also need to visit m_objectProtoValueOfFunction in
&gt; JSGlobalObject::visitChildren().

Sorry, I completely forgot to do this. This is fixed in the latest iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276911</commentid>
    <comment_count>17</comment_count>
      <attachid>301544</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-14 14:00:19 -0800</bug_when>
    <thetext>Created attachment 301544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276916</commentid>
    <comment_count>18</comment_count>
      <attachid>301544</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-02-14 14:19:49 -0800</bug_when>
    <thetext>Comment on attachment 301544
Patch

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

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:461
&gt; +    m_objectProtoValueOfFunction.set(vm, this, jsCast&lt;JSFunction*&gt;(objectPrototype()-&gt;getDirect(vm, vm.propertyNames-&gt;valueOf)));

It would be nicer to find a way to do this without the cast; there must be code that originally allocated this that knows it’s a JSFunction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276919</commentid>
    <comment_count>19</comment_count>
      <attachid>301544</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-14 14:35:57 -0800</bug_when>
    <thetext>Comment on attachment 301544
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:461
&gt;&gt; +    m_objectProtoValueOfFunction.set(vm, this, jsCast&lt;JSFunction*&gt;(objectPrototype()-&gt;getDirect(vm, vm.propertyNames-&gt;valueOf)));
&gt; 
&gt; It would be nicer to find a way to do this without the cast; there must be code that originally allocated this that knows it’s a JSFunction.

I am not sure how to do that. We use putDirectNativeFunctionWithoutTransition() to create the JSFunction from the NativeFunction and put in on the object for us.
But then, on getting via get/getDirect, we get a JSValue (Also note that I do not want to create a new JSFunction because I need to preserve identity between Object.prototype.valueOf and location.valueOf).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276926</commentid>
    <comment_count>20</comment_count>
      <attachid>301544</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-02-14 14:50:03 -0800</bug_when>
    <thetext>Comment on attachment 301544
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:461
&gt;&gt;&gt; +    m_objectProtoValueOfFunction.set(vm, this, jsCast&lt;JSFunction*&gt;(objectPrototype()-&gt;getDirect(vm, vm.propertyNames-&gt;valueOf)));
&gt;&gt; 
&gt;&gt; It would be nicer to find a way to do this without the cast; there must be code that originally allocated this that knows it’s a JSFunction.
&gt; 
&gt; I am not sure how to do that. We use putDirectNativeFunctionWithoutTransition() to create the JSFunction from the NativeFunction and put in on the object for us.
&gt; But then, on getting via get/getDirect, we get a JSValue (Also note that I do not want to create a new JSFunction because I need to preserve identity between Object.prototype.valueOf and location.valueOf).

One idea: Could add a JSFunction* return value to putDirectNativeFunctionWithoutTransition, ignored by other callers, but used in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276929</commentid>
    <comment_count>21</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-14 14:53:28 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Comment on attachment 301544 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=301544&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:461
&gt; &gt;&gt;&gt; +    m_objectProtoValueOfFunction.set(vm, this, jsCast&lt;JSFunction*&gt;(objectPrototype()-&gt;getDirect(vm, vm.propertyNames-&gt;valueOf)));
&gt; &gt;&gt; 
&gt; &gt;&gt; It would be nicer to find a way to do this without the cast; there must be code that originally allocated this that knows it’s a JSFunction.
&gt; &gt; 
&gt; &gt; I am not sure how to do that. We use putDirectNativeFunctionWithoutTransition() to create the JSFunction from the NativeFunction and put in on the object for us.
&gt; &gt; But then, on getting via get/getDirect, we get a JSValue (Also note that I do not want to create a new JSFunction because I need to preserve identity between Object.prototype.valueOf and location.valueOf).
&gt; 
&gt; One idea: Could add a JSFunction* return value to
&gt; putDirectNativeFunctionWithoutTransition, ignored by other callers, but used
&gt; in this case.

putDirectNativeFunctionWithoutTransition() is called inside ObjectPrototype::finishCreation(). I need access to it in the JSGlobalObject after the ObjectPrototype has been constructed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276931</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-14 14:54:55 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; Comment on attachment 301544 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=301544&amp;action=review
&gt; &gt; 
&gt; &gt; &gt;&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:461
&gt; &gt; &gt;&gt;&gt; +    m_objectProtoValueOfFunction.set(vm, this, jsCast&lt;JSFunction*&gt;(objectPrototype()-&gt;getDirect(vm, vm.propertyNames-&gt;valueOf)));
&gt; &gt; &gt;&gt; 
&gt; &gt; &gt;&gt; It would be nicer to find a way to do this without the cast; there must be code that originally allocated this that knows it’s a JSFunction.
&gt; &gt; &gt; 
&gt; &gt; &gt; I am not sure how to do that. We use putDirectNativeFunctionWithoutTransition() to create the JSFunction from the NativeFunction and put in on the object for us.
&gt; &gt; &gt; But then, on getting via get/getDirect, we get a JSValue (Also note that I do not want to create a new JSFunction because I need to preserve identity between Object.prototype.valueOf and location.valueOf).
&gt; &gt; 
&gt; &gt; One idea: Could add a JSFunction* return value to
&gt; &gt; putDirectNativeFunctionWithoutTransition, ignored by other callers, but used
&gt; &gt; in this case.
&gt; 
&gt; putDirectNativeFunctionWithoutTransition() is called inside
&gt; ObjectPrototype::finishCreation(). I need access to it in the JSGlobalObject
&gt; after the ObjectPrototype has been constructed.

c.f.
void ObjectPrototype::finishCreation(VM&amp; vm, JSGlobalObject* globalObject)
{
    Base::finishCreation(vm);
    ASSERT(inherits(vm, info()));
    // ...
    JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames-&gt;valueOf, objectProtoFuncValueOf, DontEnum, 0);
    // ...
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1276954</commentid>
    <comment_count>23</comment_count>
      <attachid>301544</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-02-14 15:15:58 -0800</bug_when>
    <thetext>Comment on attachment 301544
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:461
&gt;&gt;&gt;&gt;&gt;&gt; +    m_objectProtoValueOfFunction.set(vm, this, jsCast&lt;JSFunction*&gt;(objectPrototype()-&gt;getDirect(vm, vm.propertyNames-&gt;valueOf)));
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; It would be nicer to find a way to do this without the cast; there must be code that originally allocated this that knows it’s a JSFunction.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; I am not sure how to do that. We use putDirectNativeFunctionWithoutTransition() to create the JSFunction from the NativeFunction and put in on the object for us.
&gt;&gt;&gt;&gt; But then, on getting via get/getDirect, we get a JSValue (Also note that I do not want to create a new JSFunction because I need to preserve identity between Object.prototype.valueOf and location.valueOf).
&gt;&gt;&gt; 
&gt;&gt;&gt; One idea: Could add a JSFunction* return value to putDirectNativeFunctionWithoutTransition, ignored by other callers, but used in this case.
&gt;&gt; 
&gt;&gt; putDirectNativeFunctionWithoutTransition() is called inside ObjectPrototype::finishCreation(). I need access to it in the JSGlobalObject after the ObjectPrototype has been constructed.
&gt; 
&gt; c.f.
&gt; void ObjectPrototype::finishCreation(VM&amp; vm, JSGlobalObject* globalObject)
&gt; {
&gt;     Base::finishCreation(vm);
&gt;     ASSERT(inherits(vm, info()));
&gt;     // ...
&gt;     JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames-&gt;valueOf, objectProtoFuncValueOf, DontEnum, 0);
&gt;     // ...
&gt; }

Some details to consider:
1. JSGlobalObject::init() (this function) doesn&apos;t itself call putDirectNativeFunctionWithoutTransition() to create the Function that it is trying to cache.
2. JSGlobalObject::init() instantiates m_objectPrototype above.  It&apos;s the ObjectPrototype factory that creates the function.
3. It would be strange for ObjectPrototype::finishCreation() to cache the function in the globalObject.  This creates a tighter coupling between ObjectPrototype and JSGlobalObject.

For these reasons, I think the way Chris implemented it is just fine.  I suggest we move forward with this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277252</commentid>
    <comment_count>24</comment_count>
      <attachid>301544</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-15 10:20:40 -0800</bug_when>
    <thetext>Comment on attachment 301544
Patch

Rejecting attachment 301544 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 301544, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ckout/scm/scm.py&quot;, line 77, in run
    decode_output=decode_output)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/common/system/executive.py&quot;, line 443, in run_command
    output = output.decode(self._child_process_encoding())
  File &quot;/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/utf_8.py&quot;, line 16, in decode
    return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: &apos;utf8&apos; codec can&apos;t decode byte 0xad in position 142: invalid start byte

Full output: http://webkit-queues.webkit.org/results/3122689</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277256</commentid>
    <comment_count>25</comment_count>
      <attachid>301544</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-15 10:25:15 -0800</bug_when>
    <thetext>Comment on attachment 301544
Patch

Clearing flags on attachment: 301544

Committed r212378: &lt;http://trac.webkit.org/changeset/212378&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1277257</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-02-15 10:25:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301516</attachid>
            <date>2017-02-14 10:20:37 -0800</date>
            <delta_ts>2017-02-14 13:28:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168295-20170214101804.patch</filename>
            <type>text/plain</type>
            <size>8141</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU5YWYwOGNjYTljNjE3
NWUzMjQ4ZjUwMDhjMWYyOThkYWUxYzU1OC4uNzA3MmNjYjA5ZTA4YzRlOTlmNzA0OTFmZjNjNDY5
MGQyODczODZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE3LTAyLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIFN5bWJvbC50b1By
aW1pdGl2ZSAvIHZhbHVlT2Ygb24gTG9jYXRpb24gaW5zdGFuY2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyOTUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgU3ltYm9sLnRvUHJpbWl0aXZl
IC8gdmFsdWVPZiBvbiBMb2NhdGlvbiBpbnN0YW5jZXMgYXMgcGVyOgorICAgICAgICAtIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UKKworICAgICAg
ICBGaXJlZm94IGFuZCBDaHJvbWUgYWxyZWFkeSBjb21wbHkgd2l0aCB0aGUgc3BlY2lmaWNhdGlv
bi4KKworICAgICAgICBUZXN0czogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbi1zeW1ib2wt
dG9wcmltaXRpdmUuaHRtbAorICAgICAgICAgICAgICAgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2Nh
dGlvbi12YWx1ZW9mLmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisKIDIwMTctMDIt
MTQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ29y
ZSBzaG91bGRuJ3QgZXhwb3J0IFN5c3RlbU1lbW9yeS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDRiYzkxMWE3MDdkNDhj
ZTAxZDdiNjhlMzM3ODI2NDEzNzhmMmUzZDkuLjg1MGU4ZGY0YTgyZTBlMWU0MWI3YjI0NDI3NzJj
ZWIwOGYwZWJkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC0zNDI2LDYgKzM0MjYsMTMgQEAgc3ViIEdlbmVyYXRlSW1w
bGVtZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKGluaGVy
aXRzKHZtLCBpbmZvKCkpKTtcblxuIik7CiAgICAgfQogCisgICAgaWYgKCRpbnRlcmZhY2VOYW1l
IGVxICJMb2NhdGlvbiIpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byBv
YmpQcm90b1ZhbHVlT2YgPSBnbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG90eXBlKCktPmdldERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dmFsdWVPZik7XG4iKTsKKyAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgQVNTRVJUKG9ialByb3RvVmFsdWVPZik7XG4iKTsKKyAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52
YWx1ZU9mLCBvYmpQcm90b1ZhbHVlT2YsIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
KTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnRvUHJpbWl0aXZlU3ltYm9sLCBqc1VuZGVmaW5lZCgpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7XG4iKTsKKyAgICB9CisKICAgICAjIFN1cHBvcnQg
Zm9yIFJ1bnRpbWVFbmFibGVkIGF0dHJpYnV0ZXMgb24gaW5zdGFuY2VzLgogICAgIGZvcmVhY2gg
bXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewogICAgICAgICBuZXh0
IHVubGVzcyBOZWVkc1J1bnRpbWVDaGVjaygkYXR0cmlidXRlKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
Q2hhbmdlTG9nCmluZGV4IDgyMDBiNGU5NzgyMDIwODMxNjM5ZjRkNzRhYzM4NTIzOWM1ZGRkMjIu
Ljg3M2M0NTFjZTJjMjM0YjE2MGMwMjIyMWUyZmU0MDhlZWQ2MzkwYTcgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTAyLTE0ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIFN5bWJvbC50b1ByaW1pdGl2
ZSAvIHZhbHVlT2Ygb24gTG9jYXRpb24gaW5zdGFuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyOTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbXBvcnQgdGVzdCBjb3ZlcmFnZSBmcm9tIHVwc3Ry
ZWFtIHdlYi1wbGF0Zm9ybS10ZXN0cy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbi1zeW1i
b2wtdG9wcmltaXRpdmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9j
YXRpb24tc3ltYm9sLXRvcHJpbWl0aXZlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9s
b2NhdGlvbi12YWx1ZW9mLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xv
Y2F0aW9uLXZhbHVlb2YuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL3czYy1pbXBvcnQu
bG9nOgorCiAyMDE3LTAyLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVVJMcyB3aXRoIGFuIGludmFsaWQgSVB2NCBhZGRyZXNzIHNob3Vs
ZCBiZSBpbnZhbGlkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNl
L2xvY2F0aW9uLXN5bWJvbC10b3ByaW1pdGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUt
bG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXN5bWJvbC10b3ByaW1pdGl2ZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNWYwNTI1MTBmMzViN2Y4YjgxNWU0NDNhMjBhY2NjMWEyZmE4OTY3NQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRp
b24tc3ltYm9sLXRvcHJpbWl0aXZlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFT
UyBMb2NhdGlvbiBTeW1ib2wudG9QcmltaXRpdmUgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3Ro
ZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tc3ltYm9sLXRvcHJpbWl0aXZlLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
aGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXN5bWJvbC10b3ByaW1pdGl2
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU2NjZhM2U3MDM1NGRkZTAxNTA5YjJjNjFjMDk3MTg1NWNjMjk2
NzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xv
Y2F0aW9uLXN5bWJvbC10b3ByaW1pdGl2ZS5odG1sCkBAIC0wLDAgKzEsMTQgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPHRpdGxlPkxvY2F0aW9uIFN5bWJvbC50b1ByaW1pdGl2ZTwvdGl0bGU+Cis8c2Ny
aXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48L3NjcmlwdD4KKzxkaXYgaWQ9bG9nPjwv
ZGl2PgorPHNjcmlwdD4KK3Rlc3QoKCkgPT4geworICBhc3NlcnRfZXF1YWxzKGxvY2F0aW9uW1N5
bWJvbC50b1ByaW1pdGl2ZV0sIHVuZGVmaW5lZCkKKyAgY29uc3QgcHJvcCA9IE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IobG9jYXRpb24sIFN5bWJvbC50b1ByaW1pdGl2ZSkKKyAgYXNz
ZXJ0X2ZhbHNlKHByb3AuZW51bWVyYWJsZSkKKyAgYXNzZXJ0X2ZhbHNlKHByb3Aud3JpdGFibGUp
CisgIGFzc2VydF9mYWxzZShwcm9wLmNvbmZpZ3VyYWJsZSkKK30pCis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tdmFsdWVvZi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXZh
bHVlb2YtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1MWVmNjk2NWM0ZTIzNjc0YjQ0NGEzY2Mx
NTdjMTA0Yjk0M2RjZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24t
aW50ZXJmYWNlL2xvY2F0aW9uLXZhbHVlb2YtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAor
CitQQVNTIExvY2F0aW9uIHZhbHVlT2YgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2Nh
dGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tdmFsdWVvZi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0
aW9uLWludGVyZmFjZS9sb2NhdGlvbi12YWx1ZW9mLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTc4YmJiNjNh
MGI0MWFlNTVjMDUxOWNhNmViYjllZjBkNTUzMDRkYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0
b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tdmFsdWVvZi5odG1sCkBAIC0wLDAg
KzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPkxvY2F0aW9uIHZhbHVlT2Y8L3RpdGxl
PgorPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+Cis8ZGl2IGlk
PWxvZz48L2Rpdj4KKzxzY3JpcHQ+Cit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X2VxdWFscyhsb2Nh
dGlvbi52YWx1ZU9mLCBPYmplY3QucHJvdG90eXBlLnZhbHVlT2YpCisgIGFzc2VydF9lcXVhbHMo
dHlwZW9mIGxvY2F0aW9uLnZhbHVlT2YuY2FsbCg1KSwgIm9iamVjdCIpCisgIGNvbnN0IHByb3Ag
PSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGxvY2F0aW9uLCAidmFsdWVPZiIpCisg
IGFzc2VydF9mYWxzZShwcm9wLmVudW1lcmFibGUpCisgIGFzc2VydF9mYWxzZShwcm9wLndyaXRh
YmxlKQorICBhc3NlcnRfZmFsc2UocHJvcC5jb25maWd1cmFibGUpCit9KQorPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS93M2MtaW1wb3J0LmxvZwppbmRleCA0
MzBlMGIxNjBjOWU1YjJkOTA4ODAxMTkxZWZkZDJiYWFlZWFkMzY3Li5iYmQ0ZTE3MzI0MzZlOGZj
NjBkY2Y2MWE1YTQ1NzFlY2EzNGE4NTNjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRp
b24taW50ZXJmYWNlL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1p
bnRlcmZhY2UvdzNjLWltcG9ydC5sb2cKQEAgLTI5LDYgKzI5LDggQEAgTGlzdCBvZiBmaWxlczoK
IC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXByb3RvY29sLXNldHRl
ci5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbi1wcm90b3R5
cGUtc2V0dGluZy5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlv
bi1zdHJpbmdpZmllci5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2Nh
dGlvbi1zeW1ib2wtdG9wcmltaXRpdmUuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRl
cmZhY2UvbG9jYXRpb24tdmFsdWVvZi5odG1sIAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRl
cmZhY2UvbG9jYXRpb25fYXNzaWduX2Fib3V0X2JsYW5rLTEuaHRtbAogL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1s
b2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb25fYXNzaWduX2Fib3V0X2JsYW5rLmh0bWwKIC9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlz
dG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uX2hhc2guaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301539</attachid>
            <date>2017-02-14 13:28:17 -0800</date>
            <delta_ts>2017-02-14 13:52:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168295-20170214132544.patch</filename>
            <type>text/plain</type>
            <size>15734</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YzhlNDBjMmI0YzEzMTUwYzgyMDI4NzcwM2IzODkyZjkwY2I5NTgyLi5jNThjZjQ1ZTQ5ZWQwMmZi
OWY5OGVlNGNiZDk5NjQ1YzIwZjk5NTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNy0wMi0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEV4cG9zZSBTeW1ib2wudG9QcmltaXRpdmUgLyB2YWx1ZU9mIG9uIExvY2F0aW9u
IGluc3RhbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY4Mjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ2FjaGUgb3JpZ2luIG9iamVjdFByb3RvVmFsdWVPZiBmdW5jdGlvbiBvbiBKU0dsb2JhbE9i
amVjdC4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6b2JqZWN0UHJvdG9WYWx1ZU9m
RnVuY3Rpb24pOgorCiAyMDE3LTAyLTEzICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUu
Y29tPgogCiAgICAgICAgIGFzeW5jRGlzYXNzZW1ibHkgY3Jhc2hlcyBvbiBpT1MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCBhZTlhZjA4Y2NhOWM2MTc1ZTMyNDhmNTAwOGMxZjI5OGRhZTFjNTU4Li4zMWNiNWY4YWFm
YmE4MzgwNzA5ZjRiM2ViODc0NzEzMjJjM2Q3Mzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMg
QEAKKzIwMTctMDItMTQgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAg
ICBFeHBvc2UgU3ltYm9sLnRvUHJpbWl0aXZlIC8gdmFsdWVPZiBvbiBMb2NhdGlvbiBpbnN0YW5j
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODI5
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4cG9z
ZSBTeW1ib2wudG9QcmltaXRpdmUgLyB2YWx1ZU9mIG9uIExvY2F0aW9uIGluc3RhbmNlcyBhcyBw
ZXI6CisgICAgICAgIC0gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdGhlLWxvY2F0aW9u
LWludGVyZmFjZQorCisgICAgICAgIEZpcmVmb3ggYW5kIENocm9tZSBhbHJlYWR5IGNvbXBseSB3
aXRoIHRoZSBzcGVjaWZpY2F0aW9uLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9sb2NhdGlv
bi12YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRlLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvZG9tL2xvY2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2JqZWN0LXByb3RvdHlwZS11cGRh
dGUyLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tc3lt
Ym9sLXRvcHJpbWl0aXZlLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2Uv
bG9jYXRpb24tdmFsdWVvZi5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorCiAyMDE3
LTAyLTE0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YkNvcmUgc2hvdWxkbid0IGV4cG9ydCBTeXN0ZW1NZW1vcnkuaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGRkNzQ2M2M3M2E3YjEy
Y2VjNTdkNjliOTJhNWIwMjYxYzZmNDRiYzcuLjZmZGM4NjY5ZmVlZTI3MzlkYzA0NDYzNTQxMDM1
NzI1NDg3OWZhOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTQ1OCw2ICs0NTgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojpp
bml0KFZNJiB2bSkKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0Tm9uSW5kZXhBY2Nl
c3Nvcih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvLCBwcm90b0FjY2Vzc29y
LCBBY2Nlc3NvciB8IERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5zdHJ1Y3R1
cmUoKS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24odm0sIG1fb2JqZWN0UHJvdG90eXBl
LmdldCgpKTsKICAgICBtX29iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yLnNldCh2
bSwgdGhpcywgdm0ucHJvdG90eXBlTWFwLmVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBl
KHRoaXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpLCBKU0ZpbmFsT2JqZWN0OjpkZWZhdWx0SW5s
aW5lQ2FwYWNpdHkoKSkpOworICAgIG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24uc2V0KHZt
LCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdFByb3RvdHlwZSgpLT5nZXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlT2YpKSk7CiAgICAgCiAgICAgSlNGdW5jdGlvbiog
dGhyb3dlciA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2Jh
bEZ1bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcik7CiAgICAgR2V0dGVy
U2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgdGhpcyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBm
OWRlNjQxYjYzZmE4MDA4ZjhiZGZjM2NjNTQ2NjRkMTc3NTNkZGYwLi45ZDRiYmJmNDc5Y2MwYzMy
M2RjMTJmNTE4OWVkNDI0NmU0NjFkM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI2Miw2ICsyNjIsNyBAQCBwdWJsaWM6CiAgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9WYWx1
ZXNGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+
IG1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxP
YmplY3QsIEpTRnVuY3Rpb24+IG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOworICAgIFdyaXRl
QmFycmllcjxKU0Z1bmN0aW9uPiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uOwogICAgIFdy
aXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb247CiAg
ICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3lt
Ym9sRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBHZXR0ZXJTZXR0
ZXI+IG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXI7CkBAIC01MDksNiArNTEwLDcgQEAgcHVi
bGljOgogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVu
Y3Rpb24qIGluaXRpYWxpemVQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2luaXRp
YWxpemVQcm9taXNlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogaXRlcmF0
b3JQcm90b2NvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29sRnVu
Y3Rpb24uZ2V0KHRoaXMpOyB9CisgICAgSlNGdW5jdGlvbiogb2JqZWN0UHJvdG9WYWx1ZU9mRnVu
Y3Rpb24oKSBjb25zdCB7IHJldHVybiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uLmdldCgp
OyB9CiAgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5nZXQoKTsgfQogICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5nZXQoKTsg
fQogICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b0V4ZWNGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fcmVnRXhwUHJvdG9FeGVjLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDRiYzkxMWE3MDdkNDhjZTAxZDdi
NjhlMzM3ODI2NDEzNzhmMmUzZDkuLmRkZTZiODIzNjkwNWYzMGUyNGM1M2NmYzM1YzFmNjA1YjRi
Mjc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCkBAIC0zNDI2LDYgKzM0MjYsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50
YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKGluaGVyaXRzKHZt
LCBpbmZvKCkpKTtcblxuIik7CiAgICAgfQogCisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJM
b2NhdGlvbiIpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZU9mLCBnbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJvdG9W
YWx1ZU9mRnVuY3Rpb24oKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7
CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+dG9QcmltaXRpdmVTeW1ib2wsIGpzVW5kZWZpbmVkKCksIERvbnREZWxldGUgfCBS
ZWFkT25seSB8IERvbnRFbnVtKTtcbiIpOworICAgIH0KKwogICAgICMgU3VwcG9ydCBmb3IgUnVu
dGltZUVuYWJsZWQgYXR0cmlidXRlcyBvbiBpbnN0YW5jZXMuCiAgICAgZm9yZWFjaCBteSAkYXR0
cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgIG5leHQgdW5sZXNz
IE5lZWRzUnVudGltZUNoZWNrKCRhdHRyaWJ1dGUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY5ODFlOTg2OGU4ZDMwMmI2
MjdjNDkwNjRkMGU2MTBkYWMwMDZjZmIuLjZjMzRhNTU3NTEzMjY4NDNiMjg5ZWRmOGM1ZjY5NzJk
Y2FmOTk4MjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wMi0xNCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBTeW1ib2wudG9QcmltaXRpdmUg
LyB2YWx1ZU9mIG9uIExvY2F0aW9uIGluc3RhbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4Mjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgY292ZXJhZ2UgZm9yIGNhc2VzIHdoZXJl
IHRoZSBPYmplY3QgcHJvdG90eXBlIGhhcyBiZWVuIHVwZGF0ZWQgYmVmb3JlCisgICAgICAgIHRo
ZSBMb2NhdGlvbiBvYmplY3QgaXMgY29uc3RydWN0ZWQuCisKKyAgICAgICAgKiBmYXN0L2RvbS9s
b2NhdGlvbi12YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vbG9jYXRpb24tdmFsdWVPZi1hZnRlci1vYmpl
Y3QtcHJvdG90eXBlLXVwZGF0ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9sb2Nh
dGlvbi12YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRlMi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2xvY2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2JqZWN0
LXByb3RvdHlwZS11cGRhdGUyLmh0bWw6IEFkZGVkLgorCiAyMDE3LTAyLTE0ICBBbnRvaW5lIFF1
aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKICAgICAgICAgW21hYy13azFdIExheW91dFRlc3Qg
bWVkaWEvbW9kZXJuLW1lZGlhLWNvbnRyb2xzL2ZvcndhcmQtYnV0dG9uL2ZvcndhcmQtYnV0dG9u
Lmh0bWwgaXMgYSBmbGFreSB0aW1lb3V0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRl
eCA4MjAwYjRlOTc4MjAyMDgzMTYzOWY0ZDc0YWMzODUyMzljNWRkZDIyLi44NzNjNDUxY2UyYzIz
NGIxNjBjMDIyMjFlMmZlNDA4ZWVkNjM5MGE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wMi0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIEV4cG9zZSBTeW1ib2wudG9QcmltaXRpdmUgLyB2YWx1ZU9mIG9u
IExvY2F0aW9uIGluc3RhbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY4Mjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wb3J0IHRlc3QgY292ZXJhZ2UgZnJvbSB1cHN0cmVhbSB3ZWItcGxhdGZv
cm0tdGVzdHMuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9o
aXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tc3ltYm9sLXRvcHJpbWl0aXZl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXN5bWJvbC10
b3ByaW1pdGl2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tdmFsdWVv
Zi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbi12YWx1ZW9m
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJz
L2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS93M2MtaW1wb3J0LmxvZzoKKwogMjAxNy0w
Mi0xMyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVSTHMgd2l0aCBhbiBpbnZhbGlkIElQdjQgYWRkcmVzcyBzaG91bGQgYmUgaW52YWxpZApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24tdmFsdWVPZi1hZnRlci1v
YmplY3QtcHJvdG90eXBlLXVwZGF0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9sb2NhdGlvbi12YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43YTU4OThiNzJkNjA4NDI3NTJhMTE1NjY2NmI1MzMwMDBmYTg0YThl
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24tdmFsdWVP
Zi1hZnRlci1vYmplY3QtcHJvdG90eXBlLXVwZGF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MCBAQAorVGVzdHMgdGhlIHZhbHVlIG9mIGxvY2F0aW9uLnZhbHVlT2YgYWZ0ZXIgT2JqZWN0LnBy
b3RvdHlwZS52YWx1ZU9mIGhhcyBiZWVuIGRlbGV0ZWQuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KKworCitQQVNTIGxvY2F0aW9uLnZhbHVlT2YgaXMgb2JqZWN0UHJvdG9WYWx1ZU9mCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24tdmFsdWVPZi1hZnRlci1vYmplY3Qt
cHJvdG90eXBlLXVwZGF0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24tdmFs
dWVPZi1hZnRlci1vYmplY3QtcHJvdG90eXBlLXVwZGF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2N2Nj
NjVkNmM0YzYyOTliNmUwNDBmNjQ2MWI1MDNiYTJhYTg3YTIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2RvbS9sb2NhdGlvbi12YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5
cGUtdXBkYXRlLmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoZSB2YWx1ZSBvZiBsb2NhdGlv
bi52YWx1ZU9mIGFmdGVyIE9iamVjdC5wcm90b3R5cGUudmFsdWVPZiBoYXMgYmVlbiBkZWxldGVk
LiIpOworCit2YXIgb2JqZWN0UHJvdG9WYWx1ZU9mID0gT2JqZWN0LnByb3RvdHlwZS52YWx1ZU9m
OworZGVsZXRlIE9iamVjdC5wcm90b3R5cGUudmFsdWVPZjsKK3Nob3VsZEJlKCJsb2NhdGlvbi52
YWx1ZU9mIiwgIm9iamVjdFByb3RvVmFsdWVPZiIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9sb2NhdGlvbi12YWx1ZU9mLWFm
dGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRlMi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9sb2NhdGlvbi12YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRlMi1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDBjYjhjMDE0N2FkZDRkOWI5NmY5MWJjNjljNDcyY2Ji
OGJiMWNlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2xvY2F0aW9u
LXZhbHVlT2YtYWZ0ZXItb2JqZWN0LXByb3RvdHlwZS11cGRhdGUyLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEwIEBACitUZXN0cyB0aGUgdmFsdWUgb2YgbG9jYXRpb24udmFsdWVPZiBhZnRlciBP
YmplY3QucHJvdG90eXBlLnZhbHVlT2YgaGFzIGJlZW4gcmVwbGFjZWQuCisKK09uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KKworCitQQVNTIGxvY2F0aW9uLnZhbHVlT2YgaXMgb2JqZWN0UHJvdG9W
YWx1ZU9mCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24tdmFsdWVPZi1hZnRl
ci1vYmplY3QtcHJvdG90eXBlLXVwZGF0ZTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2xv
Y2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2JqZWN0LXByb3RvdHlwZS11cGRhdGUyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjAzZjU5ZTNjNzliODAzZWU1MmVjYzA3ZDJkZTczNzM0NDdmZGRlMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2xvY2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2Jq
ZWN0LXByb3RvdHlwZS11cGRhdGUyLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoZSB2YWx1
ZSBvZiBsb2NhdGlvbi52YWx1ZU9mIGFmdGVyIE9iamVjdC5wcm90b3R5cGUudmFsdWVPZiBoYXMg
YmVlbiByZXBsYWNlZC4iKTsKKwordmFyIG9iamVjdFByb3RvVmFsdWVPZiA9IE9iamVjdC5wcm90
b3R5cGUudmFsdWVPZjsKK2RlbGV0ZSBPYmplY3QucHJvdG90eXBlLnZhbHVlT2Y7CitPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoT2JqZWN0LnByb3RvdHlwZSwgInZhbHVlT2YiLCB7dmFsdWU6IDN9KTsK
K3Nob3VsZEJlKCJsb2NhdGlvbi52YWx1ZU9mIiwgIm9iamVjdFByb3RvVmFsdWVPZiIpOworPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRp
b24taW50ZXJmYWNlL2xvY2F0aW9uLXN5bWJvbC10b3ByaW1pdGl2ZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
aGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXN5bWJvbC10b3ByaW1pdGl2
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWYwNTI1MTBmMzViN2Y4YjgxNWU0NDNhMjBhY2Nj
MWEyZmE4OTY3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRl
cmZhY2UvbG9jYXRpb24tc3ltYm9sLXRvcHJpbWl0aXZlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDMgQEAKKworUEFTUyBMb2NhdGlvbiBTeW1ib2wudG9QcmltaXRpdmUgCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tc3ltYm9sLXRvcHJpbWl0
aXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXN5bWJv
bC10b3ByaW1pdGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NjZhM2U3MDM1NGRkZTAxNTA5YjJjNjFj
MDk3MTg1NWNjMjk2NzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24t
aW50ZXJmYWNlL2xvY2F0aW9uLXN5bWJvbC10b3ByaW1pdGl2ZS5odG1sCkBAIC0wLDAgKzEsMTQg
QEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPkxvY2F0aW9uIFN5bWJvbC50b1ByaW1pdGl2ZTwv
dGl0bGU+Cis8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcz48L3NjcmlwdD4KKzxk
aXYgaWQ9bG9nPjwvZGl2PgorPHNjcmlwdD4KK3Rlc3QoKCkgPT4geworICBhc3NlcnRfZXF1YWxz
KGxvY2F0aW9uW1N5bWJvbC50b1ByaW1pdGl2ZV0sIHVuZGVmaW5lZCkKKyAgY29uc3QgcHJvcCA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobG9jYXRpb24sIFN5bWJvbC50b1ByaW1p
dGl2ZSkKKyAgYXNzZXJ0X2ZhbHNlKHByb3AuZW51bWVyYWJsZSkKKyAgYXNzZXJ0X2ZhbHNlKHBy
b3Aud3JpdGFibGUpCisgIGFzc2VydF9mYWxzZShwcm9wLmNvbmZpZ3VyYWJsZSkKK30pCis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRp
b24tdmFsdWVvZi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNl
L2xvY2F0aW9uLXZhbHVlb2YtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1MWVmNjk2NWM0ZTIz
Njc0YjQ0NGEzY2MxNTdjMTA0Yjk0M2RjZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90
aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXZhbHVlb2YtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMyBAQAorCitQQVNTIExvY2F0aW9uIHZhbHVlT2YgCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0
b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tdmFsdWVvZi5odG1sIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3Rv
cnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbi12YWx1ZW9mLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOTc4YmJiNjNhMGI0MWFlNTVjMDUxOWNhNmViYjllZjBkNTUzMDRkYQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9i
cm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tdmFsdWVvZi5o
dG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPHRpdGxlPkxvY2F0aW9uIHZh
bHVlT2Y8L3RpdGxlPgorPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3Jp
cHQ+Cis8ZGl2IGlkPWxvZz48L2Rpdj4KKzxzY3JpcHQ+Cit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0
X2VxdWFscyhsb2NhdGlvbi52YWx1ZU9mLCBPYmplY3QucHJvdG90eXBlLnZhbHVlT2YpCisgIGFz
c2VydF9lcXVhbHModHlwZW9mIGxvY2F0aW9uLnZhbHVlT2YuY2FsbCg1KSwgIm9iamVjdCIpCisg
IGNvbnN0IHByb3AgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGxvY2F0aW9uLCAi
dmFsdWVPZiIpCisgIGFzc2VydF9mYWxzZShwcm9wLmVudW1lcmFibGUpCisgIGFzc2VydF9mYWxz
ZShwcm9wLndyaXRhYmxlKQorICBhc3NlcnRfZmFsc2UocHJvcC5jb25maWd1cmFibGUpCit9KQor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS93M2MtaW1wb3J0
LmxvZwppbmRleCA0MzBlMGIxNjBjOWU1YjJkOTA4ODAxMTkxZWZkZDJiYWFlZWFkMzY3Li5iYmQ0
ZTE3MzI0MzZlOGZjNjBkY2Y2MWE1YTQ1NzFlY2EzNGE4NTNjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9y
eS90aGUtbG9jYXRpb24taW50ZXJmYWNlL3czYy1pbXBvcnQubG9nCisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3Ro
ZS1sb2NhdGlvbi1pbnRlcmZhY2UvdzNjLWltcG9ydC5sb2cKQEAgLTI5LDYgKzI5LDggQEAgTGlz
dCBvZiBmaWxlczoKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXBy
b3RvY29sLXNldHRlci5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2Nh
dGlvbi1wcm90b3R5cGUtc2V0dGluZy5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVy
ZmFjZS9sb2NhdGlvbi1zdHJpbmdpZmllci5odG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWlu
dGVyZmFjZS9sb2NhdGlvbi1zeW1ib2wtdG9wcmltaXRpdmUuaHRtbAorL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1s
b2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tdmFsdWVvZi5odG1sIAogL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1s
b2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb25fYXNzaWduX2Fib3V0X2JsYW5rLTEuaHRtbAogL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9o
aXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb25fYXNzaWduX2Fib3V0X2JsYW5r
Lmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
YnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uX2hhc2guaHRt
bAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301543</attachid>
            <date>2017-02-14 13:52:56 -0800</date>
            <delta_ts>2017-02-14 14:00:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168295-20170214135022.patch</filename>
            <type>text/plain</type>
            <size>16341</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YzhlNDBjMmI0YzEzMTUwYzgyMDI4NzcwM2IzODkyZjkwY2I5NTgyLi5iNjRjNDIyNWZkMTgwMjU5
OWY4YTdhNWE2ZjkyNjExMDkxYTg3ZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNy0wMi0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEV4cG9zZSBTeW1ib2wudG9QcmltaXRpdmUgLyB2YWx1ZU9mIG9uIExvY2F0aW9u
IGluc3RhbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY4Mjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4gYW5kIEtlaXRo
IE1pbGxlci4KKworICAgICAgICBDYWNoZSBvcmlnaW4gb2JqZWN0UHJvdG9WYWx1ZU9mIGZ1bmN0
aW9uIG9uIEpTR2xvYmFsT2JqZWN0LgorCisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpv
YmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbik6CisKIDIwMTctMDItMTMgIE1pY2hhZWwgU2Fib2Zm
ICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgYXN5bmNEaXNhc3NlbWJseSBjcmFzaGVz
IG9uIGlPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFlOWFmMDhjY2E5YzYxNzVlMzI0OGY1MDA4YzFmMjk4ZGFl
MWM1NTguLjkyOTVjNjUwOGRiMzg5ZWVmNTk1MzFhYTc1NjFiMzExMTVhMWI1YzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMyBAQAorMjAxNy0wMi0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIEV4cG9zZSBTeW1ib2wudG9QcmltaXRpdmUgLyB2YWx1ZU9mIG9u
IExvY2F0aW9uIGluc3RhbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY4Mjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4g
YW5kIEtlaXRoIE1pbGxlci4KKworICAgICAgICBFeHBvc2UgU3ltYm9sLnRvUHJpbWl0aXZlIC8g
dmFsdWVPZiBvbiBMb2NhdGlvbiBpbnN0YW5jZXMgYXMgcGVyOgorICAgICAgICAtIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvI3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UKKworICAgICAgICBG
aXJlZm94IGFuZCBDaHJvbWUgYWxyZWFkeSBjb21wbHkgd2l0aCB0aGUgc3BlY2lmaWNhdGlvbi4K
KworICAgICAgICBUZXN0czogZmFzdC9kb20vbG9jYXRpb24tdmFsdWVPZi1hZnRlci1vYmplY3Qt
cHJvdG90eXBlLXVwZGF0ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9sb2NhdGlvbi12
YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRlMi5odG1sCisgICAgICAgICAgICAg
ICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90
aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXN5bWJvbC10b3ByaW1pdGl2ZS5odG1sCisg
ICAgICAgICAgICAgICBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3Nl
cnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXZhbHVlb2YuaHRtbAor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAg
IChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKwogMjAxNy0wMi0xNCAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDb3JlIHNob3VsZG4ndCBleHBvcnQg
U3lzdGVtTWVtb3J5LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCBkZDc0NjNjNzNhN2IxMmNlYzU3ZDY5YjkyYTViMDI2MWM2ZjQ0
YmM3Li4yZTU2YmE4NzM3ZTNjNWZkYTk5NjI1OTAzOTNlN2YwMWVjMzUzOWFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00NTgs
NiArNDU4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgbV9vYmpl
Y3RQcm90b3R5cGUtPnB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3Iodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnVuZGVyc2NvcmVQcm90bywgcHJvdG9BY2Nlc3NvciwgQWNjZXNzb3IgfCBEb250RW51bSk7
CiAgICAgbV9mdW5jdGlvblByb3RvdHlwZS0+c3RydWN0dXJlKCktPnNldFByb3RvdHlwZVdpdGhv
dXRUcmFuc2l0aW9uKHZtLCBtX29iamVjdFByb3RvdHlwZS5nZXQoKSk7CiAgICAgbV9vYmplY3RT
dHJ1Y3R1cmVGb3JPYmplY3RDb25zdHJ1Y3Rvci5zZXQodm0sIHRoaXMsIHZtLnByb3RvdHlwZU1h
cC5lbXB0eU9iamVjdFN0cnVjdHVyZUZvclByb3RvdHlwZSh0aGlzLCBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKSwgSlNGaW5hbE9iamVjdDo6ZGVmYXVsdElubGluZUNhcGFjaXR5KCkpKTsKKyAgICBt
X29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rp
b24qPihvYmplY3RQcm90b3R5cGUoKS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52
YWx1ZU9mKSkpOwogICAgIAogICAgIEpTRnVuY3Rpb24qIHRocm93ZXIgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBnbG9iYWxGdW5jVGhyb3dUeXBlRXJyb3JBcmd1
bWVudHNDYWxsZWVBbmRDYWxsZXIpOwogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0g
R2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIHRoaXMpOwpAQCAtMTE5Myw2ICsxMTk0LDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHRoaXNPYmplY3QtPm1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLnZp
c2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlv
bi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2l0ZXJhdG9yUHJvdG9jb2xGdW5j
dGlvbi52aXNpdCh2aXNpdG9yKTsKKyAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX29i
amVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0
LT5tX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRo
aXNPYmplY3QtPm1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwogICAg
IHRoaXNPYmplY3QtPm1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIudmlzaXQodmlzaXRvcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRl
eCBmOWRlNjQxYjYzZmE4MDA4ZjhiZGZjM2NjNTQ2NjRkMTc3NTNkZGYwLi45ZDRiYmJmNDc5Y2Mw
YzMyM2RjMTJmNTE4OWVkNDI0NmU0NjFkM2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI2Miw2ICsyNjIsNyBAQCBwdWJsaWM6CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX2FycmF5UHJvdG9W
YWx1ZXNGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rp
b24+IG1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9i
YWxPYmplY3QsIEpTRnVuY3Rpb24+IG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOworICAgIFdy
aXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uOwogICAg
IFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb247
CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNl
U3ltYm9sRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBHZXR0ZXJT
ZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXI7CkBAIC01MDksNiArNTEwLDcgQEAg
cHVibGljOgogICAgIEpTRnVuY3Rpb24qIGFycmF5UHJvdG9WYWx1ZXNGdW5jdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpT
RnVuY3Rpb24qIGluaXRpYWxpemVQcm9taXNlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2lu
aXRpYWxpemVQcm9taXNlRnVuY3Rpb24uZ2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogaXRl
cmF0b3JQcm90b2NvbEZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29s
RnVuY3Rpb24uZ2V0KHRoaXMpOyB9CisgICAgSlNGdW5jdGlvbiogb2JqZWN0UHJvdG9WYWx1ZU9m
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uLmdl
dCgpOyB9CiAgICAgSlNGdW5jdGlvbiogbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbi5nZXQoKTsgfQogICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbi5nZXQo
KTsgfQogICAgIEpTT2JqZWN0KiByZWdFeHBQcm90b0V4ZWNGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcmVnRXhwUHJvdG9FeGVjLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDRiYzkxMWE3MDdkNDhjZTAx
ZDdiNjhlMzM3ODI2NDEzNzhmMmUzZDkuLmRkZTZiODIzNjkwNWYzMGUyNGM1M2NmYzM1YzFmNjA1
YjRiMjc0M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCkBAIC0zNDI2LDYgKzM0MjYsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQVNTRVJUKGluaGVyaXRz
KHZtLCBpbmZvKCkpKTtcblxuIik7CiAgICAgfQogCisgICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVx
ICJMb2NhdGlvbiIpIHsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT52YWx1ZU9mLCBnbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJv
dG9WYWx1ZU9mRnVuY3Rpb24oKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pO1xu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1ib2wsIGpzVW5kZWZpbmVkKCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTtcbiIpOworICAgIH0KKwogICAgICMgU3VwcG9ydCBmb3Ig
UnVudGltZUVuYWJsZWQgYXR0cmlidXRlcyBvbiBpbnN0YW5jZXMuCiAgICAgZm9yZWFjaCBteSAk
YXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CiAgICAgICAgIG5leHQgdW5s
ZXNzIE5lZWRzUnVudGltZUNoZWNrKCRhdHRyaWJ1dGUpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY5ODFlOTg2OGU4ZDMw
MmI2MjdjNDkwNjRkMGU2MTBkYWMwMDZjZmIuLjFmNWQ1MGUzMGVhYzZiYzJhYzVkYTExNzNjOGY4
OGMzZTExOWU3OTcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNy0wMi0xNCAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEV4cG9zZSBTeW1ib2wudG9QcmltaXRp
dmUgLyB2YWx1ZU9mIG9uIExvY2F0aW9uIGluc3RhbmNlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY4Mjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
R2VvZmZyZXkgR2FyZW4gYW5kIEtlaXRoIE1pbGxlci4KKworICAgICAgICBBZGQgdGVzdCBjb3Zl
cmFnZSBmb3IgY2FzZXMgd2hlcmUgdGhlIE9iamVjdCBwcm90b3R5cGUgaGFzIGJlZW4gdXBkYXRl
ZCBiZWZvcmUKKyAgICAgICAgdGhlIExvY2F0aW9uIG9iamVjdCBpcyBjb25zdHJ1Y3RlZC4KKwor
ICAgICAgICAqIGZhc3QvZG9tL2xvY2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2JqZWN0LXByb3RvdHlw
ZS11cGRhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9sb2NhdGlv
bi12YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL2xvY2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2JqZWN0LXByb3RvdHlwZS11
cGRhdGUyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vbG9jYXRpb24t
dmFsdWVPZi1hZnRlci1vYmplY3QtcHJvdG90eXBlLXVwZGF0ZTIuaHRtbDogQWRkZWQuCisKIDIw
MTctMDItMTQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBb
bWFjLXdrMV0gTGF5b3V0VGVzdCBtZWRpYS9tb2Rlcm4tbWVkaWEtY29udHJvbHMvZm9yd2FyZC1i
dXR0b24vZm9yd2FyZC1idXR0b24uaHRtbCBpcyBhIGZsYWt5IHRpbWVvdXQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2MvQ2hhbmdlTG9nCmluZGV4IDgyMDBiNGU5NzgyMDIwODMxNjM5ZjRkNzRhYzM4NTIzOWM1
ZGRkMjIuLmM1MWY2NzQ0NGM2NDY2MTQwZWE3MGQ2ZDVlZDU5ZjZkODFjY2IzZWUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE3LTAyLTE0ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRXhwb3NlIFN5bWJvbC50b1By
aW1pdGl2ZSAvIHZhbHVlT2Ygb24gTG9jYXRpb24gaW5zdGFuY2VzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyOTUKKworICAgICAgICBSZXZpZXdl
ZCBieSBHZW9mZnJleSBHYXJlbiBhbmQgS2VpdGggTWlsbGVyLgorCisgICAgICAgIEltcG9ydCB0
ZXN0IGNvdmVyYWdlIGZyb20gdXBzdHJlYW0gd2ViLXBsYXRmb3JtLXRlc3RzLgorCisgICAgICAg
ICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24t
aW50ZXJmYWNlL2xvY2F0aW9uLXN5bWJvbC10b3ByaW1pdGl2ZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhl
LWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbi1zeW1ib2wtdG9wcmltaXRpdmUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90
aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXZhbHVlb2YtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3Ro
ZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tdmFsdWVvZi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlv
bi1pbnRlcmZhY2UvdzNjLWltcG9ydC5sb2c6CisKIDIwMTctMDItMTMgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBVUkxzIHdpdGggYW4gaW52
YWxpZCBJUHY0IGFkZHJlc3Mgc2hvdWxkIGJlIGludmFsaWQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL2xvY2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2JqZWN0LXByb3RvdHlwZS11cGRh
dGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24tdmFsdWVPZi1h
ZnRlci1vYmplY3QtcHJvdG90eXBlLXVwZGF0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E1
ODk4YjcyZDYwODQyNzUyYTExNTY2NjZiNTMzMDAwZmE4NGE4ZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2xvY2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2JqZWN0LXByb3Rv
dHlwZS11cGRhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoZSB2YWx1
ZSBvZiBsb2NhdGlvbi52YWx1ZU9mIGFmdGVyIE9iamVjdC5wcm90b3R5cGUudmFsdWVPZiBoYXMg
YmVlbiBkZWxldGVkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBsb2Nh
dGlvbi52YWx1ZU9mIGlzIG9iamVjdFByb3RvVmFsdWVPZgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvZG9tL2xvY2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2JqZWN0LXByb3RvdHlwZS11cGRhdGUuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2xvY2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2JqZWN0LXBy
b3RvdHlwZS11cGRhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjdjYzY1ZDZjNGM2Mjk5YjZlMDQwZjY0
NjFiNTAzYmEyYWE4N2EyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20v
bG9jYXRpb24tdmFsdWVPZi1hZnRlci1vYmplY3QtcHJvdG90eXBlLXVwZGF0ZS5odG1sCkBAIC0w
LDAgKzEsMTQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUZXN0cyB0aGUgdmFsdWUgb2YgbG9jYXRpb24udmFsdWVPZiBhZnRlciBPYmpl
Y3QucHJvdG90eXBlLnZhbHVlT2YgaGFzIGJlZW4gZGVsZXRlZC4iKTsKKwordmFyIG9iamVjdFBy
b3RvVmFsdWVPZiA9IE9iamVjdC5wcm90b3R5cGUudmFsdWVPZjsKK2RlbGV0ZSBPYmplY3QucHJv
dG90eXBlLnZhbHVlT2Y7CitzaG91bGRCZSgibG9jYXRpb24udmFsdWVPZiIsICJvYmplY3RQcm90
b1ZhbHVlT2YiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24tdmFsdWVPZi1hZnRlci1vYmplY3QtcHJvdG90eXBl
LXVwZGF0ZTItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24tdmFs
dWVPZi1hZnRlci1vYmplY3QtcHJvdG90eXBlLXVwZGF0ZTItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjAwY2I4YzAxNDdhZGQ0ZDliOTZmOTFiYzY5YzQ3MmNiYjhiYjFjZWEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9sb2NhdGlvbi12YWx1ZU9mLWFmdGVyLW9iamVj
dC1wcm90b3R5cGUtdXBkYXRlMi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdHMg
dGhlIHZhbHVlIG9mIGxvY2F0aW9uLnZhbHVlT2YgYWZ0ZXIgT2JqZWN0LnByb3RvdHlwZS52YWx1
ZU9mIGhhcyBiZWVuIHJlcGxhY2VkLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBsb2NhdGlvbi52YWx1ZU9mIGlzIG9iamVjdFByb3RvVmFsdWVPZgorUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2xvY2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2JqZWN0LXByb3RvdHlwZS11
cGRhdGUyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9sb2NhdGlvbi12YWx1ZU9mLWFmdGVy
LW9iamVjdC1wcm90b3R5cGUtdXBkYXRlMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwM2Y1OWUzYzc5Yjgw
M2VlNTJlY2MwN2QyZGU3MzczNDQ3ZmRkZTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9sb2NhdGlvbi12YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRl
Mi5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGUgdmFsdWUgb2YgbG9jYXRpb24udmFsdWVP
ZiBhZnRlciBPYmplY3QucHJvdG90eXBlLnZhbHVlT2YgaGFzIGJlZW4gcmVwbGFjZWQuIik7CisK
K3ZhciBvYmplY3RQcm90b1ZhbHVlT2YgPSBPYmplY3QucHJvdG90eXBlLnZhbHVlT2Y7CitkZWxl
dGUgT2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mOworT2JqZWN0LmRlZmluZVByb3BlcnR5KE9iamVj
dC5wcm90b3R5cGUsICJ2YWx1ZU9mIiwge3ZhbHVlOiAzfSk7CitzaG91bGRCZSgibG9jYXRpb24u
dmFsdWVPZiIsICJvYmplY3RQcm90b1ZhbHVlT2YiKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlv
bi1zeW1ib2wtdG9wcmltaXRpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9u
LWludGVyZmFjZS9sb2NhdGlvbi1zeW1ib2wtdG9wcmltaXRpdmUtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVmMDUyNTEwZjM1YjdmOGI4MTVlNDQzYTIwYWNjYzFhMmZhODk2NzUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXN5bWJv
bC10b3ByaW1pdGl2ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgTG9jYXRp
b24gU3ltYm9sLnRvUHJpbWl0aXZlIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRp
b24taW50ZXJmYWNlL2xvY2F0aW9uLXN5bWJvbC10b3ByaW1pdGl2ZS5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3Rvcnkv
dGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbi1zeW1ib2wtdG9wcmltaXRpdmUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lNjY2YTNlNzAzNTRkZGUwMTUwOWIyYzYxYzA5NzE4NTVjYzI5Njc4Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbi1z
eW1ib2wtdG9wcmltaXRpdmUuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURPQ1RZUEUgaHRtbD4K
Kzx0aXRsZT5Mb2NhdGlvbiBTeW1ib2wudG9QcmltaXRpdmU8L3RpdGxlPgorPHNjcmlwdCBzcmM9
L3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPS9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanM+PC9zY3JpcHQ+Cis8ZGl2IGlkPWxvZz48L2Rpdj4KKzxz
Y3JpcHQ+Cit0ZXN0KCgpID0+IHsKKyAgYXNzZXJ0X2VxdWFscyhsb2NhdGlvbltTeW1ib2wudG9Q
cmltaXRpdmVdLCB1bmRlZmluZWQpCisgIGNvbnN0IHByb3AgPSBPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKGxvY2F0aW9uLCBTeW1ib2wudG9QcmltaXRpdmUpCisgIGFzc2VydF9mYWxz
ZShwcm9wLmVudW1lcmFibGUpCisgIGFzc2VydF9mYWxzZShwcm9wLndyaXRhYmxlKQorICBhc3Nl
cnRfZmFsc2UocHJvcC5jb25maWd1cmFibGUpCit9KQorPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMv
aGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXZhbHVlb2YtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jy
b3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbi12YWx1ZW9mLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NTFlZjY5NjVjNGUyMzY3NGI0NDRhM2NjMTU3YzEwNGI5
NDNkY2UyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFj
ZS9sb2NhdGlvbi12YWx1ZW9mLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBM
b2NhdGlvbiB2YWx1ZU9mIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50
ZXJmYWNlL2xvY2F0aW9uLXZhbHVlb2YuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRl
cmZhY2UvbG9jYXRpb24tdmFsdWVvZi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3OGJiYjYzYTBiNDFhZTU1
YzA1MTljYTZlYmI5ZWYwZDU1MzA0ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUt
bG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXZhbHVlb2YuaHRtbApAQCAtMCwwICsxLDE1IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzx0aXRsZT5Mb2NhdGlvbiB2YWx1ZU9mPC90aXRsZT4KKzxzY3Jp
cHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0v
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzPjwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9k
aXY+Cis8c2NyaXB0PgordGVzdCgoKSA9PiB7CisgIGFzc2VydF9lcXVhbHMobG9jYXRpb24udmFs
dWVPZiwgT2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mKQorICBhc3NlcnRfZXF1YWxzKHR5cGVvZiBs
b2NhdGlvbi52YWx1ZU9mLmNhbGwoNSksICJvYmplY3QiKQorICBjb25zdCBwcm9wID0gT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihsb2NhdGlvbiwgInZhbHVlT2YiKQorICBhc3NlcnRf
ZmFsc2UocHJvcC5lbnVtZXJhYmxlKQorICBhc3NlcnRfZmFsc2UocHJvcC53cml0YWJsZSkKKyAg
YXNzZXJ0X2ZhbHNlKHByb3AuY29uZmlndXJhYmxlKQorfSkKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dz
ZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0
b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvdzNjLWltcG9ydC5sb2cKaW5kZXggNDMwZTBiMTYw
YzllNWIyZDkwODgwMTE5MWVmZGQyYmFhZWVhZDM2Ny4uYmJkNGUxNzMyNDM2ZThmYzYwZGNmNjFh
NWE0NTcxZWNhMzRhODUzYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVy
ZmFjZS93M2MtaW1wb3J0LmxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNl
L3czYy1pbXBvcnQubG9nCkBAIC0yOSw2ICsyOSw4IEBAIExpc3Qgb2YgZmlsZXM6CiAvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3Rv
cnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbi1wcm90b2NvbC1zZXR0ZXIuaHRtbAog
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tcHJvdG90eXBlLXNldHRp
bmcuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tc3RyaW5n
aWZpZXIuaHRtbAorL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tc3lt
Ym9sLXRvcHJpbWl0aXZlLmh0bWwKKy9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xv
Y2F0aW9uLXZhbHVlb2YuaHRtbCAKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xv
Y2F0aW9uX2Fzc2lnbl9hYm91dF9ibGFuay0xLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24t
aW50ZXJmYWNlL2xvY2F0aW9uX2Fzc2lnbl9hYm91dF9ibGFuay5odG1sCiAvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhl
LWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbl9oYXNoLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>301544</attachid>
            <date>2017-02-14 14:00:19 -0800</date>
            <delta_ts>2017-02-15 10:25:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-168295-20170214135746.patch</filename>
            <type>text/plain</type>
            <size>16381</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjEyMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
YzhlNDBjMmI0YzEzMTUwYzgyMDI4NzcwM2IzODkyZjkwY2I5NTgyLi5kMmJjZjE1MzNmOWM4ZTRl
OWE4NjY5NzFhMjIxMjk1ZWFiMGRiNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNyBAQAorMjAxNy0wMi0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEV4cG9zZSBTeW1ib2wudG9QcmltaXRpdmUgLyB2YWx1ZU9mIG9uIExvY2F0aW9u
IGluc3RhbmNlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY4Mjk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4sIEtlaXRoIE1p
bGxlciBhbmQgTWFyayBMYW0uCisKKyAgICAgICAgQ2FjaGUgb3JpZ2luIG9iamVjdFByb3RvVmFs
dWVPZiBmdW5jdGlvbiBvbiBKU0dsb2JhbE9iamVjdC4KKworICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0dsb2Jh
bE9iamVjdDo6b2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24pOgorCiAyMDE3LTAyLTEzICBNaWNo
YWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIGFzeW5jRGlzYXNzZW1i
bHkgY3Jhc2hlcyBvbiBpT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhZTlhZjA4Y2NhOWM2MTc1ZTMyNDhmNTAw
OGMxZjI5OGRhZTFjNTU4Li4yNGQwMjg5NDcxNmFjNDk4YmM3MWVkOTEwYTYyMDFhNWM3ZjQzOTVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTctMDItMTQgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvc2UgU3ltYm9sLnRvUHJpbWl0aXZlIC8g
dmFsdWVPZiBvbiBMb2NhdGlvbiBpbnN0YW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE2ODI5NQorCisgICAgICAgIFJldmlld2VkIGJ5IEdlb2Zm
cmV5IEdhcmVuLCBLZWl0aCBNaWxsZXIgYW5kIE1hcmsgTGFtLgorCisgICAgICAgIEV4cG9zZSBT
eW1ib2wudG9QcmltaXRpdmUgLyB2YWx1ZU9mIG9uIExvY2F0aW9uIGluc3RhbmNlcyBhcyBwZXI6
CisgICAgICAgIC0gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jdGhlLWxvY2F0aW9uLWlu
dGVyZmFjZQorCisgICAgICAgIEZpcmVmb3ggYW5kIENocm9tZSBhbHJlYWR5IGNvbXBseSB3aXRo
IHRoZSBzcGVjaWZpY2F0aW9uLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2RvbS9sb2NhdGlvbi12
YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRlLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL2xvY2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2JqZWN0LXByb3RvdHlwZS11cGRhdGUy
Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tc3ltYm9s
LXRvcHJpbWl0aXZlLmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9j
YXRpb24tdmFsdWVvZi5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorCiAyMDE3LTAy
LTE0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkNv
cmUgc2hvdWxkbid0IGV4cG9ydCBTeXN0ZW1NZW1vcnkuaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGRkNzQ2M2M3M2E3YjEyY2Vj
NTdkNjliOTJhNWIwMjYxYzZmNDRiYzcuLjJlNTZiYTg3MzdlM2M1ZmRhOTk2MjU5MDM5M2U3ZjAx
ZWMzNTM5YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAKQEAgLTQ1OCw2ICs0NTgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0
KFZNJiB2bSkKICAgICBtX29iamVjdFByb3RvdHlwZS0+cHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nv
cih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dW5kZXJzY29yZVByb3RvLCBwcm90b0FjY2Vzc29yLCBB
Y2Nlc3NvciB8IERvbnRFbnVtKTsKICAgICBtX2Z1bmN0aW9uUHJvdG90eXBlLT5zdHJ1Y3R1cmUo
KS0+c2V0UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24odm0sIG1fb2JqZWN0UHJvdG90eXBlLmdl
dCgpKTsKICAgICBtX29iamVjdFN0cnVjdHVyZUZvck9iamVjdENvbnN0cnVjdG9yLnNldCh2bSwg
dGhpcywgdm0ucHJvdG90eXBlTWFwLmVtcHR5T2JqZWN0U3RydWN0dXJlRm9yUHJvdG90eXBlKHRo
aXMsIG1fb2JqZWN0UHJvdG90eXBlLmdldCgpLCBKU0ZpbmFsT2JqZWN0OjpkZWZhdWx0SW5saW5l
Q2FwYWNpdHkoKSkpOworICAgIG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24uc2V0KHZtLCB0
aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG9iamVjdFByb3RvdHlwZSgpLT5nZXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlT2YpKSk7CiAgICAgCiAgICAgSlNGdW5jdGlvbiogdGhy
b3dlciA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1
bmNUaHJvd1R5cGVFcnJvckFyZ3VtZW50c0NhbGxlZUFuZENhbGxlcik7CiAgICAgR2V0dGVyU2V0
dGVyKiBnZXR0ZXJTZXR0ZXIgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwgdGhpcyk7CkBAIC0x
MTkzLDYgKzExOTQsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgdGhpc09iamVjdC0+bV9hcnJheVBy
b3RvVmFsdWVzRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV9pbml0
aWFsaXplUHJvbWlzZUZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
aXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uLnZpc2l0KHZpc2l0b3IpOworICAgIHZpc2l0b3IuYXBw
ZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24pOwogICAgIHZpc2l0
b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlvbik7CiAg
ICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvSGFzSW5zdGFuY2VT
eW1ib2xGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdldHRlclNl
dHRlci52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCmluZGV4IGY5ZGU2NDFiNjNmYTgwMDhmOGJkZmMzY2M1NDY2NGQxNzc1
M2RkZjAuLjlkNGJiYmY0NzljYzBjMzIzZGMxMmY1MTg5ZWQ0MjQ2ZTQ2MWQzYmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjYyLDYg
KzI2Miw3IEBAIHB1YmxpYzoKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIEpTRnVu
Y3Rpb24+IG1fYXJyYXlQcm90b1ZhbHVlc0Z1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0eTxKU0ds
b2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9pbml0aWFsaXplUHJvbWlzZUZ1bmN0aW9uOwogICAg
IExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9pdGVyYXRvclByb3Rv
Y29sRnVuY3Rpb247CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fb2JqZWN0UHJvdG9W
YWx1ZU9mRnVuY3Rpb247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbmV3UHJvbWlz
ZUNhcGFiaWxpdHlGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9mdW5j
dGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlvbjsKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIEdldHRlclNldHRlcj4gbV90aHJvd1R5cGVFcnJvckdldHRlclNldHRlcjsK
QEAgLTUwOSw2ICs1MTAsNyBAQCBwdWJsaWM6CiAgICAgSlNGdW5jdGlvbiogYXJyYXlQcm90b1Zh
bHVlc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24u
Z2V0KHRoaXMpOyB9CiAgICAgSlNGdW5jdGlvbiogaW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhbGl6ZVByb21pc2VGdW5jdGlvbi5nZXQodGhpcyk7IH0K
ICAgICBKU0Z1bmN0aW9uKiBpdGVyYXRvclByb3RvY29sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVy
biBtX2l0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbi5nZXQodGhpcyk7IH0KKyAgICBKU0Z1bmN0aW9u
KiBvYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0UHJv
dG9WYWx1ZU9mRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBuZXdQcm9taXNlQ2Fw
YWJpbGl0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdQcm9taXNlQ2FwYWJpbGl0eUZ1
bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNl
U3ltYm9sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5j
ZVN5bWJvbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNPYmplY3QqIHJlZ0V4cFByb3RvRXhlY0Z1
bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b0V4ZWMuZ2V0KCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggNGJjOTExYTcwN2Q0OGNlMDFkN2I2OGUzMzc4MjY0MTM3OGYyZTNkOS4uZGRlNmI4MjM2OTA1
ZjMwZTI0YzUzY2ZjMzVjMWY2MDViNGIyNzQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTM0MjYsNiArMzQyNiwxMSBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpO1xuXG4iKTsKICAgICB9CiAKKyAgICBp
ZiAoJGludGVyZmFjZU5hbWUgZXEgIkxvY2F0aW9uIikgeworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnZhbHVlT2YsIGdsb2Jh
bE9iamVjdCgpLT5vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbigpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1ByaW1pdGl2ZVN5bWJvbCwganNVbmRl
ZmluZWQoKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pO1xuIik7CisgICAgfQor
CiAgICAgIyBTdXBwb3J0IGZvciBSdW50aW1lRW5hYmxlZCBhdHRyaWJ1dGVzIG9uIGluc3RhbmNl
cy4KICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30p
IHsKICAgICAgICAgbmV4dCB1bmxlc3MgTmVlZHNSdW50aW1lQ2hlY2soJGF0dHJpYnV0ZSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggZjk4MWU5ODY4ZThkMzAyYjYyN2M0OTA2NGQwZTYxMGRhYzAwNmNmYi4uMmI1MTgzZGYx
YjczMTdhYzNlMDU1NTVlOWE5ZTllZDVmYWE3OTA0MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisy
MDE3LTAyLTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgRXhw
b3NlIFN5bWJvbC50b1ByaW1pdGl2ZSAvIHZhbHVlT2Ygb24gTG9jYXRpb24gaW5zdGFuY2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjgyOTUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbiwgS2VpdGggTWlsbGVyIGFuZCBNYXJr
IExhbS4KKworICAgICAgICBBZGQgdGVzdCBjb3ZlcmFnZSBmb3IgY2FzZXMgd2hlcmUgdGhlIE9i
amVjdCBwcm90b3R5cGUgaGFzIGJlZW4gdXBkYXRlZCBiZWZvcmUKKyAgICAgICAgdGhlIExvY2F0
aW9uIG9iamVjdCBpcyBjb25zdHJ1Y3RlZC4KKworICAgICAgICAqIGZhc3QvZG9tL2xvY2F0aW9u
LXZhbHVlT2YtYWZ0ZXItb2JqZWN0LXByb3RvdHlwZS11cGRhdGUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9sb2NhdGlvbi12YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90
b3R5cGUtdXBkYXRlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2xvY2F0aW9uLXZh
bHVlT2YtYWZ0ZXItb2JqZWN0LXByb3RvdHlwZS11cGRhdGUyLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9kb20vbG9jYXRpb24tdmFsdWVPZi1hZnRlci1vYmplY3QtcHJvdG90
eXBlLXVwZGF0ZTIuaHRtbDogQWRkZWQuCisKIDIwMTctMDItMTQgIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjLXdrMV0gTGF5b3V0VGVzdCBtZWRpYS9t
b2Rlcm4tbWVkaWEtY29udHJvbHMvZm9yd2FyZC1idXR0b24vZm9yd2FyZC1idXR0b24uaHRtbCBp
cyBhIGZsYWt5IHRpbWVvdXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDgyMDBi
NGU5NzgyMDIwODMxNjM5ZjRkNzRhYzM4NTIzOWM1ZGRkMjIuLmEyMzJiMDBiYzIyNWFjZmZiZGNk
MGRkNjkxOWQ2YWUxYTBlZjljMjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDE3LTAyLTE0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CisKKyAgICAgICAgRXhwb3NlIFN5bWJvbC50b1ByaW1pdGl2ZSAvIHZhbHVlT2Ygb24gTG9jYXRp
b24gaW5zdGFuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjgyOTUKKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbiwgS2VpdGgg
TWlsbGVyIGFuZCBNYXJrIExhbS4KKworICAgICAgICBJbXBvcnQgdGVzdCBjb3ZlcmFnZSBmcm9t
IHVwc3RyZWFtIHdlYi1wbGF0Zm9ybS10ZXN0cy4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlv
bi1zeW1ib2wtdG9wcmltaXRpdmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZh
Y2UvbG9jYXRpb24tc3ltYm9sLXRvcHJpbWl0aXZlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVy
ZmFjZS9sb2NhdGlvbi12YWx1ZW9mLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJm
YWNlL2xvY2F0aW9uLXZhbHVlb2YuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL3czYy1p
bXBvcnQubG9nOgorCiAyMDE3LTAyLTEzICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVVJMcyB3aXRoIGFuIGludmFsaWQgSVB2NCBhZGRyZXNz
IHNob3VsZCBiZSBpbnZhbGlkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9sb2Nh
dGlvbi12YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL2xvY2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2JqZWN0LXByb3Rv
dHlwZS11cGRhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhNTg5OGI3MmQ2MDg0Mjc1MmEx
MTU2NjY2YjUzMzAwMGZhODRhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9sb2NhdGlvbi12YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRlLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUZXN0cyB0aGUgdmFsdWUgb2YgbG9jYXRpb24udmFs
dWVPZiBhZnRlciBPYmplY3QucHJvdG90eXBlLnZhbHVlT2YgaGFzIGJlZW4gZGVsZXRlZC4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbG9jYXRpb24udmFsdWVPZiBpcyBv
YmplY3RQcm90b1ZhbHVlT2YKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9sb2NhdGlvbi12
YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9sb2NhdGlvbi12YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjY3Y2M2NWQ2YzRjNjI5OWI2ZTA0MGY2NDYxYjUwM2JhMmFhODdhMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2xvY2F0aW9uLXZhbHVlT2Yt
YWZ0ZXItb2JqZWN0LXByb3RvdHlwZS11cGRhdGUuaHRtbApAQCAtMCwwICsxLDE0IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdHMg
dGhlIHZhbHVlIG9mIGxvY2F0aW9uLnZhbHVlT2YgYWZ0ZXIgT2JqZWN0LnByb3RvdHlwZS52YWx1
ZU9mIGhhcyBiZWVuIGRlbGV0ZWQuIik7CisKK3ZhciBvYmplY3RQcm90b1ZhbHVlT2YgPSBPYmpl
Y3QucHJvdG90eXBlLnZhbHVlT2Y7CitkZWxldGUgT2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mOwor
c2hvdWxkQmUoImxvY2F0aW9uLnZhbHVlT2YiLCAib2JqZWN0UHJvdG9WYWx1ZU9mIik7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L2xvY2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2JqZWN0LXByb3RvdHlwZS11cGRhdGUyLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL2xvY2F0aW9uLXZhbHVlT2YtYWZ0ZXItb2JqZWN0
LXByb3RvdHlwZS11cGRhdGUyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGNiOGMwMTQ3YWRk
NGQ5Yjk2ZjkxYmM2OWM0NzJjYmI4YmIxY2VhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vbG9jYXRpb24tdmFsdWVPZi1hZnRlci1vYmplY3QtcHJvdG90eXBlLXVwZGF0
ZTItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3RzIHRoZSB2YWx1ZSBvZiBsb2Nh
dGlvbi52YWx1ZU9mIGFmdGVyIE9iamVjdC5wcm90b3R5cGUudmFsdWVPZiBoYXMgYmVlbiByZXBs
YWNlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgbG9jYXRpb24udmFs
dWVPZiBpcyBvYmplY3RQcm90b1ZhbHVlT2YKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9s
b2NhdGlvbi12YWx1ZU9mLWFmdGVyLW9iamVjdC1wcm90b3R5cGUtdXBkYXRlMi5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRpb24tdmFsdWVPZi1hZnRlci1vYmplY3QtcHJvdG90eXBl
LXVwZGF0ZTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMDNmNTllM2M3OWI4MDNlZTUyZWNjMDdkMmRlNzM3
MzQ0N2ZkZGUxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbG9jYXRp
b24tdmFsdWVPZi1hZnRlci1vYmplY3QtcHJvdG90eXBlLXVwZGF0ZTIuaHRtbApAQCAtMCwwICsx
LDE1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlw
dGlvbigiVGVzdHMgdGhlIHZhbHVlIG9mIGxvY2F0aW9uLnZhbHVlT2YgYWZ0ZXIgT2JqZWN0LnBy
b3RvdHlwZS52YWx1ZU9mIGhhcyBiZWVuIHJlcGxhY2VkLiIpOworCit2YXIgb2JqZWN0UHJvdG9W
YWx1ZU9mID0gT2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mOworZGVsZXRlIE9iamVjdC5wcm90b3R5
cGUudmFsdWVPZjsKK09iamVjdC5kZWZpbmVQcm9wZXJ0eShPYmplY3QucHJvdG90eXBlLCAidmFs
dWVPZiIsIHt2YWx1ZTogM30pOworc2hvdWxkQmUoImxvY2F0aW9uLnZhbHVlT2YiLCAib2JqZWN0
UHJvdG9WYWx1ZU9mIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vy
cy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tc3ltYm9sLXRvcHJpbWl0
aXZlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRp
b24tc3ltYm9sLXRvcHJpbWl0aXZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZjA1MjUxMGYz
NWI3ZjhiODE1ZTQ0M2EyMGFjY2MxYTJmYTg5Njc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3Rv
cnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbi1zeW1ib2wtdG9wcmltaXRpdmUtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIExvY2F0aW9uIFN5bWJvbC50b1ByaW1p
dGl2ZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2Nh
dGlvbi1zeW1ib2wtdG9wcmltaXRpdmUuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRl
cmZhY2UvbG9jYXRpb24tc3ltYm9sLXRvcHJpbWl0aXZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY2NmEz
ZTcwMzU0ZGRlMDE1MDliMmM2MWMwOTcxODU1Y2MyOTY3OAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9o
aXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tc3ltYm9sLXRvcHJpbWl0aXZl
Lmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8dGl0bGU+TG9jYXRpb24g
U3ltYm9sLnRvUHJpbWl0aXZlPC90aXRsZT4KKzxzY3JpcHQgc3JjPS9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanM+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzPjwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+Cis8c2NyaXB0PgordGVzdCgoKSA9
PiB7CisgIGFzc2VydF9lcXVhbHMobG9jYXRpb25bU3ltYm9sLnRvUHJpbWl0aXZlXSwgdW5kZWZp
bmVkKQorICBjb25zdCBwcm9wID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihsb2Nh
dGlvbiwgU3ltYm9sLnRvUHJpbWl0aXZlKQorICBhc3NlcnRfZmFsc2UocHJvcC5lbnVtZXJhYmxl
KQorICBhc3NlcnRfZmFsc2UocHJvcC53cml0YWJsZSkKKyAgYXNzZXJ0X2ZhbHNlKHByb3AuY29u
ZmlndXJhYmxlKQorfSkKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0
aW9uLWludGVyZmFjZS9sb2NhdGlvbi12YWx1ZW9mLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3Ro
ZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tdmFsdWVvZi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTUxZWY2OTY1YzRlMjM2NzRiNDQ0YTNjYzE1N2MxMDRiOTQzZGNlMgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvbG9jYXRpb24tdmFsdWVv
Zi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK1BBU1MgTG9jYXRpb24gdmFsdWVPZiAK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbi12
YWx1ZW9mLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXZh
bHVlb2YuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NzhiYmI2M2EwYjQxYWU1NWMwNTE5Y2E2ZWJiOWVmMGQ1
NTMwNGRhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFj
ZS9sb2NhdGlvbi12YWx1ZW9mLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8dGl0bGU+TG9jYXRpb24gdmFsdWVPZjwvdGl0bGU+Cis8c2NyaXB0IHNyYz0vcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9L3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcz48L3NjcmlwdD4KKzxkaXYgaWQ9bG9nPjwvZGl2PgorPHNjcmlwdD4KK3Rl
c3QoKCkgPT4geworICBhc3NlcnRfZXF1YWxzKGxvY2F0aW9uLnZhbHVlT2YsIE9iamVjdC5wcm90
b3R5cGUudmFsdWVPZikKKyAgYXNzZXJ0X2VxdWFscyh0eXBlb2YgbG9jYXRpb24udmFsdWVPZi5j
YWxsKDUpLCAib2JqZWN0IikKKyAgY29uc3QgcHJvcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IobG9jYXRpb24sICJ2YWx1ZU9mIikKKyAgYXNzZXJ0X2ZhbHNlKHByb3AuZW51bWVy
YWJsZSkKKyAgYXNzZXJ0X2ZhbHNlKHByb3Aud3JpdGFibGUpCisgIGFzc2VydF9mYWxzZShwcm9w
LmNvbmZpZ3VyYWJsZSkKK30pCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1s
b2NhdGlvbi1pbnRlcmZhY2UvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9jYXRpb24t
aW50ZXJmYWNlL3czYy1pbXBvcnQubG9nCmluZGV4IDQzMGUwYjE2MGM5ZTViMmQ5MDg4MDExOTFl
ZmRkMmJhYWVlYWQzNjcuLmJiZDRlMTczMjQzNmU4ZmM2MGRjZjYxYTVhNDU3MWVjYTM0YTg1M2Mg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZhY2UvdzNjLWltcG9ydC5s
b2cKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS93M2MtaW1wb3J0LmxvZwpA
QCAtMjksNiArMjksOCBAQCBMaXN0IG9mIGZpbGVzOgogL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1p
bnRlcmZhY2UvbG9jYXRpb24tcHJvdG9jb2wtc2V0dGVyLmh0bWwKIC9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9yeS90aGUtbG9j
YXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXByb3RvdHlwZS1zZXR0aW5nLmh0bWwKIC9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlzdG9y
eS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXN0cmluZ2lmaWVyLmh0bWwKKy9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvYnJvd3NlcnMvaGlz
dG9yeS90aGUtbG9jYXRpb24taW50ZXJmYWNlL2xvY2F0aW9uLXN5bWJvbC10b3ByaW1pdGl2ZS5o
dG1sCisvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jy
b3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbi12YWx1ZW9mLmh0
bWwgCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL2Jy
b3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlvbl9hc3NpZ25fYWJv
dXRfYmxhbmstMS5odG1sCiAvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL2Jyb3dzZXJzL2hpc3RvcnkvdGhlLWxvY2F0aW9uLWludGVyZmFjZS9sb2NhdGlv
bl9hc3NpZ25fYWJvdXRfYmxhbmsuaHRtbAogL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9icm93c2Vycy9oaXN0b3J5L3RoZS1sb2NhdGlvbi1pbnRlcmZh
Y2UvbG9jYXRpb25faGFzaC5odG1sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>