<?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>172898</bug_id>
          
          <creation_ts>2017-06-03 13:26:04 -0700</creation_ts>
          <short_desc>Implement DOMMatrix&apos;s fromFloat32Array / fromFloat64Array &amp; toFloat32Array / toFloat64Array</short_desc>
          <delta_ts>2017-06-04 08:00:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://drafts.fxtf.org/geometry/#dommatrixreadonly</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>163505</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1315473</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-03 13:26:04 -0700</bug_when>
    <thetext>Implement DOMMatrix&apos;s fromFloat32Array / fromFloat64Array &amp; toFloat32Array / toFloat64Array:
- https://drafts.fxtf.org/geometry/#dommatrixreadonly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315475</commentid>
    <comment_count>1</comment_count>
      <attachid>311942</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-03 13:41:32 -0700</bug_when>
    <thetext>Created attachment 311942
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315479</commentid>
    <comment_count>2</comment_count>
      <attachid>311943</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-03 14:24:38 -0700</bug_when>
    <thetext>Created attachment 311943
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315492</commentid>
    <comment_count>3</comment_count>
      <attachid>311948</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-03 16:16:14 -0700</bug_when>
    <thetext>Created attachment 311948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315496</commentid>
    <comment_count>4</comment_count>
      <attachid>311948</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-03 16:45:32 -0700</bug_when>
    <thetext>Comment on attachment 311948
Patch

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

&gt; Source/WebCore/css/DOMMatrixReadOnly.idl:97
&gt; +    [NewObject] Float32Array? toFloat32Array();
&gt; +    [NewObject] Float64Array? toFloat64Array();

Perhaps this should throw an out of memory exception rather than making them nullable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315497</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-03 17:07:52 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; Comment on attachment 311948 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=311948&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/DOMMatrixReadOnly.idl:97
&gt; &gt; +    [NewObject] Float32Array? toFloat32Array();
&gt; &gt; +    [NewObject] Float64Array? toFloat64Array();
&gt; 
&gt; Perhaps this should throw an out of memory exception rather than making them
&gt; nullable?

Good idea, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315498</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-03 17:45:40 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; Comment on attachment 311948 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=311948&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/DOMMatrixReadOnly.idl:97
&gt; &gt; +    [NewObject] Float32Array? toFloat32Array();
&gt; &gt; +    [NewObject] Float64Array? toFloat64Array();
&gt; 
&gt; Perhaps this should throw an out of memory exception rather than making them
&gt; nullable?

Wait, is there such an exception? Cannot find it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315499</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-03 17:47:44 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #6)
&gt; (In reply to Sam Weinig from comment #4)
&gt; &gt; Comment on attachment 311948 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=311948&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/css/DOMMatrixReadOnly.idl:97
&gt; &gt; &gt; +    [NewObject] Float32Array? toFloat32Array();
&gt; &gt; &gt; +    [NewObject] Float64Array? toFloat64Array();
&gt; &gt; 
&gt; &gt; Perhaps this should throw an out of memory exception rather than making them
&gt; &gt; nullable?
&gt; 
&gt; Wait, is there such an exception? Cannot find it.

From WebIDL:
&quot;UnknownError&quot;	The operation failed for an unknown transient reason (e.g. out of memory).

I guess I&apos;ll use that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315500</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-03 17:53:05 -0700</bug_when>
    <thetext>Darn, MayThrowException does not seem to play nicely with typed array :(

In file included from /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrixReadOnly.cpp:27:
In file included from /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvert.h:30:
In file included from /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertBufferSource.h:29:
/Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertInterface.h:74:16: error: call to &apos;toJSNewlyCreated&apos; is ambiguous
In file included from /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrixReadOnly.cpp:27:
In file included from /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvert.h:28:
In file included from /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertAny.h:29:
/Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertBase.h:165:28: note: in instantiation of function template specialization &apos;WebCore::JSConverter&lt;WebCore::IDLInterface&lt;JSC::GenericTypedArrayView&lt;JSC::Float32Adaptor&gt; &gt; &gt;::convertNewlyCreated&lt;WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::Float32Adaptor&gt; &gt; &gt;&apos; requested here
/Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertBase.h:175:12: note: in instantiation of function template specialization &apos;WebCore::toJSNewlyCreated&lt;WebCore::IDLInterface&lt;JSC::GenericTypedArrayView&lt;JSC::Float32Adaptor&gt; &gt;, WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::Float32Adaptor&gt; &gt; &gt;&apos; requested here
/Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrixReadOnly.cpp:877:28: note: in instantiation of function template specialization &apos;WebCore::toJSNewlyCreated&lt;WebCore::IDLInterface&lt;JSC::GenericTypedArrayView&lt;JSC::Float32Adaptor&gt; &gt;, WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::Float32Adaptor&gt; &gt; &gt;&apos; requested here
In file included from /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrixReadOnly.cpp:22:
/Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrixReadOnly.h:78:14: note: candidate function
JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, Ref&lt;DOMMatrixReadOnly&gt;&amp;&amp;);
/Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrixReadOnly.h:79:21: note: candidate function
inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state, JSDOMGlobalObject* globalObject, RefPtr&lt;DOMMatrixReadOnly&gt;&amp;&amp; impl) { return impl ? toJSNewlyCreated(state, globalObject, impl.releaseNonNull()) : JSC::jsNull(); }
In file included from /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrixReadOnly.cpp:29:
/Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrix.h:62:14: note: candidate function
JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, Ref&lt;DOMMatrix&gt;&amp;&amp;);
/Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrix.h:63:21: note: candidate function
inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state, JSDOMGlobalObject* globalObject, RefPtr&lt;DOMMatrix&gt;&amp;&amp; impl) { return impl ? toJSNewlyCreated(state, globalObject, impl.releaseNonNull()) : JSC::jsNull(); }
In file included from /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrixReadOnly.cpp:27:
In file included from /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvert.h:30:
In file included from /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertBufferSource.h:29:
/Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertInterface.h:74:16: error: call to &apos;toJSNewlyCreated&apos; is ambiguous
In file included from /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrixReadOnly.cpp:27:
In file included from /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvert.h:28:
In file included from /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertAny.h:29:
/Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertBase.h:165:28: note: in instantiation of function template specialization &apos;WebCore::JSConverter&lt;WebCore::IDLInterface&lt;JSC::GenericTypedArrayView&lt;JSC::Float64Adaptor&gt; &gt; &gt;::convertNewlyCreated&lt;WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::Float64Adaptor&gt; &gt; &gt;&apos; requested here
/Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertBase.h:175:12: note: in instantiation of function template specialization &apos;WebCore::toJSNewlyCreated&lt;WebCore::IDLInterface&lt;JSC::GenericTypedArrayView&lt;JSC::Float64Adaptor&gt; &gt;, WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::Float64Adaptor&gt; &gt; &gt;&apos; requested here
/Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrixReadOnly.cpp:890:28: note: in instantiation of function template specialization &apos;WebCore::toJSNewlyCreated&lt;WebCore::IDLInterface&lt;JSC::GenericTypedArrayView&lt;JSC::Float64Adaptor&gt; &gt;, WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::Float64Adaptor&gt; &gt; &gt;&apos; requested here
In file included from /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrixReadOnly.cpp:22:
/Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrixReadOnly.h:78:14: note: candidate function
JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, Ref&lt;DOMMatrixReadOnly&gt;&amp;&amp;);
/Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrixReadOnly.h:79:21: note: candidate function
inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state, JSDOMGlobalObject* globalObject, RefPtr&lt;DOMMatrixReadOnly&gt;&amp;&amp; impl) { return impl ? toJSNewlyCreated(state, globalObject, impl.releaseNonNull()) : JSC::jsNull(); }
In file included from /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrixReadOnly.cpp:29:
/Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrix.h:62:14: note: candidate function
JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*, Ref&lt;DOMMatrix&gt;&amp;&amp;);
/Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/JSDOMMatrix.h:63:21: note: candidate function
inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state, JSDOMGlobalObject* globalObject, RefPtr&lt;DOMMatrix&gt;&amp;&amp; impl) { return impl ? toJSNewlyCreated(state, globalObject, impl.releaseNonNull()) : JSC::jsNull(); }
2 errors generated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315502</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-03 18:06:40 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #8)
&gt; Darn, MayThrowException does not seem to play nicely with typed array :(
&gt; 
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrixReadOnly.cpp:27:
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvert.h:30:
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/
&gt; JSDOMConvertBufferSource.h:29:
&gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/
&gt; JSDOMConvertInterface.h:74:16: error: call to &apos;toJSNewlyCreated&apos; is ambiguous
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrixReadOnly.cpp:27:
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvert.h:28:
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertAny.h:
&gt; 29:
&gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertBase.
&gt; h:165:28: note: in instantiation of function template specialization
&gt; &apos;WebCore::JSConverter&lt;WebCore::IDLInterface&lt;JSC::GenericTypedArrayView&lt;JSC::
&gt; Float32Adaptor&gt; &gt;
&gt; &gt;::convertNewlyCreated&lt;WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::
&gt; Float32Adaptor&gt; &gt; &gt;&apos; requested here
&gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertBase.
&gt; h:175:12: note: in instantiation of function template specialization
&gt; &apos;WebCore::toJSNewlyCreated&lt;WebCore::IDLInterface&lt;JSC::
&gt; GenericTypedArrayView&lt;JSC::Float32Adaptor&gt; &gt;,
&gt; WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::Float32Adaptor&gt; &gt; &gt;&apos; requested here
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrixReadOnly.cpp:877:28: note: in instantiation of function template
&gt; specialization
&gt; &apos;WebCore::toJSNewlyCreated&lt;WebCore::IDLInterface&lt;JSC::
&gt; GenericTypedArrayView&lt;JSC::Float32Adaptor&gt; &gt;,
&gt; WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::Float32Adaptor&gt; &gt; &gt;&apos; requested here
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrixReadOnly.cpp:22:
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrixReadOnly.h:78:14: note: candidate function
&gt; JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*,
&gt; Ref&lt;DOMMatrixReadOnly&gt;&amp;&amp;);
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrixReadOnly.h:79:21: note: candidate function
&gt; inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state,
&gt; JSDOMGlobalObject* globalObject, RefPtr&lt;DOMMatrixReadOnly&gt;&amp;&amp; impl) { return
&gt; impl ? toJSNewlyCreated(state, globalObject, impl.releaseNonNull()) :
&gt; JSC::jsNull(); }
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrixReadOnly.cpp:29:
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrix.h:62:14: note: candidate function
&gt; JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*,
&gt; Ref&lt;DOMMatrix&gt;&amp;&amp;);
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrix.h:63:21: note: candidate function
&gt; inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state,
&gt; JSDOMGlobalObject* globalObject, RefPtr&lt;DOMMatrix&gt;&amp;&amp; impl) { return impl ?
&gt; toJSNewlyCreated(state, globalObject, impl.releaseNonNull()) :
&gt; JSC::jsNull(); }
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrixReadOnly.cpp:27:
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvert.h:30:
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/
&gt; JSDOMConvertBufferSource.h:29:
&gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/
&gt; JSDOMConvertInterface.h:74:16: error: call to &apos;toJSNewlyCreated&apos; is ambiguous
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrixReadOnly.cpp:27:
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvert.h:28:
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertAny.h:
&gt; 29:
&gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertBase.
&gt; h:165:28: note: in instantiation of function template specialization
&gt; &apos;WebCore::JSConverter&lt;WebCore::IDLInterface&lt;JSC::GenericTypedArrayView&lt;JSC::
&gt; Float64Adaptor&gt; &gt;
&gt; &gt;::convertNewlyCreated&lt;WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::
&gt; Float64Adaptor&gt; &gt; &gt;&apos; requested here
&gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertBase.
&gt; h:175:12: note: in instantiation of function template specialization
&gt; &apos;WebCore::toJSNewlyCreated&lt;WebCore::IDLInterface&lt;JSC::
&gt; GenericTypedArrayView&lt;JSC::Float64Adaptor&gt; &gt;,
&gt; WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::Float64Adaptor&gt; &gt; &gt;&apos; requested here
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrixReadOnly.cpp:890:28: note: in instantiation of function template
&gt; specialization
&gt; &apos;WebCore::toJSNewlyCreated&lt;WebCore::IDLInterface&lt;JSC::
&gt; GenericTypedArrayView&lt;JSC::Float64Adaptor&gt; &gt;,
&gt; WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::Float64Adaptor&gt; &gt; &gt;&apos; requested here
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrixReadOnly.cpp:22:
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrixReadOnly.h:78:14: note: candidate function
&gt; JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*,
&gt; Ref&lt;DOMMatrixReadOnly&gt;&amp;&amp;);
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrixReadOnly.h:79:21: note: candidate function
&gt; inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state,
&gt; JSDOMGlobalObject* globalObject, RefPtr&lt;DOMMatrixReadOnly&gt;&amp;&amp; impl) { return
&gt; impl ? toJSNewlyCreated(state, globalObject, impl.releaseNonNull()) :
&gt; JSC::jsNull(); }
&gt; In file included from
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrixReadOnly.cpp:29:
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrix.h:62:14: note: candidate function
&gt; JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*,
&gt; Ref&lt;DOMMatrix&gt;&amp;&amp;);
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; JSDOMMatrix.h:63:21: note: candidate function
&gt; inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state,
&gt; JSDOMGlobalObject* globalObject, RefPtr&lt;DOMMatrix&gt;&amp;&amp; impl) { return impl ?
&gt; toJSNewlyCreated(state, globalObject, impl.releaseNonNull()) :
&gt; JSC::jsNull(); }
&gt; 2 errors generated.

Yeah, whoever added TypeArray support (it surpassingly was not me) added it incorrectly and modeled TypedArrays as IDLInterfaces. Unfortunately, since they are not generated, they don&apos;t have all the necessary goods, like toJS()/toJSNewlyCreated() implementations. I should go in a make them their own IDL type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315503</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-03 18:07:45 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #9)
&gt; (In reply to Chris Dumez from comment #8)
&gt; &gt; Darn, MayThrowException does not seem to play nicely with typed array :(
&gt; &gt; 
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrixReadOnly.cpp:27:
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvert.h:30:
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/
&gt; &gt; JSDOMConvertBufferSource.h:29:
&gt; &gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/
&gt; &gt; JSDOMConvertInterface.h:74:16: error: call to &apos;toJSNewlyCreated&apos; is ambiguous
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrixReadOnly.cpp:27:
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvert.h:28:
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertAny.h:
&gt; &gt; 29:
&gt; &gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertBase.
&gt; &gt; h:165:28: note: in instantiation of function template specialization
&gt; &gt; &apos;WebCore::JSConverter&lt;WebCore::IDLInterface&lt;JSC::GenericTypedArrayView&lt;JSC::
&gt; &gt; Float32Adaptor&gt; &gt;
&gt; &gt; &gt;::convertNewlyCreated&lt;WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::
&gt; &gt; Float32Adaptor&gt; &gt; &gt;&apos; requested here
&gt; &gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertBase.
&gt; &gt; h:175:12: note: in instantiation of function template specialization
&gt; &gt; &apos;WebCore::toJSNewlyCreated&lt;WebCore::IDLInterface&lt;JSC::
&gt; &gt; GenericTypedArrayView&lt;JSC::Float32Adaptor&gt; &gt;,
&gt; &gt; WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::Float32Adaptor&gt; &gt; &gt;&apos; requested here
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrixReadOnly.cpp:877:28: note: in instantiation of function template
&gt; &gt; specialization
&gt; &gt; &apos;WebCore::toJSNewlyCreated&lt;WebCore::IDLInterface&lt;JSC::
&gt; &gt; GenericTypedArrayView&lt;JSC::Float32Adaptor&gt; &gt;,
&gt; &gt; WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::Float32Adaptor&gt; &gt; &gt;&apos; requested here
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrixReadOnly.cpp:22:
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrixReadOnly.h:78:14: note: candidate function
&gt; &gt; JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*,
&gt; &gt; Ref&lt;DOMMatrixReadOnly&gt;&amp;&amp;);
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrixReadOnly.h:79:21: note: candidate function
&gt; &gt; inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state,
&gt; &gt; JSDOMGlobalObject* globalObject, RefPtr&lt;DOMMatrixReadOnly&gt;&amp;&amp; impl) { return
&gt; &gt; impl ? toJSNewlyCreated(state, globalObject, impl.releaseNonNull()) :
&gt; &gt; JSC::jsNull(); }
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrixReadOnly.cpp:29:
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrix.h:62:14: note: candidate function
&gt; &gt; JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*,
&gt; &gt; Ref&lt;DOMMatrix&gt;&amp;&amp;);
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrix.h:63:21: note: candidate function
&gt; &gt; inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state,
&gt; &gt; JSDOMGlobalObject* globalObject, RefPtr&lt;DOMMatrix&gt;&amp;&amp; impl) { return impl ?
&gt; &gt; toJSNewlyCreated(state, globalObject, impl.releaseNonNull()) :
&gt; &gt; JSC::jsNull(); }
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrixReadOnly.cpp:27:
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvert.h:30:
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/
&gt; &gt; JSDOMConvertBufferSource.h:29:
&gt; &gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/
&gt; &gt; JSDOMConvertInterface.h:74:16: error: call to &apos;toJSNewlyCreated&apos; is ambiguous
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrixReadOnly.cpp:27:
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvert.h:28:
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertAny.h:
&gt; &gt; 29:
&gt; &gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertBase.
&gt; &gt; h:165:28: note: in instantiation of function template specialization
&gt; &gt; &apos;WebCore::JSConverter&lt;WebCore::IDLInterface&lt;JSC::GenericTypedArrayView&lt;JSC::
&gt; &gt; Float64Adaptor&gt; &gt;
&gt; &gt; &gt;::convertNewlyCreated&lt;WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::
&gt; &gt; Float64Adaptor&gt; &gt; &gt;&apos; requested here
&gt; &gt; /Volumes/Data/WebKit/OpenSource/Source/WebCore/bindings/js/JSDOMConvertBase.
&gt; &gt; h:175:12: note: in instantiation of function template specialization
&gt; &gt; &apos;WebCore::toJSNewlyCreated&lt;WebCore::IDLInterface&lt;JSC::
&gt; &gt; GenericTypedArrayView&lt;JSC::Float64Adaptor&gt; &gt;,
&gt; &gt; WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::Float64Adaptor&gt; &gt; &gt;&apos; requested here
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrixReadOnly.cpp:890:28: note: in instantiation of function template
&gt; &gt; specialization
&gt; &gt; &apos;WebCore::toJSNewlyCreated&lt;WebCore::IDLInterface&lt;JSC::
&gt; &gt; GenericTypedArrayView&lt;JSC::Float64Adaptor&gt; &gt;,
&gt; &gt; WTF::Ref&lt;JSC::GenericTypedArrayView&lt;JSC::Float64Adaptor&gt; &gt; &gt;&apos; requested here
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrixReadOnly.cpp:22:
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrixReadOnly.h:78:14: note: candidate function
&gt; &gt; JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*,
&gt; &gt; Ref&lt;DOMMatrixReadOnly&gt;&amp;&amp;);
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrixReadOnly.h:79:21: note: candidate function
&gt; &gt; inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state,
&gt; &gt; JSDOMGlobalObject* globalObject, RefPtr&lt;DOMMatrixReadOnly&gt;&amp;&amp; impl) { return
&gt; &gt; impl ? toJSNewlyCreated(state, globalObject, impl.releaseNonNull()) :
&gt; &gt; JSC::jsNull(); }
&gt; &gt; In file included from
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrixReadOnly.cpp:29:
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrix.h:62:14: note: candidate function
&gt; &gt; JSC::JSValue toJSNewlyCreated(JSC::ExecState*, JSDOMGlobalObject*,
&gt; &gt; Ref&lt;DOMMatrix&gt;&amp;&amp;);
&gt; &gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release/DerivedSources/WebCore/
&gt; &gt; JSDOMMatrix.h:63:21: note: candidate function
&gt; &gt; inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state,
&gt; &gt; JSDOMGlobalObject* globalObject, RefPtr&lt;DOMMatrix&gt;&amp;&amp; impl) { return impl ?
&gt; &gt; toJSNewlyCreated(state, globalObject, impl.releaseNonNull()) :
&gt; &gt; JSC::jsNull(); }
&gt; &gt; 2 errors generated.
&gt; 
&gt; Yeah, whoever added TypeArray support (it surpassingly was not me) added it
&gt; incorrectly and modeled TypedArrays as IDLInterfaces. Unfortunately, since
&gt; they are not generated, they don&apos;t have all the necessary goods, like
&gt; toJS()/toJSNewlyCreated() implementations. I should go in a make them their
&gt; own IDL type.

I think it might have been me :( Anyway, I&apos;ll get it building.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315504</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-03 18:09:21 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; (In reply to Chris Dumez from comment #6)
&gt; &gt; (In reply to Sam Weinig from comment #4)
&gt; &gt; &gt; Comment on attachment 311948 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=311948&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/WebCore/css/DOMMatrixReadOnly.idl:97
&gt; &gt; &gt; &gt; +    [NewObject] Float32Array? toFloat32Array();
&gt; &gt; &gt; &gt; +    [NewObject] Float64Array? toFloat64Array();
&gt; &gt; &gt; 
&gt; &gt; &gt; Perhaps this should throw an out of memory exception rather than making them
&gt; &gt; &gt; nullable?
&gt; &gt; 
&gt; &gt; Wait, is there such an exception? Cannot find it.
&gt; 
&gt; From WebIDL:
&gt; &quot;UnknownError&quot;	The operation failed for an unknown transient reason (e.g.
&gt; out of memory).
&gt; 
&gt; I guess I&apos;ll use that.

Alternatively, you could add a new type that converts to JSC::throwOutOfMemoryError() which is what the JavaScriptCore uses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315505</commentid>
    <comment_count>12</comment_count>
      <attachid>311951</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-03 18:15:57 -0700</bug_when>
    <thetext>Created attachment 311951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315506</commentid>
    <comment_count>13</comment_count>
      <attachid>311951</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-03 18:54:19 -0700</bug_when>
    <thetext>Comment on attachment 311951
Patch

Clearing flags on attachment: 311951

Committed r217764: &lt;http://trac.webkit.org/changeset/217764&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1315507</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-03 18:54:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311942</attachid>
            <date>2017-06-03 13:41:32 -0700</date>
            <delta_ts>2017-06-03 14:24:37 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>172898_fromFloatArray_wip.patch</filename>
            <type>text/plain</type>
            <size>12464</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2dlb21ldHJ5LTEvRE9NTWF0cml4LW5ld29iamVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9nZW9tZXRyeS0xL0RPTU1h
dHJpeC1uZXdvYmplY3QtZXhwZWN0ZWQudHh0CmluZGV4IDAzODdlOGIwNmU0Li5kMjMxM2M0Y2Nk
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy9jc3MvZ2VvbWV0cnktMS9ET01NYXRyaXgtbmV3b2JqZWN0LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9nZW9tZXRyeS0x
L0RPTU1hdHJpeC1uZXdvYmplY3QtZXhwZWN0ZWQudHh0CkBAIC0xMiw4ICsxMiw4IEBAIFBBU1Mg
RE9NTWF0cml4IGZsaXBYCiBQQVNTIERPTU1hdHJpeCBmbGlwWSAKIFBBU1MgRE9NTWF0cml4IGlu
dmVyc2UgCiBGQUlMIERPTU1hdHJpeCB0cmFuc2Zvcm1Qb2ludCBtYXRyaXhbbWV0aG9kXSBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICdtYXRyaXhbbWV0aG9kXSgpJywgJ21hdHJpeFttZXRob2RdJyBp
cyB1bmRlZmluZWQpCi1GQUlMIERPTU1hdHJpeCB0b0Zsb2F0MzJBcnJheSBtYXRyaXhbbWV0aG9k
XSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdtYXRyaXhbbWV0aG9kXSgpJywgJ21hdHJpeFttZXRo
b2RdJyBpcyB1bmRlZmluZWQpCi1GQUlMIERPTU1hdHJpeCB0b0Zsb2F0NjRBcnJheSBtYXRyaXhb
bWV0aG9kXSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdtYXRyaXhbbWV0aG9kXSgpJywgJ21hdHJp
eFttZXRob2RdJyBpcyB1bmRlZmluZWQpCitQQVNTIERPTU1hdHJpeCB0b0Zsb2F0MzJBcnJheSAK
K1BBU1MgRE9NTWF0cml4IHRvRmxvYXQ2NEFycmF5IAogUEFTUyBET01NYXRyaXhSZWFkT25seSB0
cmFuc2xhdGUgCiBQQVNTIERPTU1hdHJpeFJlYWRPbmx5IHNjYWxlIAogUEFTUyBET01NYXRyaXhS
ZWFkT25seSBzY2FsZTNkIApAQCAtMjcsNiArMjcsNiBAQCBQQVNTIERPTU1hdHJpeFJlYWRPbmx5
IGZsaXBYCiBQQVNTIERPTU1hdHJpeFJlYWRPbmx5IGZsaXBZIAogUEFTUyBET01NYXRyaXhSZWFk
T25seSBpbnZlcnNlIAogRkFJTCBET01NYXRyaXhSZWFkT25seSB0cmFuc2Zvcm1Qb2ludCBtYXRy
aXhbbWV0aG9kXSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdtYXRyaXhbbWV0aG9kXSgpJywgJ21h
dHJpeFttZXRob2RdJyBpcyB1bmRlZmluZWQpCi1GQUlMIERPTU1hdHJpeFJlYWRPbmx5IHRvRmxv
YXQzMkFycmF5IG1hdHJpeFttZXRob2RdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ21hdHJpeFtt
ZXRob2RdKCknLCAnbWF0cml4W21ldGhvZF0nIGlzIHVuZGVmaW5lZCkKLUZBSUwgRE9NTWF0cml4
UmVhZE9ubHkgdG9GbG9hdDY0QXJyYXkgbWF0cml4W21ldGhvZF0gaXMgbm90IGEgZnVuY3Rpb24u
IChJbiAnbWF0cml4W21ldGhvZF0oKScsICdtYXRyaXhbbWV0aG9kXScgaXMgdW5kZWZpbmVkKQor
UEFTUyBET01NYXRyaXhSZWFkT25seSB0b0Zsb2F0MzJBcnJheSAKK1BBU1MgRE9NTWF0cml4UmVh
ZE9ubHkgdG9GbG9hdDY0QXJyYXkgCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
T01NYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5jcHAKaW5kZXggYTc5
NDhmNzI5YjcuLjA2MWE4Y2I4MTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9N
TWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNwcApAQCAtNDMs
NiArNDMsNDAgQEAgRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IERPTU1hdHJpeDo6ZnJvbU1h
dHJpeChET01NYXRyaXhJbml0JiYgaW5pdCkKICAgICByZXR1cm4gZnJvbU1hdHJpeEhlbHBlcjxE
T01NYXRyaXg+KFdURk1vdmUoaW5pdCkpOwogfQogCitFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4
Pj4gRE9NTWF0cml4Ojpmcm9tRmxvYXQzMkFycmF5KFJlZjxGbG9hdDMyQXJyYXk+JiYgYXJyYXkz
MikKK3sKKyAgICBpZiAoYXJyYXkzMi0+bGVuZ3RoKCkgPT0gNikKKyAgICAgICAgcmV0dXJuIERP
TU1hdHJpeDo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KGFycmF5MzItPml0ZW0oMCksIGFy
cmF5MzItPml0ZW0oMSksIGFycmF5MzItPml0ZW0oMiksIGFycmF5MzItPml0ZW0oMyksIGFycmF5
MzItPml0ZW0oNCksIGFycmF5MzItPml0ZW0oNSkpLCBJczJEOjpZZXMpOworCisgICAgaWYgKGFy
cmF5MzItPmxlbmd0aCgpID09IDE2KSB7CisgICAgICAgIHJldHVybiBET01NYXRyaXg6OmNyZWF0
ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICAgICAgICAgIGFycmF5MzItPml0ZW0oMCksIGFy
cmF5MzItPml0ZW0oMSksIGFycmF5MzItPml0ZW0oMiksIGFycmF5MzItPml0ZW0oMyksCisgICAg
ICAgICAgICBhcnJheTMyLT5pdGVtKDQpLCBhcnJheTMyLT5pdGVtKDUpLCBhcnJheTMyLT5pdGVt
KDYpLCBhcnJheTMyLT5pdGVtKDcpLAorICAgICAgICAgICAgYXJyYXkzMi0+aXRlbSg4KSwgYXJy
YXkzMi0+aXRlbSg5KSwgYXJyYXkzMi0+aXRlbSgxMCksIGFycmF5MzItPml0ZW0oMTEpLAorICAg
ICAgICAgICAgYXJyYXkzMi0+aXRlbSgxMiksIGFycmF5MzItPml0ZW0oMTMpLCBhcnJheTMyLT5p
dGVtKDE0KSwgYXJyYXkzMi0+aXRlbSgxNSkKKyAgICAgICAgKSwgSXMyRDo6Tm8pOworICAgIH0K
KworICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8
UmVmPERPTU1hdHJpeD4+IERPTU1hdHJpeDo6ZnJvbUZsb2F0NjRBcnJheShSZWY8RmxvYXQ2NEFy
cmF5PiYmIGFycmF5NjQpCit7CisgICAgaWYgKGFycmF5NjQtPmxlbmd0aCgpID09IDYpCisgICAg
ICAgIHJldHVybiBET01NYXRyaXg6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeChhcnJheTY0
LT5pdGVtKDApLCBhcnJheTY0LT5pdGVtKDEpLCBhcnJheTY0LT5pdGVtKDIpLCBhcnJheTY0LT5p
dGVtKDMpLCBhcnJheTY0LT5pdGVtKDQpLCBhcnJheTY0LT5pdGVtKDUpKSwgSXMyRDo6WWVzKTsK
KworICAgIGlmIChhcnJheTY0LT5sZW5ndGgoKSA9PSAxNikgeworICAgICAgICByZXR1cm4gRE9N
TWF0cml4OjpjcmVhdGUoVHJhbnNmb3JtYXRpb25NYXRyaXgoCisgICAgICAgICAgICBhcnJheTY0
LT5pdGVtKDApLCBhcnJheTY0LT5pdGVtKDEpLCBhcnJheTY0LT5pdGVtKDIpLCBhcnJheTY0LT5p
dGVtKDMpLAorICAgICAgICAgICAgYXJyYXk2NC0+aXRlbSg0KSwgYXJyYXk2NC0+aXRlbSg1KSwg
YXJyYXk2NC0+aXRlbSg2KSwgYXJyYXk2NC0+aXRlbSg3KSwKKyAgICAgICAgICAgIGFycmF5NjQt
Pml0ZW0oOCksIGFycmF5NjQtPml0ZW0oOSksIGFycmF5NjQtPml0ZW0oMTApLCBhcnJheTY0LT5p
dGVtKDExKSwKKyAgICAgICAgICAgIGFycmF5NjQtPml0ZW0oMTIpLCBhcnJheTY0LT5pdGVtKDEz
KSwgYXJyYXk2NC0+aXRlbSgxNCksIGFycmF5NjQtPml0ZW0oMTUpCisgICAgICAgICksIElzMkQ6
Ok5vKTsKKyAgICB9CisKKyAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07Cit9CisK
IC8vIGh0dHBzOi8vZHJhZnRzLmZ4dGYub3JnL2dlb21ldHJ5LyNkb20tZG9tbWF0cml4LW11bHRp
cGx5c2VsZgogRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IERPTU1hdHJpeDo6bXVsdGlwbHlT
ZWxmKERPTU1hdHJpeEluaXQmJiBvdGhlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9ET01NYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaAppbmRleCA0
ZGJmZGQ5NTZjMy4uMmYzODk3MDMyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9E
T01NYXRyaXguaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmgKQEAgLTUyLDYg
KzUyLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+
PiBmcm9tTWF0cml4KERPTU1hdHJpeEluaXQmJik7CiAKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8
UmVmPERPTU1hdHJpeD4+IGZyb21GbG9hdDMyQXJyYXkoUmVmPEZsb2F0MzJBcnJheT4mJik7Cisg
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBmcm9tRmxvYXQ2NEFycmF5KFJl
ZjxGbG9hdDY0QXJyYXk+JiYpOworCiAgICAgRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IG11
bHRpcGx5U2VsZihET01NYXRyaXhJbml0JiYgb3RoZXIpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxE
T01NYXRyaXg+PiBwcmVNdWx0aXBseVNlbGYoRE9NTWF0cml4SW5pdCYmIG90aGVyKTsKICAgICBS
ZWY8RE9NTWF0cml4PiB0cmFuc2xhdGVTZWxmKGRvdWJsZSB0eCA9IDAsIGRvdWJsZSB0eSA9IDAs
IGRvdWJsZSB0eiA9IDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJp
eC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmlkbAppbmRleCA2Y2ZlNTQxOTMy
NC4uYjljZmRjY2ZhOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXgu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaWRsCkBAIC0zMiw4ICszMiw4
IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogIF0gaW50ZXJmYWNlIERPTU1hdHJp
eCA6IERPTU1hdHJpeFJlYWRPbmx5IHsKICAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVj
dF0gc3RhdGljIERPTU1hdHJpeCBmcm9tTWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3Ro
ZXIpOwotICAgIC8vIFtOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXggZnJvbUZsb2F0MzJBcnJh
eShGbG9hdDMyQXJyYXkgYXJyYXkzMik7IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLSAgICAv
LyBbTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4IGZyb21GbG9hdDY0QXJyYXkoRmxvYXQ2NEFy
cmF5IGFycmF5NjQpOyAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4IGZyb21GbG9hdDMyQXJyYXkoRmxv
YXQzMkFycmF5IGFycmF5MzIpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBz
dGF0aWMgRE9NTWF0cml4IGZyb21GbG9hdDY0QXJyYXkoRmxvYXQ2NEFycmF5IGFycmF5NjQpOwog
CiAgICAgLy8gVGhlc2UgYXR0cmlidXRlcyBhcmUgc2ltcGxlIGFsaWFzZXMgZm9yIGNlcnRhaW4g
ZWxlbWVudHMgb2YgdGhlIDR4NCBtYXRyaXgKICAgICBpbmhlcml0IGF0dHJpYnV0ZSB1bnJlc3Ry
aWN0ZWQgZG91YmxlIGE7IC8vIEFsaWFzIGZvciBtMTEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1h
dHJpeFJlYWRPbmx5LmNwcAppbmRleCBjOGIzODQ4NjA0Ni4uNmFmYjY4M2RmMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNwcApAQCAtMzIsNiArMzIsOSBAQAogI2lu
Y2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNp
bmNsdWRlICJUcmFuc2Zvcm1GdW5jdGlvbnMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9H
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8aGVhcC9IZWFwSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtMTE0LDYgKzExNyw0MCBAQCBFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4
UmVhZE9ubHk+PiBET01NYXRyaXhSZWFkT25seTo6ZnJvbU1hdHJpeChET01NYXRyaXhJbml0Jgog
ICAgIHJldHVybiBmcm9tTWF0cml4SGVscGVyPERPTU1hdHJpeFJlYWRPbmx5PihXVEZNb3ZlKGlu
aXQpKTsKIH0KIAorRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeFJlYWRPbmx5Pj4gRE9NTWF0cml4
UmVhZE9ubHk6OmZyb21GbG9hdDMyQXJyYXkoUmVmPEZsb2F0MzJBcnJheT4mJiBhcnJheTMyKQor
eworICAgIGlmIChhcnJheTMyLT5sZW5ndGgoKSA9PSA2KQorICAgICAgICByZXR1cm4gRE9NTWF0
cml4UmVhZE9ubHk6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeChhcnJheTMyLT5pdGVtKDAp
LCBhcnJheTMyLT5pdGVtKDEpLCBhcnJheTMyLT5pdGVtKDIpLCBhcnJheTMyLT5pdGVtKDMpLCBh
cnJheTMyLT5pdGVtKDQpLCBhcnJheTMyLT5pdGVtKDUpKSwgSXMyRDo6WWVzKTsKKworICAgIGlm
IChhcnJheTMyLT5sZW5ndGgoKSA9PSAxNikgeworICAgICAgICByZXR1cm4gRE9NTWF0cml4UmVh
ZE9ubHk6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICAgICAgICAgIGFycmF5MzIt
Pml0ZW0oMCksIGFycmF5MzItPml0ZW0oMSksIGFycmF5MzItPml0ZW0oMiksIGFycmF5MzItPml0
ZW0oMyksCisgICAgICAgICAgICBhcnJheTMyLT5pdGVtKDQpLCBhcnJheTMyLT5pdGVtKDUpLCBh
cnJheTMyLT5pdGVtKDYpLCBhcnJheTMyLT5pdGVtKDcpLAorICAgICAgICAgICAgYXJyYXkzMi0+
aXRlbSg4KSwgYXJyYXkzMi0+aXRlbSg5KSwgYXJyYXkzMi0+aXRlbSgxMCksIGFycmF5MzItPml0
ZW0oMTEpLAorICAgICAgICAgICAgYXJyYXkzMi0+aXRlbSgxMiksIGFycmF5MzItPml0ZW0oMTMp
LCBhcnJheTMyLT5pdGVtKDE0KSwgYXJyYXkzMi0+aXRlbSgxNSkKKyAgICAgICAgKSwgSXMyRDo6
Tm8pOworICAgIH0KKworICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKK30KKwor
RXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeFJlYWRPbmx5Pj4gRE9NTWF0cml4UmVhZE9ubHk6OmZy
b21GbG9hdDY0QXJyYXkoUmVmPEZsb2F0NjRBcnJheT4mJiBhcnJheTY0KQoreworICAgIGlmIChh
cnJheTY0LT5sZW5ndGgoKSA9PSA2KQorICAgICAgICByZXR1cm4gRE9NTWF0cml4UmVhZE9ubHk6
OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeChhcnJheTY0LT5pdGVtKDApLCBhcnJheTY0LT5p
dGVtKDEpLCBhcnJheTY0LT5pdGVtKDIpLCBhcnJheTY0LT5pdGVtKDMpLCBhcnJheTY0LT5pdGVt
KDQpLCBhcnJheTY0LT5pdGVtKDUpKSwgSXMyRDo6WWVzKTsKKworICAgIGlmIChhcnJheTY0LT5s
ZW5ndGgoKSA9PSAxNikgeworICAgICAgICByZXR1cm4gRE9NTWF0cml4UmVhZE9ubHk6OmNyZWF0
ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICAgICAgICAgIGFycmF5NjQtPml0ZW0oMCksIGFy
cmF5NjQtPml0ZW0oMSksIGFycmF5NjQtPml0ZW0oMiksIGFycmF5NjQtPml0ZW0oMyksCisgICAg
ICAgICAgICBhcnJheTY0LT5pdGVtKDQpLCBhcnJheTY0LT5pdGVtKDUpLCBhcnJheTY0LT5pdGVt
KDYpLCBhcnJheTY0LT5pdGVtKDcpLAorICAgICAgICAgICAgYXJyYXk2NC0+aXRlbSg4KSwgYXJy
YXk2NC0+aXRlbSg5KSwgYXJyYXk2NC0+aXRlbSgxMCksIGFycmF5NjQtPml0ZW0oMTEpLAorICAg
ICAgICAgICAgYXJyYXk2NC0+aXRlbSgxMiksIGFycmF5NjQtPml0ZW0oMTMpLCBhcnJheTY0LT5p
dGVtKDE0KSwgYXJyYXk2NC0+aXRlbSgxNSkKKyAgICAgICAgKSwgSXMyRDo6Tm8pOworICAgIH0K
KworICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKK30KKwogYm9vbCBET01NYXRy
aXhSZWFkT25seTo6aXNJZGVudGl0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbWF0cml4Lmlz
SWRlbnRpdHkoKTsKQEAgLTI0OCw2ICsyODUsNTYgQEAgUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4
UmVhZE9ubHk6OmludmVyc2UoKSBjb25zdAogICAgIHJldHVybiBtYXRyaXgtPmludmVydFNlbGYo
KTsKIH0KIAorUmVmUHRyPEZsb2F0MzJBcnJheT4gRE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQz
MkFycmF5KCkgY29uc3QKK3sKKyAgICBhdXRvIGFycmF5MzIgPSBGbG9hdDMyQXJyYXk6OmNyZWF0
ZVVuaW5pdGlhbGl6ZWQoMTYpOworICAgIGlmICghYXJyYXkzMikKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICBhcnJheTMyLT5zZXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCBtX21h
dHJpeC5tMTEoKSk7CisgICAgYXJyYXkzMi0+c2V0KDEsIG1fbWF0cml4Lm0xMigpKTsKKyAgICBh
cnJheTMyLT5zZXQoMiwgbV9tYXRyaXgubTEzKCkpOworICAgIGFycmF5MzItPnNldCgzLCBtX21h
dHJpeC5tMTQoKSk7CisgICAgYXJyYXkzMi0+c2V0KDQsIG1fbWF0cml4Lm0yMSgpKTsKKyAgICBh
cnJheTMyLT5zZXQoNSwgbV9tYXRyaXgubTIyKCkpOworICAgIGFycmF5MzItPnNldCg2LCBtX21h
dHJpeC5tMjMoKSk7CisgICAgYXJyYXkzMi0+c2V0KDcsIG1fbWF0cml4Lm0yNCgpKTsKKyAgICBh
cnJheTMyLT5zZXQoOCwgbV9tYXRyaXgubTMxKCkpOworICAgIGFycmF5MzItPnNldCg5LCBtX21h
dHJpeC5tMzIoKSk7CisgICAgYXJyYXkzMi0+c2V0KDEwLCBtX21hdHJpeC5tMzMoKSk7CisgICAg
YXJyYXkzMi0+c2V0KDExLCBtX21hdHJpeC5tMzQoKSk7CisgICAgYXJyYXkzMi0+c2V0KDEyLCBt
X21hdHJpeC5tNDEoKSk7CisgICAgYXJyYXkzMi0+c2V0KDEzLCBtX21hdHJpeC5tNDIoKSk7Cisg
ICAgYXJyYXkzMi0+c2V0KDE0LCBtX21hdHJpeC5tNDMoKSk7CisgICAgYXJyYXkzMi0+c2V0KDE1
LCBtX21hdHJpeC5tNDQoKSk7CisgICAgcmV0dXJuIGFycmF5MzI7Cit9CisKK1JlZlB0cjxGbG9h
dDY0QXJyYXk+IERPTU1hdHJpeFJlYWRPbmx5Ojp0b0Zsb2F0NjRBcnJheSgpIGNvbnN0Cit7Cisg
ICAgYXV0byBhcnJheTY0ID0gRmxvYXQ2NEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKDE2KTsK
KyAgICBpZiAoIWFycmF5NjQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXJyYXk2
NC0+c2V0KHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgbV9tYXRyaXgubTExKCkpOworICAgIGFy
cmF5NjQtPnNldCgxLCBtX21hdHJpeC5tMTIoKSk7CisgICAgYXJyYXk2NC0+c2V0KDIsIG1fbWF0
cml4Lm0xMygpKTsKKyAgICBhcnJheTY0LT5zZXQoMywgbV9tYXRyaXgubTE0KCkpOworICAgIGFy
cmF5NjQtPnNldCg0LCBtX21hdHJpeC5tMjEoKSk7CisgICAgYXJyYXk2NC0+c2V0KDUsIG1fbWF0
cml4Lm0yMigpKTsKKyAgICBhcnJheTY0LT5zZXQoNiwgbV9tYXRyaXgubTIzKCkpOworICAgIGFy
cmF5NjQtPnNldCg3LCBtX21hdHJpeC5tMjQoKSk7CisgICAgYXJyYXk2NC0+c2V0KDgsIG1fbWF0
cml4Lm0zMSgpKTsKKyAgICBhcnJheTY0LT5zZXQoOSwgbV9tYXRyaXgubTMyKCkpOworICAgIGFy
cmF5NjQtPnNldCgxMCwgbV9tYXRyaXgubTMzKCkpOworICAgIGFycmF5NjQtPnNldCgxMSwgbV9t
YXRyaXgubTM0KCkpOworICAgIGFycmF5NjQtPnNldCgxMiwgbV9tYXRyaXgubTQxKCkpOworICAg
IGFycmF5NjQtPnNldCgxMywgbV9tYXRyaXgubTQyKCkpOworICAgIGFycmF5NjQtPnNldCgxNCwg
bV9tYXRyaXgubTQzKCkpOworICAgIGFycmF5NjQtPnNldCgxNSwgbV9tYXRyaXgubTQ0KCkpOwor
ICAgIHJldHVybiBhcnJheTY0OworfQorCiAvLyBodHRwczovL2RyYWZ0cy5meHRmLm9yZy9nZW9t
ZXRyeS8jZG9tLWRvbW1hdHJpeHJlYWRvbmx5LXN0cmluZ2lmaWVyCiBFeGNlcHRpb25PcjxTdHJp
bmc+IERPTU1hdHJpeFJlYWRPbmx5Ojp0b1N0cmluZygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuaCBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9ET01NYXRyaXhSZWFkT25seS5oCmluZGV4IGE5YjRkZGY3NGFkLi41MzkyYmE2OTlhMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmgKQEAgLTI5LDYgKzI5LDggQEAKICNp
bmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2lu
Y2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDMy
QXJyYXkuaD4KKyNpbmNsdWRlIDxydW50aW1lL0Zsb2F0NjRBcnJheS5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CkBAIC02Myw2ICs2NSw5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBFeGNlcHRp
b25PcjxSZWY8RE9NTWF0cml4UmVhZE9ubHk+PiBmcm9tTWF0cml4KERPTU1hdHJpeEluaXQmJik7
CiAKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeFJlYWRPbmx5Pj4gZnJvbUZs
b2F0MzJBcnJheShSZWY8RmxvYXQzMkFycmF5PiYmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8
UmVmPERPTU1hdHJpeFJlYWRPbmx5Pj4gZnJvbUZsb2F0NjRBcnJheShSZWY8RmxvYXQ2NEFycmF5
PiYmKTsKKwogICAgIGRvdWJsZSBhKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXguYSgpOyB9CiAg
ICAgZG91YmxlIGIoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5iKCk7IH0KICAgICBkb3VibGUg
YygpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4LmMoKTsgfQpAQCAtMTA2LDYgKzExMSw5IEBAIHB1
YmxpYzoKICAgICBSZWY8RE9NTWF0cml4PiBza2V3WShkb3VibGUgc3kgPSAwKTsgLy8gQW5nbGUg
aXMgaW4gZGVncmVlcy4KICAgICBSZWY8RE9NTWF0cml4PiBpbnZlcnNlKCkgY29uc3Q7CiAKKyAg
ICBSZWZQdHI8RmxvYXQzMkFycmF5PiB0b0Zsb2F0MzJBcnJheSgpIGNvbnN0OworICAgIFJlZlB0
cjxGbG9hdDY0QXJyYXk+IHRvRmxvYXQ2NEFycmF5KCkgY29uc3Q7CisKICAgICBFeGNlcHRpb25P
cjxTdHJpbmc+IHRvU3RyaW5nKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsCmluZGV4IDdkNmQyMWE2NThiLi5kZWE4NWIxODJiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsCkBAIC0zMSw4ICszMSw4
IEBACiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZQogXSBpbnRlcmZhY2UgRE9NTWF0cml4
UmVhZE9ubHkgewogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9N
TWF0cml4UmVhZE9ubHkgZnJvbU1hdHJpeChvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsK
LSAgICAvLyBbTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4UmVhZE9ubHkgZnJvbUZsb2F0MzJB
cnJheShGbG9hdDMyQXJyYXkgYXJyYXkzMik7IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLSAg
ICAvLyBbTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4UmVhZE9ubHkgZnJvbUZsb2F0NjRBcnJh
eShGbG9hdDY0QXJyYXkgYXJyYXk2NCk7IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICBb
TWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeFJlYWRPbmx5IGZy
b21GbG9hdDMyQXJyYXkoRmxvYXQzMkFycmF5IGFycmF5MzIpOworICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4UmVhZE9ubHkgZnJvbUZsb2F0NjRBcnJh
eShGbG9hdDY0QXJyYXkgYXJyYXk2NCk7CiAKICAgICAvLyBUaGVzZSBhdHRyaWJ1dGVzIGFyZSBz
aW1wbGUgYWxpYXNlcyBmb3IgY2VydGFpbiBlbGVtZW50cyBvZiB0aGUgNHg0IG1hdHJpeAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGE7IC8vIEFsaWFzIGZvciBt
MTEuCkBAIC05Myw4ICs5Myw4IEBACiAgICAgW05ld09iamVjdF0gRE9NTWF0cml4IGludmVyc2Uo
KTsKIAogICAgIC8vIFtOZXdPYmplY3RdIERPTVBvaW50IHRyYW5zZm9ybVBvaW50KG9wdGlvbmFs
IERPTVBvaW50SW5pdCBwb2ludCk7IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLSAgICAvLyBb
TmV3T2JqZWN0XSBGbG9hdDMyQXJyYXkgdG9GbG9hdDMyQXJyYXkoKTsgLy8gRklYTUU6IEltcGxl
bWVudCB0aGlzLgotICAgIC8vIFtOZXdPYmplY3RdIEZsb2F0NjRBcnJheSB0b0Zsb2F0NjRBcnJh
eSgpOyAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgW05ld09iamVjdF0gRmxvYXQzMkFy
cmF5PyB0b0Zsb2F0MzJBcnJheSgpOworICAgIFtOZXdPYmplY3RdIEZsb2F0NjRBcnJheT8gdG9G
bG9hdDY0QXJyYXkoKTsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3RyaW5nIHRvU3Ry
aW5nKCk7IC8vIEZJWE1FOiBTaG91bGQgYmUgc3RyaW5naWZpZXI7IG9uY2UgaXQgaXMgc3VwcG9y
dGVkLgogICAgIHNlcmlhbGl6ZXIgPSB7IGF0dHJpYnV0ZSB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311943</attachid>
            <date>2017-06-03 14:24:38 -0700</date>
            <delta_ts>2017-06-03 16:16:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172898-20170603142438.patch</filename>
            <type>text/plain</type>
            <size>22503</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzZmM2IzMWI3ZjMwYzE1
YzZlZDcwMzJlMjdiMmNiM2YzZjA3MzUwYS4uNDNkYTI5ZmYyNTU4OTFiYjY2N2U3NzNhNmQwMmVk
OWQzZGE2Y2E3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA2LTAzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IERPTU1hdHJp
eCdzIGZyb21GbG9hdDMyQXJyYXkgLyBmcm9tRmxvYXQ2NEFycmF5ICYgdG9GbG9hdDMyQXJyYXkg
LyB0b0Zsb2F0NjRBcnJheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IERPTU1hdHJpeCdzIGZyb21GbG9hdDMyQXJyYXkgLyBmcm9tRmxv
YXQ2NEFycmF5ICYgdG9GbG9hdDMyQXJyYXkgLyB0b0Zsb2F0NjRBcnJheQorICAgICAgICBhcyBw
ZXI6CisgICAgICAgIC0gaHR0cHM6Ly9kcmFmdHMuZnh0Zi5vcmcvZ2VvbWV0cnkvI2RvbW1hdHJp
eHJlYWRvbmx5CisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvZ2VvbWV0cnkvRE9NTWF0cml4LWZy
b20tdG8tdHlwZWQtYXJyYXlzLmh0bWwKKworICAgICAgICAqIGNzcy9ET01NYXRyaXguY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NTWF0cml4Ojpmcm9tRmxvYXQzMkFycmF5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTU1hdHJpeDo6ZnJvbUZsb2F0NjRBcnJheSk6CisgICAgICAgICogY3NzL0RP
TU1hdHJpeC5oOgorICAgICAgICAqIGNzcy9ET01NYXRyaXguaWRsOgorICAgICAgICAqIGNzcy9E
T01NYXRyaXhSZWFkT25seS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01NYXRyaXhSZWFkT25s
eTo6ZnJvbUZsb2F0MzJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpET01NYXRyaXhSZWFkT25s
eTo6ZnJvbUZsb2F0NjRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpET01NYXRyaXhSZWFkT25s
eTo6dG9GbG9hdDMyQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NTWF0cml4UmVhZE9ubHk6
OnRvRmxvYXQ2NEFycmF5KToKKyAgICAgICAgKiBjc3MvRE9NTWF0cml4UmVhZE9ubHkuaDoKKyAg
ICAgICAgKiBjc3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsOgorCiAyMDE3LTA2LTAyICBGcmVkZXJp
YyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBbTWFjXSBJbmNsdWRlIGZyYW1l
cyBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUgd2hlbiBTY3JvbGxpbmdUcmVlSW5jbHVkZXNGcmFtZXM9
dHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNwcAppbmRleCBhNzk0OGY3MjliNzNiMmZiMTkyM2Yz
YzlmOWM5NThhNzYyZmM3MDUyLi4wNjFhOGNiODEwZWQ5MDQzYTMxYWJhODQ2Yzg5ODU0M2Y0NzBk
OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNwcApAQCAtNDMsNiArNDMsNDAgQEAgRXhjZXB0
aW9uT3I8UmVmPERPTU1hdHJpeD4+IERPTU1hdHJpeDo6ZnJvbU1hdHJpeChET01NYXRyaXhJbml0
JiYgaW5pdCkKICAgICByZXR1cm4gZnJvbU1hdHJpeEhlbHBlcjxET01NYXRyaXg+KFdURk1vdmUo
aW5pdCkpOwogfQogCitFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4Pj4gRE9NTWF0cml4Ojpmcm9t
RmxvYXQzMkFycmF5KFJlZjxGbG9hdDMyQXJyYXk+JiYgYXJyYXkzMikKK3sKKyAgICBpZiAoYXJy
YXkzMi0+bGVuZ3RoKCkgPT0gNikKKyAgICAgICAgcmV0dXJuIERPTU1hdHJpeDo6Y3JlYXRlKFRy
YW5zZm9ybWF0aW9uTWF0cml4KGFycmF5MzItPml0ZW0oMCksIGFycmF5MzItPml0ZW0oMSksIGFy
cmF5MzItPml0ZW0oMiksIGFycmF5MzItPml0ZW0oMyksIGFycmF5MzItPml0ZW0oNCksIGFycmF5
MzItPml0ZW0oNSkpLCBJczJEOjpZZXMpOworCisgICAgaWYgKGFycmF5MzItPmxlbmd0aCgpID09
IDE2KSB7CisgICAgICAgIHJldHVybiBET01NYXRyaXg6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgKKyAgICAgICAgICAgIGFycmF5MzItPml0ZW0oMCksIGFycmF5MzItPml0ZW0oMSksIGFy
cmF5MzItPml0ZW0oMiksIGFycmF5MzItPml0ZW0oMyksCisgICAgICAgICAgICBhcnJheTMyLT5p
dGVtKDQpLCBhcnJheTMyLT5pdGVtKDUpLCBhcnJheTMyLT5pdGVtKDYpLCBhcnJheTMyLT5pdGVt
KDcpLAorICAgICAgICAgICAgYXJyYXkzMi0+aXRlbSg4KSwgYXJyYXkzMi0+aXRlbSg5KSwgYXJy
YXkzMi0+aXRlbSgxMCksIGFycmF5MzItPml0ZW0oMTEpLAorICAgICAgICAgICAgYXJyYXkzMi0+
aXRlbSgxMiksIGFycmF5MzItPml0ZW0oMTMpLCBhcnJheTMyLT5pdGVtKDE0KSwgYXJyYXkzMi0+
aXRlbSgxNSkKKyAgICAgICAgKSwgSXMyRDo6Tm8pOworICAgIH0KKworICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IERP
TU1hdHJpeDo6ZnJvbUZsb2F0NjRBcnJheShSZWY8RmxvYXQ2NEFycmF5PiYmIGFycmF5NjQpCit7
CisgICAgaWYgKGFycmF5NjQtPmxlbmd0aCgpID09IDYpCisgICAgICAgIHJldHVybiBET01NYXRy
aXg6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeChhcnJheTY0LT5pdGVtKDApLCBhcnJheTY0
LT5pdGVtKDEpLCBhcnJheTY0LT5pdGVtKDIpLCBhcnJheTY0LT5pdGVtKDMpLCBhcnJheTY0LT5p
dGVtKDQpLCBhcnJheTY0LT5pdGVtKDUpKSwgSXMyRDo6WWVzKTsKKworICAgIGlmIChhcnJheTY0
LT5sZW5ndGgoKSA9PSAxNikgeworICAgICAgICByZXR1cm4gRE9NTWF0cml4OjpjcmVhdGUoVHJh
bnNmb3JtYXRpb25NYXRyaXgoCisgICAgICAgICAgICBhcnJheTY0LT5pdGVtKDApLCBhcnJheTY0
LT5pdGVtKDEpLCBhcnJheTY0LT5pdGVtKDIpLCBhcnJheTY0LT5pdGVtKDMpLAorICAgICAgICAg
ICAgYXJyYXk2NC0+aXRlbSg0KSwgYXJyYXk2NC0+aXRlbSg1KSwgYXJyYXk2NC0+aXRlbSg2KSwg
YXJyYXk2NC0+aXRlbSg3KSwKKyAgICAgICAgICAgIGFycmF5NjQtPml0ZW0oOCksIGFycmF5NjQt
Pml0ZW0oOSksIGFycmF5NjQtPml0ZW0oMTApLCBhcnJheTY0LT5pdGVtKDExKSwKKyAgICAgICAg
ICAgIGFycmF5NjQtPml0ZW0oMTIpLCBhcnJheTY0LT5pdGVtKDEzKSwgYXJyYXk2NC0+aXRlbSgx
NCksIGFycmF5NjQtPml0ZW0oMTUpCisgICAgICAgICksIElzMkQ6Ok5vKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07Cit9CisKIC8vIGh0dHBzOi8vZHJhZnRz
LmZ4dGYub3JnL2dlb21ldHJ5LyNkb20tZG9tbWF0cml4LW11bHRpcGx5c2VsZgogRXhjZXB0aW9u
T3I8UmVmPERPTU1hdHJpeD4+IERPTU1hdHJpeDo6bXVsdGlwbHlTZWxmKERPTU1hdHJpeEluaXQm
JiBvdGhlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaAppbmRleCA0ZGJmZGQ5NTZjMzA4MTgyMjBm
ZjU3MGY1OTFmOGJmZmEzYjQxYjIzLi4yZjM4OTcwMzJlNGZkNWFkOTg0NjIxZjA2MDAyOTNjZjM3
N2ViY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5oCkBAIC01Miw2ICs1Miw5IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4Pj4gZnJvbU1hdHJpeChET01N
YXRyaXhJbml0JiYpOwogCisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBm
cm9tRmxvYXQzMkFycmF5KFJlZjxGbG9hdDMyQXJyYXk+JiYpOworICAgIHN0YXRpYyBFeGNlcHRp
b25PcjxSZWY8RE9NTWF0cml4Pj4gZnJvbUZsb2F0NjRBcnJheShSZWY8RmxvYXQ2NEFycmF5PiYm
KTsKKwogICAgIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBtdWx0aXBseVNlbGYoRE9NTWF0
cml4SW5pdCYmIG90aGVyKTsKICAgICBFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4Pj4gcHJlTXVs
dGlwbHlTZWxmKERPTU1hdHJpeEluaXQmJiBvdGhlcik7CiAgICAgUmVmPERPTU1hdHJpeD4gdHJh
bnNsYXRlU2VsZihkb3VibGUgdHggPSAwLCBkb3VibGUgdHkgPSAwLCBkb3VibGUgdHogPSAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaWRsIGIvU291cmNlL1dl
YkNvcmUvY3NzL0RPTU1hdHJpeC5pZGwKaW5kZXggNmNmZTU0MTkzMjQ2M2I0NWU4ZTk2NzY5NTc3
YTA1OTQ1N2I1MDQxZS4uYjljZmRjY2ZhOGJiY2RjODdkMGQwNzBkYzUwNjQyMzc2NDUyNGMxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5pZGwKQEAgLTMyLDggKzMyLDggQEAKICAgICBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlCiAgXSBpbnRlcmZhY2UgRE9NTWF0cml4IDogRE9NTWF0cml4UmVh
ZE9ubHkgewogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0
cml4IGZyb21NYXRyaXgob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7Ci0gICAgLy8gW05l
d09iamVjdF0gc3RhdGljIERPTU1hdHJpeCBmcm9tRmxvYXQzMkFycmF5KEZsb2F0MzJBcnJheSBh
cnJheTMyKTsgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIC8vIFtOZXdPYmplY3RdIHN0
YXRpYyBET01NYXRyaXggZnJvbUZsb2F0NjRBcnJheShGbG9hdDY0QXJyYXkgYXJyYXk2NCk7ICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmpl
Y3RdIHN0YXRpYyBET01NYXRyaXggZnJvbUZsb2F0MzJBcnJheShGbG9hdDMyQXJyYXkgYXJyYXkz
Mik7CisgICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXgg
ZnJvbUZsb2F0NjRBcnJheShGbG9hdDY0QXJyYXkgYXJyYXk2NCk7CiAKICAgICAvLyBUaGVzZSBh
dHRyaWJ1dGVzIGFyZSBzaW1wbGUgYWxpYXNlcyBmb3IgY2VydGFpbiBlbGVtZW50cyBvZiB0aGUg
NHg0IG1hdHJpeAogICAgIGluaGVyaXQgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgYTsg
Ly8gQWxpYXMgZm9yIG0xMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRy
aXhSZWFkT25seS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3Bw
CmluZGV4IGM4YjM4NDg2MDQ2NDUwOTcxNDJlMWVlNjM0NDRkOTFjY2UzYjg2NDYuLjZhZmI2ODNk
ZjAwNTJmYzIxYTc2MGI0OGZmZDZkMTRkNzZhZGY3NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RP
TU1hdHJpeFJlYWRPbmx5LmNwcApAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJUcmFuc2Zv
cm1GdW5jdGlvbnMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8aGVhcC9IZWFwSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTE0LDYgKzExNyw0MCBAQCBFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4UmVhZE9ubHk+PiBET01N
YXRyaXhSZWFkT25seTo6ZnJvbU1hdHJpeChET01NYXRyaXhJbml0JgogICAgIHJldHVybiBmcm9t
TWF0cml4SGVscGVyPERPTU1hdHJpeFJlYWRPbmx5PihXVEZNb3ZlKGluaXQpKTsKIH0KIAorRXhj
ZXB0aW9uT3I8UmVmPERPTU1hdHJpeFJlYWRPbmx5Pj4gRE9NTWF0cml4UmVhZE9ubHk6OmZyb21G
bG9hdDMyQXJyYXkoUmVmPEZsb2F0MzJBcnJheT4mJiBhcnJheTMyKQoreworICAgIGlmIChhcnJh
eTMyLT5sZW5ndGgoKSA9PSA2KQorICAgICAgICByZXR1cm4gRE9NTWF0cml4UmVhZE9ubHk6OmNy
ZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeChhcnJheTMyLT5pdGVtKDApLCBhcnJheTMyLT5pdGVt
KDEpLCBhcnJheTMyLT5pdGVtKDIpLCBhcnJheTMyLT5pdGVtKDMpLCBhcnJheTMyLT5pdGVtKDQp
LCBhcnJheTMyLT5pdGVtKDUpKSwgSXMyRDo6WWVzKTsKKworICAgIGlmIChhcnJheTMyLT5sZW5n
dGgoKSA9PSAxNikgeworICAgICAgICByZXR1cm4gRE9NTWF0cml4UmVhZE9ubHk6OmNyZWF0ZShU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICAgICAgICAgIGFycmF5MzItPml0ZW0oMCksIGFycmF5
MzItPml0ZW0oMSksIGFycmF5MzItPml0ZW0oMiksIGFycmF5MzItPml0ZW0oMyksCisgICAgICAg
ICAgICBhcnJheTMyLT5pdGVtKDQpLCBhcnJheTMyLT5pdGVtKDUpLCBhcnJheTMyLT5pdGVtKDYp
LCBhcnJheTMyLT5pdGVtKDcpLAorICAgICAgICAgICAgYXJyYXkzMi0+aXRlbSg4KSwgYXJyYXkz
Mi0+aXRlbSg5KSwgYXJyYXkzMi0+aXRlbSgxMCksIGFycmF5MzItPml0ZW0oMTEpLAorICAgICAg
ICAgICAgYXJyYXkzMi0+aXRlbSgxMiksIGFycmF5MzItPml0ZW0oMTMpLCBhcnJheTMyLT5pdGVt
KDE0KSwgYXJyYXkzMi0+aXRlbSgxNSkKKyAgICAgICAgKSwgSXMyRDo6Tm8pOworICAgIH0KKwor
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8UmVm
PERPTU1hdHJpeFJlYWRPbmx5Pj4gRE9NTWF0cml4UmVhZE9ubHk6OmZyb21GbG9hdDY0QXJyYXko
UmVmPEZsb2F0NjRBcnJheT4mJiBhcnJheTY0KQoreworICAgIGlmIChhcnJheTY0LT5sZW5ndGgo
KSA9PSA2KQorICAgICAgICByZXR1cm4gRE9NTWF0cml4UmVhZE9ubHk6OmNyZWF0ZShUcmFuc2Zv
cm1hdGlvbk1hdHJpeChhcnJheTY0LT5pdGVtKDApLCBhcnJheTY0LT5pdGVtKDEpLCBhcnJheTY0
LT5pdGVtKDIpLCBhcnJheTY0LT5pdGVtKDMpLCBhcnJheTY0LT5pdGVtKDQpLCBhcnJheTY0LT5p
dGVtKDUpKSwgSXMyRDo6WWVzKTsKKworICAgIGlmIChhcnJheTY0LT5sZW5ndGgoKSA9PSAxNikg
eworICAgICAgICByZXR1cm4gRE9NTWF0cml4UmVhZE9ubHk6OmNyZWF0ZShUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgKKyAgICAgICAgICAgIGFycmF5NjQtPml0ZW0oMCksIGFycmF5NjQtPml0ZW0oMSks
IGFycmF5NjQtPml0ZW0oMiksIGFycmF5NjQtPml0ZW0oMyksCisgICAgICAgICAgICBhcnJheTY0
LT5pdGVtKDQpLCBhcnJheTY0LT5pdGVtKDUpLCBhcnJheTY0LT5pdGVtKDYpLCBhcnJheTY0LT5p
dGVtKDcpLAorICAgICAgICAgICAgYXJyYXk2NC0+aXRlbSg4KSwgYXJyYXk2NC0+aXRlbSg5KSwg
YXJyYXk2NC0+aXRlbSgxMCksIGFycmF5NjQtPml0ZW0oMTEpLAorICAgICAgICAgICAgYXJyYXk2
NC0+aXRlbSgxMiksIGFycmF5NjQtPml0ZW0oMTMpLCBhcnJheTY0LT5pdGVtKDE0KSwgYXJyYXk2
NC0+aXRlbSgxNSkKKyAgICAgICAgKSwgSXMyRDo6Tm8pOworICAgIH0KKworICAgIHJldHVybiBF
eGNlcHRpb24geyBUeXBlRXJyb3IgfTsKK30KKwogYm9vbCBET01NYXRyaXhSZWFkT25seTo6aXNJ
ZGVudGl0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbWF0cml4LmlzSWRlbnRpdHkoKTsKQEAg
LTI0OCw2ICsyODUsNTYgQEAgUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4UmVhZE9ubHk6OmludmVy
c2UoKSBjb25zdAogICAgIHJldHVybiBtYXRyaXgtPmludmVydFNlbGYoKTsKIH0KIAorUmVmUHRy
PEZsb2F0MzJBcnJheT4gRE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQzMkFycmF5KCkgY29uc3QK
K3sKKyAgICBhdXRvIGFycmF5MzIgPSBGbG9hdDMyQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
MTYpOworICAgIGlmICghYXJyYXkzMikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBh
cnJheTMyLT5zZXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KDApLCBtX21hdHJpeC5tMTEoKSk7Cisg
ICAgYXJyYXkzMi0+c2V0KDEsIG1fbWF0cml4Lm0xMigpKTsKKyAgICBhcnJheTMyLT5zZXQoMiwg
bV9tYXRyaXgubTEzKCkpOworICAgIGFycmF5MzItPnNldCgzLCBtX21hdHJpeC5tMTQoKSk7Cisg
ICAgYXJyYXkzMi0+c2V0KDQsIG1fbWF0cml4Lm0yMSgpKTsKKyAgICBhcnJheTMyLT5zZXQoNSwg
bV9tYXRyaXgubTIyKCkpOworICAgIGFycmF5MzItPnNldCg2LCBtX21hdHJpeC5tMjMoKSk7Cisg
ICAgYXJyYXkzMi0+c2V0KDcsIG1fbWF0cml4Lm0yNCgpKTsKKyAgICBhcnJheTMyLT5zZXQoOCwg
bV9tYXRyaXgubTMxKCkpOworICAgIGFycmF5MzItPnNldCg5LCBtX21hdHJpeC5tMzIoKSk7Cisg
ICAgYXJyYXkzMi0+c2V0KDEwLCBtX21hdHJpeC5tMzMoKSk7CisgICAgYXJyYXkzMi0+c2V0KDEx
LCBtX21hdHJpeC5tMzQoKSk7CisgICAgYXJyYXkzMi0+c2V0KDEyLCBtX21hdHJpeC5tNDEoKSk7
CisgICAgYXJyYXkzMi0+c2V0KDEzLCBtX21hdHJpeC5tNDIoKSk7CisgICAgYXJyYXkzMi0+c2V0
KDE0LCBtX21hdHJpeC5tNDMoKSk7CisgICAgYXJyYXkzMi0+c2V0KDE1LCBtX21hdHJpeC5tNDQo
KSk7CisgICAgcmV0dXJuIGFycmF5MzI7Cit9CisKK1JlZlB0cjxGbG9hdDY0QXJyYXk+IERPTU1h
dHJpeFJlYWRPbmx5Ojp0b0Zsb2F0NjRBcnJheSgpIGNvbnN0Cit7CisgICAgYXV0byBhcnJheTY0
ID0gRmxvYXQ2NEFycmF5OjpjcmVhdGVVbmluaXRpYWxpemVkKDE2KTsKKyAgICBpZiAoIWFycmF5
NjQpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXJyYXk2NC0+c2V0KHN0YXRpY19j
YXN0PHVuc2lnbmVkPigwKSwgbV9tYXRyaXgubTExKCkpOworICAgIGFycmF5NjQtPnNldCgxLCBt
X21hdHJpeC5tMTIoKSk7CisgICAgYXJyYXk2NC0+c2V0KDIsIG1fbWF0cml4Lm0xMygpKTsKKyAg
ICBhcnJheTY0LT5zZXQoMywgbV9tYXRyaXgubTE0KCkpOworICAgIGFycmF5NjQtPnNldCg0LCBt
X21hdHJpeC5tMjEoKSk7CisgICAgYXJyYXk2NC0+c2V0KDUsIG1fbWF0cml4Lm0yMigpKTsKKyAg
ICBhcnJheTY0LT5zZXQoNiwgbV9tYXRyaXgubTIzKCkpOworICAgIGFycmF5NjQtPnNldCg3LCBt
X21hdHJpeC5tMjQoKSk7CisgICAgYXJyYXk2NC0+c2V0KDgsIG1fbWF0cml4Lm0zMSgpKTsKKyAg
ICBhcnJheTY0LT5zZXQoOSwgbV9tYXRyaXgubTMyKCkpOworICAgIGFycmF5NjQtPnNldCgxMCwg
bV9tYXRyaXgubTMzKCkpOworICAgIGFycmF5NjQtPnNldCgxMSwgbV9tYXRyaXgubTM0KCkpOwor
ICAgIGFycmF5NjQtPnNldCgxMiwgbV9tYXRyaXgubTQxKCkpOworICAgIGFycmF5NjQtPnNldCgx
MywgbV9tYXRyaXgubTQyKCkpOworICAgIGFycmF5NjQtPnNldCgxNCwgbV9tYXRyaXgubTQzKCkp
OworICAgIGFycmF5NjQtPnNldCgxNSwgbV9tYXRyaXgubTQ0KCkpOworICAgIHJldHVybiBhcnJh
eTY0OworfQorCiAvLyBodHRwczovL2RyYWZ0cy5meHRmLm9yZy9nZW9tZXRyeS8jZG9tLWRvbW1h
dHJpeHJlYWRvbmx5LXN0cmluZ2lmaWVyCiBFeGNlcHRpb25PcjxTdHJpbmc+IERPTU1hdHJpeFJl
YWRPbmx5Ojp0b1N0cmluZygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRE9NTWF0cml4UmVhZE9ubHkuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFk
T25seS5oCmluZGV4IGE5YjRkZGY3NGFkZTg3YjVjMTk3Mjk5ZGJjYzI2MWQxODY5YWUxMjEuLjUz
OTJiYTY5OWExNDlhNzcyNGNhNDNlYTk1MGM1MDkzOTE2ZjVhMDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9ET01NYXRyaXhSZWFkT25seS5oCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiRXhjZXB0
aW9uT3IuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CisjaW5j
bHVkZSA8cnVudGltZS9GbG9hdDY0QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAt
NjMsNiArNjUsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPERPTU1h
dHJpeFJlYWRPbmx5Pj4gZnJvbU1hdHJpeChET01NYXRyaXhJbml0JiYpOwogCisgICAgc3RhdGlj
IEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXhSZWFkT25seT4+IGZyb21GbG9hdDMyQXJyYXkoUmVm
PEZsb2F0MzJBcnJheT4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXhS
ZWFkT25seT4+IGZyb21GbG9hdDY0QXJyYXkoUmVmPEZsb2F0NjRBcnJheT4mJik7CisKICAgICBk
b3VibGUgYSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4LmEoKTsgfQogICAgIGRvdWJsZSBiKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXRyaXguYigpOyB9CiAgICAgZG91YmxlIGMoKSBjb25zdCB7IHJl
dHVybiBtX21hdHJpeC5jKCk7IH0KQEAgLTEwNiw2ICsxMTEsOSBAQCBwdWJsaWM6CiAgICAgUmVm
PERPTU1hdHJpeD4gc2tld1koZG91YmxlIHN5ID0gMCk7IC8vIEFuZ2xlIGlzIGluIGRlZ3JlZXMu
CiAgICAgUmVmPERPTU1hdHJpeD4gaW52ZXJzZSgpIGNvbnN0OwogCisgICAgUmVmUHRyPEZsb2F0
MzJBcnJheT4gdG9GbG9hdDMyQXJyYXkoKSBjb25zdDsKKyAgICBSZWZQdHI8RmxvYXQ2NEFycmF5
PiB0b0Zsb2F0NjRBcnJheSgpIGNvbnN0OworCiAgICAgRXhjZXB0aW9uT3I8U3RyaW5nPiB0b1N0
cmluZygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJl
YWRPbmx5LmlkbAppbmRleCA3ZDZkMjFhNjU4YjgzZTc3NWIyZTE4MDkwZmI5OThmZGY2OTc1ODQ0
Li5kZWE4NWIxODJiODA0MjZiMmZjOWE2NGFiZTU5NTcyMTUzYzQ0YjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5pZGwKQEAgLTMxLDggKzMxLDggQEAKICAgICBJbXBs
ZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBET01NYXRyaXhSZWFkT25seSB7CiAg
ICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25s
eSBmcm9tTWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOwotICAgIC8vIFtOZXdP
YmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tRmxvYXQzMkFycmF5KEZsb2F0MzJB
cnJheSBhcnJheTMyKTsgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIC8vIFtOZXdPYmpl
Y3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tRmxvYXQ2NEFycmF5KEZsb2F0NjRBcnJh
eSBhcnJheTY0KTsgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIFtNYXlUaHJvd0V4Y2Vw
dGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4UmVhZE9ubHkgZnJvbUZsb2F0MzJBcnJh
eShGbG9hdDMyQXJyYXkgYXJyYXkzMik7CisgICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmpl
Y3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tRmxvYXQ2NEFycmF5KEZsb2F0NjRBcnJh
eSBhcnJheTY0KTsKIAogICAgIC8vIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIHNpbXBsZSBhbGlhc2Vz
IGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSA0eDQgbWF0cml4CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgYTsgLy8gQWxpYXMgZm9yIG0xMS4KQEAgLTkzLDgg
KzkzLDggQEAKICAgICBbTmV3T2JqZWN0XSBET01NYXRyaXggaW52ZXJzZSgpOwogCiAgICAgLy8g
W05ld09iamVjdF0gRE9NUG9pbnQgdHJhbnNmb3JtUG9pbnQob3B0aW9uYWwgRE9NUG9pbnRJbml0
IHBvaW50KTsgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIC8vIFtOZXdPYmplY3RdIEZs
b2F0MzJBcnJheSB0b0Zsb2F0MzJBcnJheSgpOyAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0g
ICAgLy8gW05ld09iamVjdF0gRmxvYXQ2NEFycmF5IHRvRmxvYXQ2NEFycmF5KCk7IC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcy4KKyAgICBbTmV3T2JqZWN0XSBGbG9hdDMyQXJyYXk/IHRvRmxvYXQz
MkFycmF5KCk7CisgICAgW05ld09iamVjdF0gRmxvYXQ2NEFycmF5PyB0b0Zsb2F0NjRBcnJheSgp
OwogCiAgICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgdG9TdHJpbmcoKTsgLy8gRklY
TUU6IFNob3VsZCBiZSBzdHJpbmdpZmllcjsgb25jZSBpdCBpcyBzdXBwb3J0ZWQuCiAgICAgc2Vy
aWFsaXplciA9IHsgYXR0cmlidXRlIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGY0YzIwNGJiYjY5ZGZmM2MyNjE5Mzg3
YjZmZjBlZTg4NjM5YzgwYy4uYjlhNzQ4NWQzZWFlYTEwMTRiN2UzYzQ2ODU1MmU0ZTg0YjRiY2M4
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA2LTAzICBDaHJpcyBEdW1leiAgPGNkdW1l
ekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IERPTU1hdHJpeCdzIGZyb21GbG9hdDMy
QXJyYXkgLyBmcm9tRmxvYXQ2NEFycmF5ICYgdG9GbG9hdDMyQXJyYXkgLyB0b0Zsb2F0NjRBcnJh
eQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyODk4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGxh
eW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogaHR0cC93cHQvZ2VvbWV0cnkvRE9NTWF0
cml4LWZyb20tdG8tdHlwZWQtYXJyYXlzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC93cHQvZ2VvbWV0cnkvRE9NTWF0cml4LWZyb20tdG8tdHlwZWQtYXJyYXlzLmh0bWw6IEFk
ZGVkLgorCiAyMDE3LTA2LTAyICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+CiAKICAg
ICAgICAgTW92ZWQgdGVzdCBleHBlY3RhdGlvbiBmb3IgaHR0cC90ZXN0cy9wcmVsb2FkL3ZpZXdw
b3J0L21ldGEtdmlld3BvcnQtbGluay1oZWFkZXJzLnBocCB0byBjb3JyZWN0IGZpbGUuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA4ZDMzNTgxZTNiN2M2NzY1OTI2YzAxY2Y0ZDBm
NmE3N2QzNWVlYmY1Li42YjNhN2RlZTJjMTA0NmFlNjU4MThhOWExM2ViNjVmMjkwNzNlMjkyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wNi0w
MyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBE
T01NYXRyaXgncyBmcm9tRmxvYXQzMkFycmF5IC8gZnJvbUZsb2F0NjRBcnJheSAmIHRvRmxvYXQz
MkFycmF5IC8gdG9GbG9hdDY0QXJyYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3Mjg5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlYmFzZWxpbmUgd2ViLXBsYXRmb3JtLXRlc3Qgbm93IHRoYXQgbW9y
ZSBjaGVja3MgYXJlIHBhc3NpbmcuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2dlb21ldHJ5LTEvRE9NTWF0cml4LW5ld29iamVjdC1leHBlY3RlZC50eHQ6CisKIDIwMTctMDYt
MDIgIEphdmllciBGZXJuYW5kZXogIDxqZmVybmFuZGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAg
W2Nzcy1ncmlkXSBNYXJnaW4gd3JvbmcgYXBwbGllZCB3aGVuIHN0cmV0Y2hpbmcgYW4gb3J0aG9n
b25hbCBpdGVtIGluIGZpeGVkIHNpemUgdHJhY2sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L2dlb21ldHJ5L0RPTU1hdHJpeC1mcm9tLXRvLXR5cGVkLWFycmF5cy1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9nZW9tZXRyeS9ET01NYXRyaXgtZnJvbS10by10eXBl
ZC1hcnJheXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMGQwNzY4OGVlNTc0NTNlYzg4YzQx
NDA3NjBjMzdhYTdmMmY2ODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9nZW9tZXRyeS9ET01NYXRyaXgtZnJvbS10by10eXBlZC1hcnJheXMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTIgQEAKKworUEFTUyBET01NYXRyaXhSZWFkT25seS5mcm9tRmxvYXQzMkFycmF5
IChlcnJvciBjYXNlcykgCitQQVNTIERPTU1hdHJpeFJlYWRPbmx5LmZyb21GbG9hdDMyQXJyYXkg
CitQQVNTIERPTU1hdHJpeFJlYWRPbmx5LmZyb21GbG9hdDY0QXJyYXkgKGVycm9yIGNhc2VzKSAK
K1BBU1MgRE9NTWF0cml4UmVhZE9ubHkuZnJvbUZsb2F0NjRBcnJheSAKK1BBU1MgRE9NTWF0cml4
LmZyb21GbG9hdDMyQXJyYXkgKGVycm9yIGNhc2VzKSAKK1BBU1MgRE9NTWF0cml4LmZyb21GbG9h
dDMyQXJyYXkgCitQQVNTIERPTU1hdHJpeC5mcm9tRmxvYXQ2NEFycmF5IChlcnJvciBjYXNlcykg
CitQQVNTIERPTU1hdHJpeC5mcm9tRmxvYXQ2NEFycmF5IAorUEFTUyBET01NYXRyaXhSZWFkb25s
eS50b0Zsb2F0MzJBcnJheSAKK1BBU1MgRE9NTWF0cml4UmVhZG9ubHkudG9GbG9hdDY0QXJyYXkg
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2dlb21ldHJ5L0RPTU1hdHJpeC1m
cm9tLXRvLXR5cGVkLWFycmF5cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZ2VvbWV0cnkv
RE9NTWF0cml4LWZyb20tdG8tdHlwZWQtYXJyYXlzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU5N2Q2Zjk0
NjhkN2RlNDk1YmU1MDM4ZTJkZmFiMzU4Yzk4OGYyNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L2dlb21ldHJ5L0RPTU1hdHJpeC1mcm9tLXRvLXR5cGVkLWFycmF5cy5o
dG1sCkBAIC0wLDAgKzEsODUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5HZW9tZXRyeSBJbnRlcmZhY2VzOiBET01NYXRyaXggY29udmVyc2lvbiB0byBhbmQgZnJv
bSB0eXBlZCBhcnJheXM8L3RpdGxlPgorPGxpbmsgaHJlZj0ibWFpbHRvOmNkdW1lekBhcHBsZS5j
b20iIHJlbD0iYXV0aG9yIiB0aXRsZT0iQ2hyaXMgRHVtZXoiPgorPGxpbmsgaHJlZj0iaHR0cHM6
Ly9kcmFmdHMuZnh0Zi5vcmcvZ2VvbWV0cnkvI2RvbW1hdHJpeHJlYWRvbmx5IiByZWw9ImhlbHAi
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZm9yIChsZXQgbWF0cml4IG9mIFsiRE9NTWF0cml4UmVh
ZE9ubHkiLCAiRE9NTWF0cml4Il0pIHsKKworICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geyB3aW5kb3dbbWF0cml4XS5mcm9t
RmxvYXQzMkFycmF5KCkgfSwgIk5vIHBhcmFtZXRlciIpOworICAgICAgICBhc3NlcnRfdGhyb3dz
KG5ldyBUeXBlRXJyb3IsICgpID0+IHsgd2luZG93W21hdHJpeF0uZnJvbUZsb2F0MzJBcnJheShu
dWxsKSB9LCAiUGFzc2luZyBudWxsIik7CisgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVF
cnJvciwgKCkgPT4geyB3aW5kb3dbbWF0cml4XS5mcm9tRmxvYXQzMkFycmF5KG5ldyBGbG9hdDY0
QXJyYXkoKSkgfSwgIkJhZCBwYXJhbWV0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcg
VHlwZUVycm9yLCAoKSA9PiB7IHdpbmRvd1ttYXRyaXhdLmZyb21GbG9hdDMyQXJyYXkobmV3IEZs
b2F0MzJBcnJheSgpKSB9LCAiRW1wdHkgRmxvYXQzMkFycmF5Iik7CisgICAgICAgIGFzc2VydF90
aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geyB3aW5kb3dbbWF0cml4XS5mcm9tRmxvYXQzMkFy
cmF5KG5ldyBGbG9hdDMyQXJyYXkoWzEsIDJdKSkgfSwgIkZsb2F0MzJBcnJheSB3aXRoIHRvbyBm
ZXcgaXRlbXMiKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7
IHdpbmRvd1ttYXRyaXhdLmZyb21GbG9hdDMyQXJyYXkobmV3IEZsb2F0MzJBcnJheShbMSwgMiwg
MywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3XSkpIH0s
ICJGbG9hdDMyQXJyYXkgd2l0aCB0b28gbWFueSBpdGVtcyIpOworICAgIH0sIG1hdHJpeCArICIu
ZnJvbUZsb2F0MzJBcnJheSAoZXJyb3IgY2FzZXMpIik7CisKKyAgICB0ZXN0KGZ1bmN0aW9uKCkg
eworICAgICAgICBsZXQgbWF0cml4MmQgPSB3aW5kb3dbbWF0cml4XS5mcm9tRmxvYXQzMkFycmF5
KG5ldyBGbG9hdDMyQXJyYXkoWzEuNSwgMi41LCAzLjUsIDQuNSwgNS41LCA2LjVdKSk7CisgICAg
ICAgIGFzc2VydF9lcXVhbHMobWF0cml4MmQuX19wcm90b19fLCB3aW5kb3dbbWF0cml4XS5wcm90
b3R5cGUpOworICAgICAgICBhc3NlcnRfZXF1YWxzKG1hdHJpeDJkLnRvU3RyaW5nKCksICJtYXRy
aXgoMS41LCAyLjUsIDMuNSwgNC41LCA1LjUsIDYuNSkiKTsKKworICAgICAgICBsZXQgbWF0cml4
M2QgPSB3aW5kb3dbbWF0cml4XS5mcm9tRmxvYXQzMkFycmF5KG5ldyBGbG9hdDMyQXJyYXkoWzEu
NSwgMi41LCAzLjUsIDQuNSwgNS41LCA2LjUsIDcuNSwgOC41LCA5LjUsIDEwLjUsIDExLjUsIDEy
LjUsIDEzLjUsIDE0LjUsIDE1LjUsIDE2LjVdKSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMobWF0
cml4M2QuX19wcm90b19fLCB3aW5kb3dbbWF0cml4XS5wcm90b3R5cGUpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKG1hdHJpeDNkLnRvU3RyaW5nKCksICJtYXRyaXgzZCgxLjUsIDIuNSwgMy41LCA0
LjUsIDUuNSwgNi41LCA3LjUsIDguNSwgOS41LCAxMC41LCAxMS41LCAxMi41LCAxMy41LCAxNC41
LCAxNS41LCAxNi41KSIpOworICAgIH0sIG1hdHJpeCArICIuZnJvbUZsb2F0MzJBcnJheSIpOwor
CisgICAgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yLCAoKSA9PiB7IHdpbmRvd1ttYXRyaXhdLmZyb21GbG9hdDY0QXJyYXkoKSB9LCAiTm8gcGFy
YW1ldGVyIik7CisgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geyB3
aW5kb3dbbWF0cml4XS5mcm9tRmxvYXQ2NEFycmF5KG51bGwpIH0sICJQYXNzaW5nIG51bGwiKTsK
KyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7IHdpbmRvd1ttYXRy
aXhdLmZyb21GbG9hdDY0QXJyYXkobmV3IEZsb2F0MzJBcnJheSgpKSB9LCAiQmFkIHBhcmFtZXRl
ciIpOworICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsgd2luZG93
W21hdHJpeF0uZnJvbUZsb2F0NjRBcnJheShuZXcgRmxvYXQ2NEFycmF5KCkpIH0sICJFbXB0eSBG
bG9hdDY0QXJyYXkiKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9
PiB7IHdpbmRvd1ttYXRyaXhdLmZyb21GbG9hdDY0QXJyYXkobmV3IEZsb2F0NjRBcnJheShbMSwg
Ml0pKSB9LCAiRmxvYXQ2NEFycmF5IHdpdGggdG9vIGZldyBpdGVtcyIpOworICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsgd2luZG93W21hdHJpeF0uZnJvbUZsb2F0
NjRBcnJheShuZXcgRmxvYXQ2NEFycmF5KFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwg
MTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTddKSkgfSwgIkZsb2F0NjRBcnJheSB3aXRoIHRvbyBt
YW55IGl0ZW1zIik7CisgICAgfSwgbWF0cml4ICsgIi5mcm9tRmxvYXQ2NEFycmF5IChlcnJvciBj
YXNlcykiKTsKKworICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgIGxldCBtYXRyaXgyZCA9
IHdpbmRvd1ttYXRyaXhdLmZyb21GbG9hdDY0QXJyYXkobmV3IEZsb2F0NjRBcnJheShbMS41LCAy
LjUsIDMuNSwgNC41LCA1LjUsIDYuNV0pKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhtYXRyaXgy
ZC5fX3Byb3RvX18sIHdpbmRvd1ttYXRyaXhdLnByb3RvdHlwZSk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMobWF0cml4MmQudG9TdHJpbmcoKSwgIm1hdHJpeCgxLjUsIDIuNSwgMy41LCA0LjUsIDUu
NSwgNi41KSIpOworCisgICAgICAgIGxldCBtYXRyaXgzZCA9IHdpbmRvd1ttYXRyaXhdLmZyb21G
bG9hdDY0QXJyYXkobmV3IEZsb2F0NjRBcnJheShbMS41LCAyLjUsIDMuNSwgNC41LCA1LjUsIDYu
NSwgNy41LCA4LjUsIDkuNSwgMTAuNSwgMTEuNSwgMTIuNSwgMTMuNSwgMTQuNSwgMTUuNSwgMTYu
NV0pKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhtYXRyaXgzZC5fX3Byb3RvX18sIHdpbmRvd1tt
YXRyaXhdLnByb3RvdHlwZSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMobWF0cml4M2QudG9TdHJp
bmcoKSwgIm1hdHJpeDNkKDEuNSwgMi41LCAzLjUsIDQuNSwgNS41LCA2LjUsIDcuNSwgOC41LCA5
LjUsIDEwLjUsIDExLjUsIDEyLjUsIDEzLjUsIDE0LjUsIDE1LjUsIDE2LjUpIik7Cit9LCBtYXRy
aXggKyAiLmZyb21GbG9hdDY0QXJyYXkiKTsKKworfQorCit0ZXN0KGZ1bmN0aW9uKCkgeworICAg
IGxldCBtYXRyaXgyZCA9IG5ldyBET01NYXRyaXhSZWFkT25seShbMS41LCAyLjUsIDMuNSwgNC41
LCA1LjUsIDYuNV0pOworICAgIGxldCBhcnJheTMyID0gbWF0cml4MmQudG9GbG9hdDMyQXJyYXko
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGFycmF5MzIuX19wcm90b19fLCBGbG9hdDMyQXJyYXkucHJv
dG90eXBlKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFycmF5MzIubGVuZ3RoLCAxNik7CisgICAgYXNz
ZXJ0X2VxdWFscyhhcnJheTMyLnRvU3RyaW5nKCksICIxLjUsMi41LDAsMCwzLjUsNC41LDAsMCww
LDAsMSwwLDUuNSw2LjUsMCwxIik7CisKKyAgICBsZXQgbWF0cml4M2QgPSBuZXcgRE9NTWF0cml4
UmVhZE9ubHkoWzEuNSwgMi41LCAzLjUsIDQuNSwgNS41LCA2LjUsIDcuNSwgOC41LCA5LjUsIDEw
LjUsIDExLjUsIDEyLjUsIDEzLjUsIDE0LjUsIDE1LjUsIDE2LjVdKTsKKyAgICBhcnJheTMyID0g
bWF0cml4M2QudG9GbG9hdDMyQXJyYXkoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFycmF5MzIuX19w
cm90b19fLCBGbG9hdDMyQXJyYXkucHJvdG90eXBlKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFycmF5
MzIubGVuZ3RoLCAxNik7CisgICAgYXNzZXJ0X2VxdWFscyhhcnJheTMyLnRvU3RyaW5nKCksICIx
LjUsMi41LDMuNSw0LjUsNS41LDYuNSw3LjUsOC41LDkuNSwxMC41LDExLjUsMTIuNSwxMy41LDE0
LjUsMTUuNSwxNi41Iik7CisgICAgYXNzZXJ0X2VxdWFscyhtYXRyaXgzZC50b1N0cmluZygpLCBE
T01NYXRyaXhSZWFkT25seS5mcm9tRmxvYXQzMkFycmF5KGFycmF5MzIpLnRvU3RyaW5nKCkpOwor
fSwgIkRPTU1hdHJpeFJlYWRvbmx5LnRvRmxvYXQzMkFycmF5Iik7CisKK3Rlc3QoZnVuY3Rpb24o
KSB7CisgICAgbGV0IG1hdHJpeDJkID0gbmV3IERPTU1hdHJpeFJlYWRPbmx5KFsxLjUsIDIuNSwg
My41LCA0LjUsIDUuNSwgNi41XSk7CisgICAgbGV0IGFycmF5NjQgPSBtYXRyaXgyZC50b0Zsb2F0
NjRBcnJheSgpOworICAgIGFzc2VydF9lcXVhbHMoYXJyYXk2NC5fX3Byb3RvX18sIEZsb2F0NjRB
cnJheS5wcm90b3R5cGUpOworICAgIGFzc2VydF9lcXVhbHMoYXJyYXk2NC5sZW5ndGgsIDE2KTsK
KyAgICBhc3NlcnRfZXF1YWxzKGFycmF5NjQudG9TdHJpbmcoKSwgIjEuNSwyLjUsMCwwLDMuNSw0
LjUsMCwwLDAsMCwxLDAsNS41LDYuNSwwLDEiKTsKKworICAgIGxldCBtYXRyaXgzZCA9IG5ldyBE
T01NYXRyaXhSZWFkT25seShbMS41LCAyLjUsIDMuNSwgNC41LCA1LjUsIDYuNSwgNy41LCA4LjUs
IDkuNSwgMTAuNSwgMTEuNSwgMTIuNSwgMTMuNSwgMTQuNSwgMTUuNSwgMTYuNV0pOworICAgIGFy
cmF5NjQgPSBtYXRyaXgzZC50b0Zsb2F0NjRBcnJheSgpOworICAgIGFzc2VydF9lcXVhbHMoYXJy
YXk2NC5fX3Byb3RvX18sIEZsb2F0NjRBcnJheS5wcm90b3R5cGUpOworICAgIGFzc2VydF9lcXVh
bHMoYXJyYXk2NC5sZW5ndGgsIDE2KTsKKyAgICBhc3NlcnRfZXF1YWxzKGFycmF5NjQudG9TdHJp
bmcoKSwgIjEuNSwyLjUsMy41LDQuNSw1LjUsNi41LDcuNSw4LjUsOS41LDEwLjUsMTEuNSwxMi41
LDEzLjUsMTQuNSwxNS41LDE2LjUiKTsKKyAgICBhc3NlcnRfZXF1YWxzKG1hdHJpeDNkLnRvU3Ry
aW5nKCksIERPTU1hdHJpeFJlYWRPbmx5LmZyb21GbG9hdDY0QXJyYXkoYXJyYXk2NCkudG9TdHJp
bmcoKSk7Cit9LCAiRE9NTWF0cml4UmVhZG9ubHkudG9GbG9hdDY0QXJyYXkiKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvZ2VvbWV0cnktMS9ET01NYXRyaXgtbmV3b2JqZWN0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
Y3NzL2dlb21ldHJ5LTEvRE9NTWF0cml4LW5ld29iamVjdC1leHBlY3RlZC50eHQKaW5kZXggMDM4
N2U4YjA2ZTQyYTRkOTBhYzQ1NzliN2QyMGU4ZTZmMzE1OTlkYy4uZDIzMTNjNGNjZGQ5OGI4NDA4
NGYzOTFkMTVjNWU1OTNhMTA5M2NjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvZ2VvbWV0cnktMS9ET01NYXRyaXgtbmV3b2JqZWN0
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2Nzcy9nZW9tZXRyeS0xL0RPTU1hdHJpeC1uZXdvYmplY3QtZXhwZWN0ZWQudHh0CkBA
IC0xMiw4ICsxMiw4IEBAIFBBU1MgRE9NTWF0cml4IGZsaXBYCiBQQVNTIERPTU1hdHJpeCBmbGlw
WSAKIFBBU1MgRE9NTWF0cml4IGludmVyc2UgCiBGQUlMIERPTU1hdHJpeCB0cmFuc2Zvcm1Qb2lu
dCBtYXRyaXhbbWV0aG9kXSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdtYXRyaXhbbWV0aG9kXSgp
JywgJ21hdHJpeFttZXRob2RdJyBpcyB1bmRlZmluZWQpCi1GQUlMIERPTU1hdHJpeCB0b0Zsb2F0
MzJBcnJheSBtYXRyaXhbbWV0aG9kXSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdtYXRyaXhbbWV0
aG9kXSgpJywgJ21hdHJpeFttZXRob2RdJyBpcyB1bmRlZmluZWQpCi1GQUlMIERPTU1hdHJpeCB0
b0Zsb2F0NjRBcnJheSBtYXRyaXhbbWV0aG9kXSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdtYXRy
aXhbbWV0aG9kXSgpJywgJ21hdHJpeFttZXRob2RdJyBpcyB1bmRlZmluZWQpCitQQVNTIERPTU1h
dHJpeCB0b0Zsb2F0MzJBcnJheSAKK1BBU1MgRE9NTWF0cml4IHRvRmxvYXQ2NEFycmF5IAogUEFT
UyBET01NYXRyaXhSZWFkT25seSB0cmFuc2xhdGUgCiBQQVNTIERPTU1hdHJpeFJlYWRPbmx5IHNj
YWxlIAogUEFTUyBET01NYXRyaXhSZWFkT25seSBzY2FsZTNkIApAQCAtMjcsNiArMjcsNiBAQCBQ
QVNTIERPTU1hdHJpeFJlYWRPbmx5IGZsaXBYCiBQQVNTIERPTU1hdHJpeFJlYWRPbmx5IGZsaXBZ
IAogUEFTUyBET01NYXRyaXhSZWFkT25seSBpbnZlcnNlIAogRkFJTCBET01NYXRyaXhSZWFkT25s
eSB0cmFuc2Zvcm1Qb2ludCBtYXRyaXhbbWV0aG9kXSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdt
YXRyaXhbbWV0aG9kXSgpJywgJ21hdHJpeFttZXRob2RdJyBpcyB1bmRlZmluZWQpCi1GQUlMIERP
TU1hdHJpeFJlYWRPbmx5IHRvRmxvYXQzMkFycmF5IG1hdHJpeFttZXRob2RdIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ21hdHJpeFttZXRob2RdKCknLCAnbWF0cml4W21ldGhvZF0nIGlzIHVuZGVm
aW5lZCkKLUZBSUwgRE9NTWF0cml4UmVhZE9ubHkgdG9GbG9hdDY0QXJyYXkgbWF0cml4W21ldGhv
ZF0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbWF0cml4W21ldGhvZF0oKScsICdtYXRyaXhbbWV0
aG9kXScgaXMgdW5kZWZpbmVkKQorUEFTUyBET01NYXRyaXhSZWFkT25seSB0b0Zsb2F0MzJBcnJh
eSAKK1BBU1MgRE9NTWF0cml4UmVhZE9ubHkgdG9GbG9hdDY0QXJyYXkgCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311948</attachid>
            <date>2017-06-03 16:16:14 -0700</date>
            <delta_ts>2017-06-03 18:15:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172898-20170603161612.patch</filename>
            <type>text/plain</type>
            <size>22683</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzZmM2IzMWI3ZjMwYzE1
YzZlZDcwMzJlMjdiMmNiM2YzZjA3MzUwYS4uNDNkYTI5ZmYyNTU4OTFiYjY2N2U3NzNhNmQwMmVk
OWQzZGE2Y2E3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA2LTAzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IERPTU1hdHJp
eCdzIGZyb21GbG9hdDMyQXJyYXkgLyBmcm9tRmxvYXQ2NEFycmF5ICYgdG9GbG9hdDMyQXJyYXkg
LyB0b0Zsb2F0NjRBcnJheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW1wbGVtZW50IERPTU1hdHJpeCdzIGZyb21GbG9hdDMyQXJyYXkgLyBmcm9tRmxv
YXQ2NEFycmF5ICYgdG9GbG9hdDMyQXJyYXkgLyB0b0Zsb2F0NjRBcnJheQorICAgICAgICBhcyBw
ZXI6CisgICAgICAgIC0gaHR0cHM6Ly9kcmFmdHMuZnh0Zi5vcmcvZ2VvbWV0cnkvI2RvbW1hdHJp
eHJlYWRvbmx5CisKKyAgICAgICAgVGVzdDogaHR0cC93cHQvZ2VvbWV0cnkvRE9NTWF0cml4LWZy
b20tdG8tdHlwZWQtYXJyYXlzLmh0bWwKKworICAgICAgICAqIGNzcy9ET01NYXRyaXguY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NTWF0cml4Ojpmcm9tRmxvYXQzMkFycmF5KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTU1hdHJpeDo6ZnJvbUZsb2F0NjRBcnJheSk6CisgICAgICAgICogY3NzL0RP
TU1hdHJpeC5oOgorICAgICAgICAqIGNzcy9ET01NYXRyaXguaWRsOgorICAgICAgICAqIGNzcy9E
T01NYXRyaXhSZWFkT25seS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01NYXRyaXhSZWFkT25s
eTo6ZnJvbUZsb2F0MzJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpET01NYXRyaXhSZWFkT25s
eTo6ZnJvbUZsb2F0NjRBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpET01NYXRyaXhSZWFkT25s
eTo6dG9GbG9hdDMyQXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6RE9NTWF0cml4UmVhZE9ubHk6
OnRvRmxvYXQ2NEFycmF5KToKKyAgICAgICAgKiBjc3MvRE9NTWF0cml4UmVhZE9ubHkuaDoKKyAg
ICAgICAgKiBjc3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsOgorCiAyMDE3LTA2LTAyICBGcmVkZXJp
YyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KIAogICAgICAgICBbTWFjXSBJbmNsdWRlIGZyYW1l
cyBpbiB0aGUgc2Nyb2xsaW5nIHRyZWUgd2hlbiBTY3JvbGxpbmdUcmVlSW5jbHVkZXNGcmFtZXM9
dHJ1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNwcAppbmRleCBhNzk0OGY3MjliNzNiMmZiMTkyM2Yz
YzlmOWM5NThhNzYyZmM3MDUyLi4wNjFhOGNiODEwZWQ5MDQzYTMxYWJhODQ2Yzg5ODU0M2Y0NzBk
OGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNwcApAQCAtNDMsNiArNDMsNDAgQEAgRXhjZXB0
aW9uT3I8UmVmPERPTU1hdHJpeD4+IERPTU1hdHJpeDo6ZnJvbU1hdHJpeChET01NYXRyaXhJbml0
JiYgaW5pdCkKICAgICByZXR1cm4gZnJvbU1hdHJpeEhlbHBlcjxET01NYXRyaXg+KFdURk1vdmUo
aW5pdCkpOwogfQogCitFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4Pj4gRE9NTWF0cml4Ojpmcm9t
RmxvYXQzMkFycmF5KFJlZjxGbG9hdDMyQXJyYXk+JiYgYXJyYXkzMikKK3sKKyAgICBpZiAoYXJy
YXkzMi0+bGVuZ3RoKCkgPT0gNikKKyAgICAgICAgcmV0dXJuIERPTU1hdHJpeDo6Y3JlYXRlKFRy
YW5zZm9ybWF0aW9uTWF0cml4KGFycmF5MzItPml0ZW0oMCksIGFycmF5MzItPml0ZW0oMSksIGFy
cmF5MzItPml0ZW0oMiksIGFycmF5MzItPml0ZW0oMyksIGFycmF5MzItPml0ZW0oNCksIGFycmF5
MzItPml0ZW0oNSkpLCBJczJEOjpZZXMpOworCisgICAgaWYgKGFycmF5MzItPmxlbmd0aCgpID09
IDE2KSB7CisgICAgICAgIHJldHVybiBET01NYXRyaXg6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgKKyAgICAgICAgICAgIGFycmF5MzItPml0ZW0oMCksIGFycmF5MzItPml0ZW0oMSksIGFy
cmF5MzItPml0ZW0oMiksIGFycmF5MzItPml0ZW0oMyksCisgICAgICAgICAgICBhcnJheTMyLT5p
dGVtKDQpLCBhcnJheTMyLT5pdGVtKDUpLCBhcnJheTMyLT5pdGVtKDYpLCBhcnJheTMyLT5pdGVt
KDcpLAorICAgICAgICAgICAgYXJyYXkzMi0+aXRlbSg4KSwgYXJyYXkzMi0+aXRlbSg5KSwgYXJy
YXkzMi0+aXRlbSgxMCksIGFycmF5MzItPml0ZW0oMTEpLAorICAgICAgICAgICAgYXJyYXkzMi0+
aXRlbSgxMiksIGFycmF5MzItPml0ZW0oMTMpLCBhcnJheTMyLT5pdGVtKDE0KSwgYXJyYXkzMi0+
aXRlbSgxNSkKKyAgICAgICAgKSwgSXMyRDo6Tm8pOworICAgIH0KKworICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IERP
TU1hdHJpeDo6ZnJvbUZsb2F0NjRBcnJheShSZWY8RmxvYXQ2NEFycmF5PiYmIGFycmF5NjQpCit7
CisgICAgaWYgKGFycmF5NjQtPmxlbmd0aCgpID09IDYpCisgICAgICAgIHJldHVybiBET01NYXRy
aXg6OmNyZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeChhcnJheTY0LT5pdGVtKDApLCBhcnJheTY0
LT5pdGVtKDEpLCBhcnJheTY0LT5pdGVtKDIpLCBhcnJheTY0LT5pdGVtKDMpLCBhcnJheTY0LT5p
dGVtKDQpLCBhcnJheTY0LT5pdGVtKDUpKSwgSXMyRDo6WWVzKTsKKworICAgIGlmIChhcnJheTY0
LT5sZW5ndGgoKSA9PSAxNikgeworICAgICAgICByZXR1cm4gRE9NTWF0cml4OjpjcmVhdGUoVHJh
bnNmb3JtYXRpb25NYXRyaXgoCisgICAgICAgICAgICBhcnJheTY0LT5pdGVtKDApLCBhcnJheTY0
LT5pdGVtKDEpLCBhcnJheTY0LT5pdGVtKDIpLCBhcnJheTY0LT5pdGVtKDMpLAorICAgICAgICAg
ICAgYXJyYXk2NC0+aXRlbSg0KSwgYXJyYXk2NC0+aXRlbSg1KSwgYXJyYXk2NC0+aXRlbSg2KSwg
YXJyYXk2NC0+aXRlbSg3KSwKKyAgICAgICAgICAgIGFycmF5NjQtPml0ZW0oOCksIGFycmF5NjQt
Pml0ZW0oOSksIGFycmF5NjQtPml0ZW0oMTApLCBhcnJheTY0LT5pdGVtKDExKSwKKyAgICAgICAg
ICAgIGFycmF5NjQtPml0ZW0oMTIpLCBhcnJheTY0LT5pdGVtKDEzKSwgYXJyYXk2NC0+aXRlbSgx
NCksIGFycmF5NjQtPml0ZW0oMTUpCisgICAgICAgICksIElzMkQ6Ok5vKTsKKyAgICB9CisKKyAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07Cit9CisKIC8vIGh0dHBzOi8vZHJhZnRz
LmZ4dGYub3JnL2dlb21ldHJ5LyNkb20tZG9tbWF0cml4LW11bHRpcGx5c2VsZgogRXhjZXB0aW9u
T3I8UmVmPERPTU1hdHJpeD4+IERPTU1hdHJpeDo6bXVsdGlwbHlTZWxmKERPTU1hdHJpeEluaXQm
JiBvdGhlcikKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaAppbmRleCA0ZGJmZGQ5NTZjMzA4MTgyMjBm
ZjU3MGY1OTFmOGJmZmEzYjQxYjIzLi4yZjM4OTcwMzJlNGZkNWFkOTg0NjIxZjA2MDAyOTNjZjM3
N2ViY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5oCkBAIC01Miw2ICs1Miw5IEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4Pj4gZnJvbU1hdHJpeChET01N
YXRyaXhJbml0JiYpOwogCisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBm
cm9tRmxvYXQzMkFycmF5KFJlZjxGbG9hdDMyQXJyYXk+JiYpOworICAgIHN0YXRpYyBFeGNlcHRp
b25PcjxSZWY8RE9NTWF0cml4Pj4gZnJvbUZsb2F0NjRBcnJheShSZWY8RmxvYXQ2NEFycmF5PiYm
KTsKKwogICAgIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBtdWx0aXBseVNlbGYoRE9NTWF0
cml4SW5pdCYmIG90aGVyKTsKICAgICBFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4Pj4gcHJlTXVs
dGlwbHlTZWxmKERPTU1hdHJpeEluaXQmJiBvdGhlcik7CiAgICAgUmVmPERPTU1hdHJpeD4gdHJh
bnNsYXRlU2VsZihkb3VibGUgdHggPSAwLCBkb3VibGUgdHkgPSAwLCBkb3VibGUgdHogPSAwKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaWRsIGIvU291cmNlL1dl
YkNvcmUvY3NzL0RPTU1hdHJpeC5pZGwKaW5kZXggNmNmZTU0MTkzMjQ2M2I0NWU4ZTk2NzY5NTc3
YTA1OTQ1N2I1MDQxZS4uYjljZmRjY2ZhOGJiY2RjODdkMGQwNzBkYzUwNjQyMzc2NDUyNGMxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5pZGwKQEAgLTMyLDggKzMyLDggQEAKICAgICBJbXBsZW1l
bnRhdGlvbkxhY2tzVlRhYmxlCiAgXSBpbnRlcmZhY2UgRE9NTWF0cml4IDogRE9NTWF0cml4UmVh
ZE9ubHkgewogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0
cml4IGZyb21NYXRyaXgob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7Ci0gICAgLy8gW05l
d09iamVjdF0gc3RhdGljIERPTU1hdHJpeCBmcm9tRmxvYXQzMkFycmF5KEZsb2F0MzJBcnJheSBh
cnJheTMyKTsgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIC8vIFtOZXdPYmplY3RdIHN0
YXRpYyBET01NYXRyaXggZnJvbUZsb2F0NjRBcnJheShGbG9hdDY0QXJyYXkgYXJyYXk2NCk7ICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmpl
Y3RdIHN0YXRpYyBET01NYXRyaXggZnJvbUZsb2F0MzJBcnJheShGbG9hdDMyQXJyYXkgYXJyYXkz
Mik7CisgICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXgg
ZnJvbUZsb2F0NjRBcnJheShGbG9hdDY0QXJyYXkgYXJyYXk2NCk7CiAKICAgICAvLyBUaGVzZSBh
dHRyaWJ1dGVzIGFyZSBzaW1wbGUgYWxpYXNlcyBmb3IgY2VydGFpbiBlbGVtZW50cyBvZiB0aGUg
NHg0IG1hdHJpeAogICAgIGluaGVyaXQgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgYTsg
Ly8gQWxpYXMgZm9yIG0xMS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRy
aXhSZWFkT25seS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuY3Bw
CmluZGV4IGM4YjM4NDg2MDQ2NDUwOTcxNDJlMWVlNjM0NDRkOTFjY2UzYjg2NDYuLjZiNTk4MzZl
NGYwZDYwNWJkN2M2MDEzODFjOWQ5NWMzNjA5NTkxZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0RP
TU1hdHJpeFJlYWRPbmx5LmNwcApAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1ZGUgIkV4Y2VwdGlv
bkNvZGUuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlICJUcmFuc2Zv
cm1GdW5jdGlvbnMuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJh
eVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmg+CisjaW5jbHVkZSA8aGVhcC9IZWFwSW5saW5lcy5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTE0LDYgKzExNyw0MCBAQCBFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4UmVhZE9ubHk+PiBET01N
YXRyaXhSZWFkT25seTo6ZnJvbU1hdHJpeChET01NYXRyaXhJbml0JgogICAgIHJldHVybiBmcm9t
TWF0cml4SGVscGVyPERPTU1hdHJpeFJlYWRPbmx5PihXVEZNb3ZlKGluaXQpKTsKIH0KIAorRXhj
ZXB0aW9uT3I8UmVmPERPTU1hdHJpeFJlYWRPbmx5Pj4gRE9NTWF0cml4UmVhZE9ubHk6OmZyb21G
bG9hdDMyQXJyYXkoUmVmPEZsb2F0MzJBcnJheT4mJiBhcnJheTMyKQoreworICAgIGlmIChhcnJh
eTMyLT5sZW5ndGgoKSA9PSA2KQorICAgICAgICByZXR1cm4gRE9NTWF0cml4UmVhZE9ubHk6OmNy
ZWF0ZShUcmFuc2Zvcm1hdGlvbk1hdHJpeChhcnJheTMyLT5pdGVtKDApLCBhcnJheTMyLT5pdGVt
KDEpLCBhcnJheTMyLT5pdGVtKDIpLCBhcnJheTMyLT5pdGVtKDMpLCBhcnJheTMyLT5pdGVtKDQp
LCBhcnJheTMyLT5pdGVtKDUpKSwgSXMyRDo6WWVzKTsKKworICAgIGlmIChhcnJheTMyLT5sZW5n
dGgoKSA9PSAxNikgeworICAgICAgICByZXR1cm4gRE9NTWF0cml4UmVhZE9ubHk6OmNyZWF0ZShU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgKKyAgICAgICAgICAgIGFycmF5MzItPml0ZW0oMCksIGFycmF5
MzItPml0ZW0oMSksIGFycmF5MzItPml0ZW0oMiksIGFycmF5MzItPml0ZW0oMyksCisgICAgICAg
ICAgICBhcnJheTMyLT5pdGVtKDQpLCBhcnJheTMyLT5pdGVtKDUpLCBhcnJheTMyLT5pdGVtKDYp
LCBhcnJheTMyLT5pdGVtKDcpLAorICAgICAgICAgICAgYXJyYXkzMi0+aXRlbSg4KSwgYXJyYXkz
Mi0+aXRlbSg5KSwgYXJyYXkzMi0+aXRlbSgxMCksIGFycmF5MzItPml0ZW0oMTEpLAorICAgICAg
ICAgICAgYXJyYXkzMi0+aXRlbSgxMiksIGFycmF5MzItPml0ZW0oMTMpLCBhcnJheTMyLT5pdGVt
KDE0KSwgYXJyYXkzMi0+aXRlbSgxNSkKKyAgICAgICAgKSwgSXMyRDo6Tm8pOworICAgIH0KKwor
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKK30KKworRXhjZXB0aW9uT3I8UmVm
PERPTU1hdHJpeFJlYWRPbmx5Pj4gRE9NTWF0cml4UmVhZE9ubHk6OmZyb21GbG9hdDY0QXJyYXko
UmVmPEZsb2F0NjRBcnJheT4mJiBhcnJheTY0KQoreworICAgIGlmIChhcnJheTY0LT5sZW5ndGgo
KSA9PSA2KQorICAgICAgICByZXR1cm4gRE9NTWF0cml4UmVhZE9ubHk6OmNyZWF0ZShUcmFuc2Zv
cm1hdGlvbk1hdHJpeChhcnJheTY0LT5pdGVtKDApLCBhcnJheTY0LT5pdGVtKDEpLCBhcnJheTY0
LT5pdGVtKDIpLCBhcnJheTY0LT5pdGVtKDMpLCBhcnJheTY0LT5pdGVtKDQpLCBhcnJheTY0LT5p
dGVtKDUpKSwgSXMyRDo6WWVzKTsKKworICAgIGlmIChhcnJheTY0LT5sZW5ndGgoKSA9PSAxNikg
eworICAgICAgICByZXR1cm4gRE9NTWF0cml4UmVhZE9ubHk6OmNyZWF0ZShUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgKKyAgICAgICAgICAgIGFycmF5NjQtPml0ZW0oMCksIGFycmF5NjQtPml0ZW0oMSks
IGFycmF5NjQtPml0ZW0oMiksIGFycmF5NjQtPml0ZW0oMyksCisgICAgICAgICAgICBhcnJheTY0
LT5pdGVtKDQpLCBhcnJheTY0LT5pdGVtKDUpLCBhcnJheTY0LT5pdGVtKDYpLCBhcnJheTY0LT5p
dGVtKDcpLAorICAgICAgICAgICAgYXJyYXk2NC0+aXRlbSg4KSwgYXJyYXk2NC0+aXRlbSg5KSwg
YXJyYXk2NC0+aXRlbSgxMCksIGFycmF5NjQtPml0ZW0oMTEpLAorICAgICAgICAgICAgYXJyYXk2
NC0+aXRlbSgxMiksIGFycmF5NjQtPml0ZW0oMTMpLCBhcnJheTY0LT5pdGVtKDE0KSwgYXJyYXk2
NC0+aXRlbSgxNSkKKyAgICAgICAgKSwgSXMyRDo6Tm8pOworICAgIH0KKworICAgIHJldHVybiBF
eGNlcHRpb24geyBUeXBlRXJyb3IgfTsKK30KKwogYm9vbCBET01NYXRyaXhSZWFkT25seTo6aXNJ
ZGVudGl0eSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbWF0cml4LmlzSWRlbnRpdHkoKTsKQEAg
LTI0OCw2ICsyODUsNTggQEAgUmVmPERPTU1hdHJpeD4gRE9NTWF0cml4UmVhZE9ubHk6OmludmVy
c2UoKSBjb25zdAogICAgIHJldHVybiBtYXRyaXgtPmludmVydFNlbGYoKTsKIH0KIAorUmVmUHRy
PEZsb2F0MzJBcnJheT4gRE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQzMkFycmF5KCkgY29uc3QK
K3sKKyAgICBhdXRvIGFycmF5MzIgPSBGbG9hdDMyQXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
MTYpOworICAgIGlmICghYXJyYXkzMikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICB1
bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYXJyYXkzMi0+c2V0KGluZGV4KyssIG1fbWF0cml4Lm0x
MSgpKTsKKyAgICBhcnJheTMyLT5zZXQoaW5kZXgrKywgbV9tYXRyaXgubTEyKCkpOworICAgIGFy
cmF5MzItPnNldChpbmRleCsrLCBtX21hdHJpeC5tMTMoKSk7CisgICAgYXJyYXkzMi0+c2V0KGlu
ZGV4KyssIG1fbWF0cml4Lm0xNCgpKTsKKyAgICBhcnJheTMyLT5zZXQoaW5kZXgrKywgbV9tYXRy
aXgubTIxKCkpOworICAgIGFycmF5MzItPnNldChpbmRleCsrLCBtX21hdHJpeC5tMjIoKSk7Cisg
ICAgYXJyYXkzMi0+c2V0KGluZGV4KyssIG1fbWF0cml4Lm0yMygpKTsKKyAgICBhcnJheTMyLT5z
ZXQoaW5kZXgrKywgbV9tYXRyaXgubTI0KCkpOworICAgIGFycmF5MzItPnNldChpbmRleCsrLCBt
X21hdHJpeC5tMzEoKSk7CisgICAgYXJyYXkzMi0+c2V0KGluZGV4KyssIG1fbWF0cml4Lm0zMigp
KTsKKyAgICBhcnJheTMyLT5zZXQoaW5kZXgrKywgbV9tYXRyaXgubTMzKCkpOworICAgIGFycmF5
MzItPnNldChpbmRleCsrLCBtX21hdHJpeC5tMzQoKSk7CisgICAgYXJyYXkzMi0+c2V0KGluZGV4
KyssIG1fbWF0cml4Lm00MSgpKTsKKyAgICBhcnJheTMyLT5zZXQoaW5kZXgrKywgbV9tYXRyaXgu
bTQyKCkpOworICAgIGFycmF5MzItPnNldChpbmRleCsrLCBtX21hdHJpeC5tNDMoKSk7CisgICAg
YXJyYXkzMi0+c2V0KGluZGV4LCBtX21hdHJpeC5tNDQoKSk7CisgICAgcmV0dXJuIGFycmF5MzI7
Cit9CisKK1JlZlB0cjxGbG9hdDY0QXJyYXk+IERPTU1hdHJpeFJlYWRPbmx5Ojp0b0Zsb2F0NjRB
cnJheSgpIGNvbnN0Cit7CisgICAgYXV0byBhcnJheTY0ID0gRmxvYXQ2NEFycmF5OjpjcmVhdGVV
bmluaXRpYWxpemVkKDE2KTsKKyAgICBpZiAoIWFycmF5NjQpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGFycmF5NjQtPnNldChpbmRleCsr
LCBtX21hdHJpeC5tMTEoKSk7CisgICAgYXJyYXk2NC0+c2V0KGluZGV4KyssIG1fbWF0cml4Lm0x
MigpKTsKKyAgICBhcnJheTY0LT5zZXQoaW5kZXgrKywgbV9tYXRyaXgubTEzKCkpOworICAgIGFy
cmF5NjQtPnNldChpbmRleCsrLCBtX21hdHJpeC5tMTQoKSk7CisgICAgYXJyYXk2NC0+c2V0KGlu
ZGV4KyssIG1fbWF0cml4Lm0yMSgpKTsKKyAgICBhcnJheTY0LT5zZXQoaW5kZXgrKywgbV9tYXRy
aXgubTIyKCkpOworICAgIGFycmF5NjQtPnNldChpbmRleCsrLCBtX21hdHJpeC5tMjMoKSk7Cisg
ICAgYXJyYXk2NC0+c2V0KGluZGV4KyssIG1fbWF0cml4Lm0yNCgpKTsKKyAgICBhcnJheTY0LT5z
ZXQoaW5kZXgrKywgbV9tYXRyaXgubTMxKCkpOworICAgIGFycmF5NjQtPnNldChpbmRleCsrLCBt
X21hdHJpeC5tMzIoKSk7CisgICAgYXJyYXk2NC0+c2V0KGluZGV4KyssIG1fbWF0cml4Lm0zMygp
KTsKKyAgICBhcnJheTY0LT5zZXQoaW5kZXgrKywgbV9tYXRyaXgubTM0KCkpOworICAgIGFycmF5
NjQtPnNldChpbmRleCsrLCBtX21hdHJpeC5tNDEoKSk7CisgICAgYXJyYXk2NC0+c2V0KGluZGV4
KyssIG1fbWF0cml4Lm00MigpKTsKKyAgICBhcnJheTY0LT5zZXQoaW5kZXgrKywgbV9tYXRyaXgu
bTQzKCkpOworICAgIGFycmF5NjQtPnNldChpbmRleCwgbV9tYXRyaXgubTQ0KCkpOworICAgIHJl
dHVybiBhcnJheTY0OworfQorCiAvLyBodHRwczovL2RyYWZ0cy5meHRmLm9yZy9nZW9tZXRyeS8j
ZG9tLWRvbW1hdHJpeHJlYWRvbmx5LXN0cmluZ2lmaWVyCiBFeGNlcHRpb25PcjxTdHJpbmc+IERP
TU1hdHJpeFJlYWRPbmx5Ojp0b1N0cmluZygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01N
YXRyaXhSZWFkT25seS5oCmluZGV4IGE5YjRkZGY3NGFkZTg3YjVjMTk3Mjk5ZGJjYzI2MWQxODY5
YWUxMjEuLjUzOTJiYTY5OWExNDlhNzcyNGNhNDNlYTk1MGM1MDkzOTE2ZjVhMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5oCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVk
ZSAiRXhjZXB0aW9uT3IuaCIKICNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRl
ICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5
Lmg+CisjaW5jbHVkZSA8cnVudGltZS9GbG9hdDY0QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgpAQCAtNjMsNiArNjUsOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8
UmVmPERPTU1hdHJpeFJlYWRPbmx5Pj4gZnJvbU1hdHJpeChET01NYXRyaXhJbml0JiYpOwogCisg
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXhSZWFkT25seT4+IGZyb21GbG9hdDMy
QXJyYXkoUmVmPEZsb2F0MzJBcnJheT4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxE
T01NYXRyaXhSZWFkT25seT4+IGZyb21GbG9hdDY0QXJyYXkoUmVmPEZsb2F0NjRBcnJheT4mJik7
CisKICAgICBkb3VibGUgYSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4LmEoKTsgfQogICAgIGRv
dWJsZSBiKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXguYigpOyB9CiAgICAgZG91YmxlIGMoKSBj
b25zdCB7IHJldHVybiBtX21hdHJpeC5jKCk7IH0KQEAgLTEwNiw2ICsxMTEsOSBAQCBwdWJsaWM6
CiAgICAgUmVmPERPTU1hdHJpeD4gc2tld1koZG91YmxlIHN5ID0gMCk7IC8vIEFuZ2xlIGlzIGlu
IGRlZ3JlZXMuCiAgICAgUmVmPERPTU1hdHJpeD4gaW52ZXJzZSgpIGNvbnN0OwogCisgICAgUmVm
UHRyPEZsb2F0MzJBcnJheT4gdG9GbG9hdDMyQXJyYXkoKSBjb25zdDsKKyAgICBSZWZQdHI8Rmxv
YXQ2NEFycmF5PiB0b0Zsb2F0NjRBcnJheSgpIGNvbnN0OworCiAgICAgRXhjZXB0aW9uT3I8U3Ry
aW5nPiB0b1N0cmluZygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsIGIvU291cmNlL1dlYkNvcmUvY3NzL0RP
TU1hdHJpeFJlYWRPbmx5LmlkbAppbmRleCA3ZDZkMjFhNjU4YjgzZTc3NWIyZTE4MDkwZmI5OThm
ZGY2OTc1ODQ0Li5kZWE4NWIxODJiODA0MjZiMmZjOWE2NGFiZTU5NTcyMTUzYzQ0YjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4UmVhZE9ubHkuaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5pZGwKQEAgLTMxLDggKzMxLDggQEAK
ICAgICBJbXBsZW1lbnRhdGlvbkxhY2tzVlRhYmxlCiBdIGludGVyZmFjZSBET01NYXRyaXhSZWFk
T25seSB7CiAgICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRy
aXhSZWFkT25seSBmcm9tTWF0cml4KG9wdGlvbmFsIERPTU1hdHJpeEluaXQgb3RoZXIpOwotICAg
IC8vIFtOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tRmxvYXQzMkFycmF5
KEZsb2F0MzJBcnJheSBhcnJheTMyKTsgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIC8v
IFtOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tRmxvYXQ2NEFycmF5KEZs
b2F0NjRBcnJheSBhcnJheTY0KTsgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIFtNYXlU
aHJvd0V4Y2VwdGlvbiwgTmV3T2JqZWN0XSBzdGF0aWMgRE9NTWF0cml4UmVhZE9ubHkgZnJvbUZs
b2F0MzJBcnJheShGbG9hdDMyQXJyYXkgYXJyYXkzMik7CisgICAgW01heVRocm93RXhjZXB0aW9u
LCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tRmxvYXQ2NEFycmF5KEZs
b2F0NjRBcnJheSBhcnJheTY0KTsKIAogICAgIC8vIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIHNpbXBs
ZSBhbGlhc2VzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSA0eDQgbWF0cml4CiAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgYTsgLy8gQWxpYXMgZm9yIG0xMS4K
QEAgLTkzLDggKzkzLDggQEAKICAgICBbTmV3T2JqZWN0XSBET01NYXRyaXggaW52ZXJzZSgpOwog
CiAgICAgLy8gW05ld09iamVjdF0gRE9NUG9pbnQgdHJhbnNmb3JtUG9pbnQob3B0aW9uYWwgRE9N
UG9pbnRJbml0IHBvaW50KTsgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgIC8vIFtOZXdP
YmplY3RdIEZsb2F0MzJBcnJheSB0b0Zsb2F0MzJBcnJheSgpOyAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMuCi0gICAgLy8gW05ld09iamVjdF0gRmxvYXQ2NEFycmF5IHRvRmxvYXQ2NEFycmF5KCk7
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICBbTmV3T2JqZWN0XSBGbG9hdDMyQXJyYXk/
IHRvRmxvYXQzMkFycmF5KCk7CisgICAgW05ld09iamVjdF0gRmxvYXQ2NEFycmF5PyB0b0Zsb2F0
NjRBcnJheSgpOwogCiAgICAgW01heVRocm93RXhjZXB0aW9uXSBET01TdHJpbmcgdG9TdHJpbmco
KTsgLy8gRklYTUU6IFNob3VsZCBiZSBzdHJpbmdpZmllcjsgb25jZSBpdCBpcyBzdXBwb3J0ZWQu
CiAgICAgc2VyaWFsaXplciA9IHsgYXR0cmlidXRlIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNGY0YzIwNGJiYjY5ZGZm
M2MyNjE5Mzg3YjZmZjBlZTg4NjM5YzgwYy4uYjlhNzQ4NWQzZWFlYTEwMTRiN2UzYzQ2ODU1MmU0
ZTg0YjRiY2M4NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA2LTAzICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IERPTU1hdHJpeCdzIGZy
b21GbG9hdDMyQXJyYXkgLyBmcm9tRmxvYXQ2NEFycmF5ICYgdG9GbG9hdDMyQXJyYXkgLyB0b0Zs
b2F0NjRBcnJheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTcyODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogaHR0cC93cHQvZ2VvbWV0
cnkvRE9NTWF0cml4LWZyb20tdG8tdHlwZWQtYXJyYXlzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC93cHQvZ2VvbWV0cnkvRE9NTWF0cml4LWZyb20tdG8tdHlwZWQtYXJyYXlz
Lmh0bWw6IEFkZGVkLgorCiAyMDE3LTA2LTAyICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5j
b20+CiAKICAgICAgICAgTW92ZWQgdGVzdCBleHBlY3RhdGlvbiBmb3IgaHR0cC90ZXN0cy9wcmVs
b2FkL3ZpZXdwb3J0L21ldGEtdmlld3BvcnQtbGluay1oZWFkZXJzLnBocCB0byBjb3JyZWN0IGZp
bGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA4ZDMzNTgxZTNiN2M2NzY1OTI2
YzAxY2Y0ZDBmNmE3N2QzNWVlYmY1Li42YjNhN2RlZTJjMTA0NmFlNjU4MThhOWExM2ViNjVmMjkw
NzNlMjkyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxNy0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBET01NYXRyaXgncyBmcm9tRmxvYXQzMkFycmF5IC8gZnJvbUZsb2F0NjRBcnJheSAm
IHRvRmxvYXQzMkFycmF5IC8gdG9GbG9hdDY0QXJyYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Mjg5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzZWxpbmUgd2ViLXBsYXRmb3JtLXRlc3Qgbm93
IHRoYXQgbW9yZSBjaGVja3MgYXJlIHBhc3NpbmcuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0t
dGVzdHMvY3NzL2dlb21ldHJ5LTEvRE9NTWF0cml4LW5ld29iamVjdC1leHBlY3RlZC50eHQ6CisK
IDIwMTctMDYtMDIgIEphdmllciBGZXJuYW5kZXogIDxqZmVybmFuZGV6QGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW2Nzcy1ncmlkXSBNYXJnaW4gd3JvbmcgYXBwbGllZCB3aGVuIHN0cmV0Y2hpbmcg
YW4gb3J0aG9nb25hbCBpdGVtIGluIGZpeGVkIHNpemUgdHJhY2sKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L2dlb21ldHJ5L0RPTU1hdHJpeC1mcm9tLXRvLXR5cGVkLWFycmF5cy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9nZW9tZXRyeS9ET01NYXRyaXgtZnJv
bS10by10eXBlZC1hcnJheXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmMGQwNzY4OGVlNTc0
NTNlYzg4YzQxNDA3NjBjMzdhYTdmMmY2ODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC9nZW9tZXRyeS9ET01NYXRyaXgtZnJvbS10by10eXBlZC1hcnJheXMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKKworUEFTUyBET01NYXRyaXhSZWFkT25seS5mcm9tRmxv
YXQzMkFycmF5IChlcnJvciBjYXNlcykgCitQQVNTIERPTU1hdHJpeFJlYWRPbmx5LmZyb21GbG9h
dDMyQXJyYXkgCitQQVNTIERPTU1hdHJpeFJlYWRPbmx5LmZyb21GbG9hdDY0QXJyYXkgKGVycm9y
IGNhc2VzKSAKK1BBU1MgRE9NTWF0cml4UmVhZE9ubHkuZnJvbUZsb2F0NjRBcnJheSAKK1BBU1Mg
RE9NTWF0cml4LmZyb21GbG9hdDMyQXJyYXkgKGVycm9yIGNhc2VzKSAKK1BBU1MgRE9NTWF0cml4
LmZyb21GbG9hdDMyQXJyYXkgCitQQVNTIERPTU1hdHJpeC5mcm9tRmxvYXQ2NEFycmF5IChlcnJv
ciBjYXNlcykgCitQQVNTIERPTU1hdHJpeC5mcm9tRmxvYXQ2NEFycmF5IAorUEFTUyBET01NYXRy
aXhSZWFkb25seS50b0Zsb2F0MzJBcnJheSAKK1BBU1MgRE9NTWF0cml4UmVhZG9ubHkudG9GbG9h
dDY0QXJyYXkgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2dlb21ldHJ5L0RP
TU1hdHJpeC1mcm9tLXRvLXR5cGVkLWFycmF5cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
Z2VvbWV0cnkvRE9NTWF0cml4LWZyb20tdG8tdHlwZWQtYXJyYXlzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzU5N2Q2Zjk0NjhkN2RlNDk1YmU1MDM4ZTJkZmFiMzU4Yzk4OGYyNgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2dlb21ldHJ5L0RPTU1hdHJpeC1mcm9tLXRvLXR5cGVk
LWFycmF5cy5odG1sCkBAIC0wLDAgKzEsODUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT5HZW9tZXRyeSBJbnRlcmZhY2VzOiBET01NYXRyaXggY29udmVyc2lvbiB0
byBhbmQgZnJvbSB0eXBlZCBhcnJheXM8L3RpdGxlPgorPGxpbmsgaHJlZj0ibWFpbHRvOmNkdW1l
ekBhcHBsZS5jb20iIHJlbD0iYXV0aG9yIiB0aXRsZT0iQ2hyaXMgRHVtZXoiPgorPGxpbmsgaHJl
Zj0iaHR0cHM6Ly9kcmFmdHMuZnh0Zi5vcmcvZ2VvbWV0cnkvI2RvbW1hdHJpeHJlYWRvbmx5IiBy
ZWw9ImhlbHAiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZm9yIChsZXQgbWF0cml4IG9mIFsiRE9N
TWF0cml4UmVhZE9ubHkiLCAiRE9NTWF0cml4Il0pIHsKKworICAgIHRlc3QoZnVuY3Rpb24oKSB7
CisgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geyB3aW5kb3dbbWF0
cml4XS5mcm9tRmxvYXQzMkFycmF5KCkgfSwgIk5vIHBhcmFtZXRlciIpOworICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsgd2luZG93W21hdHJpeF0uZnJvbUZsb2F0
MzJBcnJheShudWxsKSB9LCAiUGFzc2luZyBudWxsIik7CisgICAgICAgIGFzc2VydF90aHJvd3Mo
bmV3IFR5cGVFcnJvciwgKCkgPT4geyB3aW5kb3dbbWF0cml4XS5mcm9tRmxvYXQzMkFycmF5KG5l
dyBGbG9hdDY0QXJyYXkoKSkgfSwgIkJhZCBwYXJhbWV0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7IHdpbmRvd1ttYXRyaXhdLmZyb21GbG9hdDMyQXJy
YXkobmV3IEZsb2F0MzJBcnJheSgpKSB9LCAiRW1wdHkgRmxvYXQzMkFycmF5Iik7CisgICAgICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geyB3aW5kb3dbbWF0cml4XS5mcm9t
RmxvYXQzMkFycmF5KG5ldyBGbG9hdDMyQXJyYXkoWzEsIDJdKSkgfSwgIkZsb2F0MzJBcnJheSB3
aXRoIHRvbyBmZXcgaXRlbXMiKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9y
LCAoKSA9PiB7IHdpbmRvd1ttYXRyaXhdLmZyb21GbG9hdDMyQXJyYXkobmV3IEZsb2F0MzJBcnJh
eShbMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYs
IDE3XSkpIH0sICJGbG9hdDMyQXJyYXkgd2l0aCB0b28gbWFueSBpdGVtcyIpOworICAgIH0sIG1h
dHJpeCArICIuZnJvbUZsb2F0MzJBcnJheSAoZXJyb3IgY2FzZXMpIik7CisKKyAgICB0ZXN0KGZ1
bmN0aW9uKCkgeworICAgICAgICBsZXQgbWF0cml4MmQgPSB3aW5kb3dbbWF0cml4XS5mcm9tRmxv
YXQzMkFycmF5KG5ldyBGbG9hdDMyQXJyYXkoWzEuNSwgMi41LCAzLjUsIDQuNSwgNS41LCA2LjVd
KSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMobWF0cml4MmQuX19wcm90b19fLCB3aW5kb3dbbWF0
cml4XS5wcm90b3R5cGUpOworICAgICAgICBhc3NlcnRfZXF1YWxzKG1hdHJpeDJkLnRvU3RyaW5n
KCksICJtYXRyaXgoMS41LCAyLjUsIDMuNSwgNC41LCA1LjUsIDYuNSkiKTsKKworICAgICAgICBs
ZXQgbWF0cml4M2QgPSB3aW5kb3dbbWF0cml4XS5mcm9tRmxvYXQzMkFycmF5KG5ldyBGbG9hdDMy
QXJyYXkoWzEuNSwgMi41LCAzLjUsIDQuNSwgNS41LCA2LjUsIDcuNSwgOC41LCA5LjUsIDEwLjUs
IDExLjUsIDEyLjUsIDEzLjUsIDE0LjUsIDE1LjUsIDE2LjVdKSk7CisgICAgICAgIGFzc2VydF9l
cXVhbHMobWF0cml4M2QuX19wcm90b19fLCB3aW5kb3dbbWF0cml4XS5wcm90b3R5cGUpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKG1hdHJpeDNkLnRvU3RyaW5nKCksICJtYXRyaXgzZCgxLjUsIDIu
NSwgMy41LCA0LjUsIDUuNSwgNi41LCA3LjUsIDguNSwgOS41LCAxMC41LCAxMS41LCAxMi41LCAx
My41LCAxNC41LCAxNS41LCAxNi41KSIpOworICAgIH0sIG1hdHJpeCArICIuZnJvbUZsb2F0MzJB
cnJheSIpOworCisgICAgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhu
ZXcgVHlwZUVycm9yLCAoKSA9PiB7IHdpbmRvd1ttYXRyaXhdLmZyb21GbG9hdDY0QXJyYXkoKSB9
LCAiTm8gcGFyYW1ldGVyIik7CisgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwg
KCkgPT4geyB3aW5kb3dbbWF0cml4XS5mcm9tRmxvYXQ2NEFycmF5KG51bGwpIH0sICJQYXNzaW5n
IG51bGwiKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7IHdp
bmRvd1ttYXRyaXhdLmZyb21GbG9hdDY0QXJyYXkobmV3IEZsb2F0MzJBcnJheSgpKSB9LCAiQmFk
IHBhcmFtZXRlciIpOworICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+
IHsgd2luZG93W21hdHJpeF0uZnJvbUZsb2F0NjRBcnJheShuZXcgRmxvYXQ2NEFycmF5KCkpIH0s
ICJFbXB0eSBGbG9hdDY0QXJyYXkiKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yLCAoKSA9PiB7IHdpbmRvd1ttYXRyaXhdLmZyb21GbG9hdDY0QXJyYXkobmV3IEZsb2F0NjRB
cnJheShbMSwgMl0pKSB9LCAiRmxvYXQ2NEFycmF5IHdpdGggdG9vIGZldyBpdGVtcyIpOworICAg
ICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsgd2luZG93W21hdHJpeF0u
ZnJvbUZsb2F0NjRBcnJheShuZXcgRmxvYXQ2NEFycmF5KFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4
LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTddKSkgfSwgIkZsb2F0NjRBcnJheSB3
aXRoIHRvbyBtYW55IGl0ZW1zIik7CisgICAgfSwgbWF0cml4ICsgIi5mcm9tRmxvYXQ2NEFycmF5
IChlcnJvciBjYXNlcykiKTsKKworICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgICAgIGxldCBt
YXRyaXgyZCA9IHdpbmRvd1ttYXRyaXhdLmZyb21GbG9hdDY0QXJyYXkobmV3IEZsb2F0NjRBcnJh
eShbMS41LCAyLjUsIDMuNSwgNC41LCA1LjUsIDYuNV0pKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhtYXRyaXgyZC5fX3Byb3RvX18sIHdpbmRvd1ttYXRyaXhdLnByb3RvdHlwZSk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMobWF0cml4MmQudG9TdHJpbmcoKSwgIm1hdHJpeCgxLjUsIDIuNSwgMy41
LCA0LjUsIDUuNSwgNi41KSIpOworCisgICAgICAgIGxldCBtYXRyaXgzZCA9IHdpbmRvd1ttYXRy
aXhdLmZyb21GbG9hdDY0QXJyYXkobmV3IEZsb2F0NjRBcnJheShbMS41LCAyLjUsIDMuNSwgNC41
LCA1LjUsIDYuNSwgNy41LCA4LjUsIDkuNSwgMTAuNSwgMTEuNSwgMTIuNSwgMTMuNSwgMTQuNSwg
MTUuNSwgMTYuNV0pKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhtYXRyaXgzZC5fX3Byb3RvX18s
IHdpbmRvd1ttYXRyaXhdLnByb3RvdHlwZSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMobWF0cml4
M2QudG9TdHJpbmcoKSwgIm1hdHJpeDNkKDEuNSwgMi41LCAzLjUsIDQuNSwgNS41LCA2LjUsIDcu
NSwgOC41LCA5LjUsIDEwLjUsIDExLjUsIDEyLjUsIDEzLjUsIDE0LjUsIDE1LjUsIDE2LjUpIik7
Cit9LCBtYXRyaXggKyAiLmZyb21GbG9hdDY0QXJyYXkiKTsKKworfQorCit0ZXN0KGZ1bmN0aW9u
KCkgeworICAgIGxldCBtYXRyaXgyZCA9IG5ldyBET01NYXRyaXhSZWFkT25seShbMS41LCAyLjUs
IDMuNSwgNC41LCA1LjUsIDYuNV0pOworICAgIGxldCBhcnJheTMyID0gbWF0cml4MmQudG9GbG9h
dDMyQXJyYXkoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFycmF5MzIuX19wcm90b19fLCBGbG9hdDMy
QXJyYXkucHJvdG90eXBlKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFycmF5MzIubGVuZ3RoLCAxNik7
CisgICAgYXNzZXJ0X2VxdWFscyhhcnJheTMyLnRvU3RyaW5nKCksICIxLjUsMi41LDAsMCwzLjUs
NC41LDAsMCwwLDAsMSwwLDUuNSw2LjUsMCwxIik7CisKKyAgICBsZXQgbWF0cml4M2QgPSBuZXcg
RE9NTWF0cml4UmVhZE9ubHkoWzEuNSwgMi41LCAzLjUsIDQuNSwgNS41LCA2LjUsIDcuNSwgOC41
LCA5LjUsIDEwLjUsIDExLjUsIDEyLjUsIDEzLjUsIDE0LjUsIDE1LjUsIDE2LjVdKTsKKyAgICBh
cnJheTMyID0gbWF0cml4M2QudG9GbG9hdDMyQXJyYXkoKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFy
cmF5MzIuX19wcm90b19fLCBGbG9hdDMyQXJyYXkucHJvdG90eXBlKTsKKyAgICBhc3NlcnRfZXF1
YWxzKGFycmF5MzIubGVuZ3RoLCAxNik7CisgICAgYXNzZXJ0X2VxdWFscyhhcnJheTMyLnRvU3Ry
aW5nKCksICIxLjUsMi41LDMuNSw0LjUsNS41LDYuNSw3LjUsOC41LDkuNSwxMC41LDExLjUsMTIu
NSwxMy41LDE0LjUsMTUuNSwxNi41Iik7CisgICAgYXNzZXJ0X2VxdWFscyhtYXRyaXgzZC50b1N0
cmluZygpLCBET01NYXRyaXhSZWFkT25seS5mcm9tRmxvYXQzMkFycmF5KGFycmF5MzIpLnRvU3Ry
aW5nKCkpOworfSwgIkRPTU1hdHJpeFJlYWRvbmx5LnRvRmxvYXQzMkFycmF5Iik7CisKK3Rlc3Qo
ZnVuY3Rpb24oKSB7CisgICAgbGV0IG1hdHJpeDJkID0gbmV3IERPTU1hdHJpeFJlYWRPbmx5KFsx
LjUsIDIuNSwgMy41LCA0LjUsIDUuNSwgNi41XSk7CisgICAgbGV0IGFycmF5NjQgPSBtYXRyaXgy
ZC50b0Zsb2F0NjRBcnJheSgpOworICAgIGFzc2VydF9lcXVhbHMoYXJyYXk2NC5fX3Byb3RvX18s
IEZsb2F0NjRBcnJheS5wcm90b3R5cGUpOworICAgIGFzc2VydF9lcXVhbHMoYXJyYXk2NC5sZW5n
dGgsIDE2KTsKKyAgICBhc3NlcnRfZXF1YWxzKGFycmF5NjQudG9TdHJpbmcoKSwgIjEuNSwyLjUs
MCwwLDMuNSw0LjUsMCwwLDAsMCwxLDAsNS41LDYuNSwwLDEiKTsKKworICAgIGxldCBtYXRyaXgz
ZCA9IG5ldyBET01NYXRyaXhSZWFkT25seShbMS41LCAyLjUsIDMuNSwgNC41LCA1LjUsIDYuNSwg
Ny41LCA4LjUsIDkuNSwgMTAuNSwgMTEuNSwgMTIuNSwgMTMuNSwgMTQuNSwgMTUuNSwgMTYuNV0p
OworICAgIGFycmF5NjQgPSBtYXRyaXgzZC50b0Zsb2F0NjRBcnJheSgpOworICAgIGFzc2VydF9l
cXVhbHMoYXJyYXk2NC5fX3Byb3RvX18sIEZsb2F0NjRBcnJheS5wcm90b3R5cGUpOworICAgIGFz
c2VydF9lcXVhbHMoYXJyYXk2NC5sZW5ndGgsIDE2KTsKKyAgICBhc3NlcnRfZXF1YWxzKGFycmF5
NjQudG9TdHJpbmcoKSwgIjEuNSwyLjUsMy41LDQuNSw1LjUsNi41LDcuNSw4LjUsOS41LDEwLjUs
MTEuNSwxMi41LDEzLjUsMTQuNSwxNS41LDE2LjUiKTsKKyAgICBhc3NlcnRfZXF1YWxzKG1hdHJp
eDNkLnRvU3RyaW5nKCksIERPTU1hdHJpeFJlYWRPbmx5LmZyb21GbG9hdDY0QXJyYXkoYXJyYXk2
NCkudG9TdHJpbmcoKSk7Cit9LCAiRE9NTWF0cml4UmVhZG9ubHkudG9GbG9hdDY0QXJyYXkiKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvZ2VvbWV0cnktMS9ET01NYXRyaXgtbmV3
b2JqZWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2dlb21ldHJ5LTEvRE9NTWF0cml4LW5ld29iamVjdC1leHBlY3RlZC50eHQK
aW5kZXggMDM4N2U4YjA2ZTQyYTRkOTBhYzQ1NzliN2QyMGU4ZTZmMzE1OTlkYy4uZDIzMTNjNGNj
ZGQ5OGI4NDA4NGYzOTFkMTVjNWU1OTNhMTA5M2NjYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvZ2VvbWV0cnktMS9ET01NYXRyaXgt
bmV3b2JqZWN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2Nzcy9nZW9tZXRyeS0xL0RPTU1hdHJpeC1uZXdvYmplY3QtZXhwZWN0
ZWQudHh0CkBAIC0xMiw4ICsxMiw4IEBAIFBBU1MgRE9NTWF0cml4IGZsaXBYCiBQQVNTIERPTU1h
dHJpeCBmbGlwWSAKIFBBU1MgRE9NTWF0cml4IGludmVyc2UgCiBGQUlMIERPTU1hdHJpeCB0cmFu
c2Zvcm1Qb2ludCBtYXRyaXhbbWV0aG9kXSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdtYXRyaXhb
bWV0aG9kXSgpJywgJ21hdHJpeFttZXRob2RdJyBpcyB1bmRlZmluZWQpCi1GQUlMIERPTU1hdHJp
eCB0b0Zsb2F0MzJBcnJheSBtYXRyaXhbbWV0aG9kXSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdt
YXRyaXhbbWV0aG9kXSgpJywgJ21hdHJpeFttZXRob2RdJyBpcyB1bmRlZmluZWQpCi1GQUlMIERP
TU1hdHJpeCB0b0Zsb2F0NjRBcnJheSBtYXRyaXhbbWV0aG9kXSBpcyBub3QgYSBmdW5jdGlvbi4g
KEluICdtYXRyaXhbbWV0aG9kXSgpJywgJ21hdHJpeFttZXRob2RdJyBpcyB1bmRlZmluZWQpCitQ
QVNTIERPTU1hdHJpeCB0b0Zsb2F0MzJBcnJheSAKK1BBU1MgRE9NTWF0cml4IHRvRmxvYXQ2NEFy
cmF5IAogUEFTUyBET01NYXRyaXhSZWFkT25seSB0cmFuc2xhdGUgCiBQQVNTIERPTU1hdHJpeFJl
YWRPbmx5IHNjYWxlIAogUEFTUyBET01NYXRyaXhSZWFkT25seSBzY2FsZTNkIApAQCAtMjcsNiAr
MjcsNiBAQCBQQVNTIERPTU1hdHJpeFJlYWRPbmx5IGZsaXBYCiBQQVNTIERPTU1hdHJpeFJlYWRP
bmx5IGZsaXBZIAogUEFTUyBET01NYXRyaXhSZWFkT25seSBpbnZlcnNlIAogRkFJTCBET01NYXRy
aXhSZWFkT25seSB0cmFuc2Zvcm1Qb2ludCBtYXRyaXhbbWV0aG9kXSBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICdtYXRyaXhbbWV0aG9kXSgpJywgJ21hdHJpeFttZXRob2RdJyBpcyB1bmRlZmluZWQp
Ci1GQUlMIERPTU1hdHJpeFJlYWRPbmx5IHRvRmxvYXQzMkFycmF5IG1hdHJpeFttZXRob2RdIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ21hdHJpeFttZXRob2RdKCknLCAnbWF0cml4W21ldGhvZF0n
IGlzIHVuZGVmaW5lZCkKLUZBSUwgRE9NTWF0cml4UmVhZE9ubHkgdG9GbG9hdDY0QXJyYXkgbWF0
cml4W21ldGhvZF0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbWF0cml4W21ldGhvZF0oKScsICdt
YXRyaXhbbWV0aG9kXScgaXMgdW5kZWZpbmVkKQorUEFTUyBET01NYXRyaXhSZWFkT25seSB0b0Zs
b2F0MzJBcnJheSAKK1BBU1MgRE9NTWF0cml4UmVhZE9ubHkgdG9GbG9hdDY0QXJyYXkgCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311951</attachid>
            <date>2017-06-03 18:15:57 -0700</date>
            <delta_ts>2017-06-03 18:54:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172898-20170603181557.patch</filename>
            <type>text/plain</type>
            <size>22859</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3NzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzZmM2IzMWI3ZjMwYzE1
YzZlZDcwMzJlMjdiMmNiM2YzZjA3MzUwYS4uYTQ4N2RkNWZmYzQ4OThhNTk1YTcyMWNhNjE1ZTQy
NzRkNDY2YzQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA2LTAzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IERPTU1hdHJp
eCdzIGZyb21GbG9hdDMyQXJyYXkgLyBmcm9tRmxvYXQ2NEFycmF5ICYgdG9GbG9hdDMyQXJyYXkg
LyB0b0Zsb2F0NjRBcnJheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcyODk4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAg
ICAgICBJbXBsZW1lbnQgRE9NTWF0cml4J3MgZnJvbUZsb2F0MzJBcnJheSAvIGZyb21GbG9hdDY0
QXJyYXkgJiB0b0Zsb2F0MzJBcnJheSAvIHRvRmxvYXQ2NEFycmF5CisgICAgICAgIGFzIHBlcjoK
KyAgICAgICAgLSBodHRwczovL2RyYWZ0cy5meHRmLm9yZy9nZW9tZXRyeS8jZG9tbWF0cml4cmVh
ZG9ubHkKKworICAgICAgICBUZXN0OiBodHRwL3dwdC9nZW9tZXRyeS9ET01NYXRyaXgtZnJvbS10
by10eXBlZC1hcnJheXMuaHRtbAorCisgICAgICAgICogY3NzL0RPTU1hdHJpeC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01NYXRyaXg6OmZyb21GbG9hdDMyQXJyYXkpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NTWF0cml4Ojpmcm9tRmxvYXQ2NEFycmF5KToKKyAgICAgICAgKiBjc3MvRE9NTWF0
cml4Lmg6CisgICAgICAgICogY3NzL0RPTU1hdHJpeC5pZGw6CisgICAgICAgICogY3NzL0RPTU1h
dHJpeFJlYWRPbmx5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1hdHJpeFJlYWRPbmx5Ojpm
cm9tRmxvYXQzMkFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1hdHJpeFJlYWRPbmx5Ojpm
cm9tRmxvYXQ2NEFycmF5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTU1hdHJpeFJlYWRPbmx5Ojp0
b0Zsb2F0MzJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpET01NYXRyaXhSZWFkT25seTo6dG9G
bG9hdDY0QXJyYXkpOgorICAgICAgICAqIGNzcy9ET01NYXRyaXhSZWFkT25seS5oOgorICAgICAg
ICAqIGNzcy9ET01NYXRyaXhSZWFkT25seS5pZGw6CisKIDIwMTctMDYtMDIgIEZyZWRlcmljIFdh
bmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtNYWNdIEluY2x1ZGUgZnJhbWVzIGlu
IHRoZSBzY3JvbGxpbmcgdHJlZSB3aGVuIFNjcm9sbGluZ1RyZWVJbmNsdWRlc0ZyYW1lcz10cnVl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01NYXRyaXguY3BwCmluZGV4IGE3OTQ4ZjcyOWI3M2IyZmIxOTIzZjNjOWY5
Yzk1OGE3NjJmYzcwNTIuLjA2MWE4Y2I4MTBlZDkwNDNhMzFhYmE4NDZjODk4NTQzZjQ3MGQ4YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguY3BwCkBAIC00Myw2ICs0Myw0MCBAQCBFeGNlcHRpb25P
cjxSZWY8RE9NTWF0cml4Pj4gRE9NTWF0cml4Ojpmcm9tTWF0cml4KERPTU1hdHJpeEluaXQmJiBp
bml0KQogICAgIHJldHVybiBmcm9tTWF0cml4SGVscGVyPERPTU1hdHJpeD4oV1RGTW92ZShpbml0
KSk7CiB9CiAKK0V4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBET01NYXRyaXg6OmZyb21GbG9h
dDMyQXJyYXkoUmVmPEZsb2F0MzJBcnJheT4mJiBhcnJheTMyKQoreworICAgIGlmIChhcnJheTMy
LT5sZW5ndGgoKSA9PSA2KQorICAgICAgICByZXR1cm4gRE9NTWF0cml4OjpjcmVhdGUoVHJhbnNm
b3JtYXRpb25NYXRyaXgoYXJyYXkzMi0+aXRlbSgwKSwgYXJyYXkzMi0+aXRlbSgxKSwgYXJyYXkz
Mi0+aXRlbSgyKSwgYXJyYXkzMi0+aXRlbSgzKSwgYXJyYXkzMi0+aXRlbSg0KSwgYXJyYXkzMi0+
aXRlbSg1KSksIElzMkQ6Olllcyk7CisKKyAgICBpZiAoYXJyYXkzMi0+bGVuZ3RoKCkgPT0gMTYp
IHsKKyAgICAgICAgcmV0dXJuIERPTU1hdHJpeDo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4
KAorICAgICAgICAgICAgYXJyYXkzMi0+aXRlbSgwKSwgYXJyYXkzMi0+aXRlbSgxKSwgYXJyYXkz
Mi0+aXRlbSgyKSwgYXJyYXkzMi0+aXRlbSgzKSwKKyAgICAgICAgICAgIGFycmF5MzItPml0ZW0o
NCksIGFycmF5MzItPml0ZW0oNSksIGFycmF5MzItPml0ZW0oNiksIGFycmF5MzItPml0ZW0oNyks
CisgICAgICAgICAgICBhcnJheTMyLT5pdGVtKDgpLCBhcnJheTMyLT5pdGVtKDkpLCBhcnJheTMy
LT5pdGVtKDEwKSwgYXJyYXkzMi0+aXRlbSgxMSksCisgICAgICAgICAgICBhcnJheTMyLT5pdGVt
KDEyKSwgYXJyYXkzMi0+aXRlbSgxMyksIGFycmF5MzItPml0ZW0oMTQpLCBhcnJheTMyLT5pdGVt
KDE1KQorICAgICAgICApLCBJczJEOjpObyk7CisgICAgfQorCisgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IFR5cGVFcnJvciB9OworfQorCitFeGNlcHRpb25PcjxSZWY8RE9NTWF0cml4Pj4gRE9NTWF0
cml4Ojpmcm9tRmxvYXQ2NEFycmF5KFJlZjxGbG9hdDY0QXJyYXk+JiYgYXJyYXk2NCkKK3sKKyAg
ICBpZiAoYXJyYXk2NC0+bGVuZ3RoKCkgPT0gNikKKyAgICAgICAgcmV0dXJuIERPTU1hdHJpeDo6
Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0cml4KGFycmF5NjQtPml0ZW0oMCksIGFycmF5NjQtPml0
ZW0oMSksIGFycmF5NjQtPml0ZW0oMiksIGFycmF5NjQtPml0ZW0oMyksIGFycmF5NjQtPml0ZW0o
NCksIGFycmF5NjQtPml0ZW0oNSkpLCBJczJEOjpZZXMpOworCisgICAgaWYgKGFycmF5NjQtPmxl
bmd0aCgpID09IDE2KSB7CisgICAgICAgIHJldHVybiBET01NYXRyaXg6OmNyZWF0ZShUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgKKyAgICAgICAgICAgIGFycmF5NjQtPml0ZW0oMCksIGFycmF5NjQtPml0
ZW0oMSksIGFycmF5NjQtPml0ZW0oMiksIGFycmF5NjQtPml0ZW0oMyksCisgICAgICAgICAgICBh
cnJheTY0LT5pdGVtKDQpLCBhcnJheTY0LT5pdGVtKDUpLCBhcnJheTY0LT5pdGVtKDYpLCBhcnJh
eTY0LT5pdGVtKDcpLAorICAgICAgICAgICAgYXJyYXk2NC0+aXRlbSg4KSwgYXJyYXk2NC0+aXRl
bSg5KSwgYXJyYXk2NC0+aXRlbSgxMCksIGFycmF5NjQtPml0ZW0oMTEpLAorICAgICAgICAgICAg
YXJyYXk2NC0+aXRlbSgxMiksIGFycmF5NjQtPml0ZW0oMTMpLCBhcnJheTY0LT5pdGVtKDE0KSwg
YXJyYXk2NC0+aXRlbSgxNSkKKyAgICAgICAgKSwgSXMyRDo6Tm8pOworICAgIH0KKworICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKK30KKwogLy8gaHR0cHM6Ly9kcmFmdHMuZnh0
Zi5vcmcvZ2VvbWV0cnkvI2RvbS1kb21tYXRyaXgtbXVsdGlwbHlzZWxmCiBFeGNlcHRpb25PcjxS
ZWY8RE9NTWF0cml4Pj4gRE9NTWF0cml4OjptdWx0aXBseVNlbGYoRE9NTWF0cml4SW5pdCYmIG90
aGVyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5oIGIvU291
cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5oCmluZGV4IDRkYmZkZDk1NmMzMDgxODIyMGZmNTcw
ZjU5MWY4YmZmYTNiNDFiMjMuLjJmMzg5NzAzMmU0ZmQ1YWQ5ODQ2MjFmMDYwMDI5M2NmMzc3ZWJj
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXguaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmgKQEAgLTUyLDYgKzUyLDkgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBmcm9tTWF0cml4KERPTU1hdHJp
eEluaXQmJik7CiAKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IGZyb21G
bG9hdDMyQXJyYXkoUmVmPEZsb2F0MzJBcnJheT4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9y
PFJlZjxET01NYXRyaXg+PiBmcm9tRmxvYXQ2NEFycmF5KFJlZjxGbG9hdDY0QXJyYXk+JiYpOwor
CiAgICAgRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeD4+IG11bHRpcGx5U2VsZihET01NYXRyaXhJ
bml0JiYgb3RoZXIpOwogICAgIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXg+PiBwcmVNdWx0aXBs
eVNlbGYoRE9NTWF0cml4SW5pdCYmIG90aGVyKTsKICAgICBSZWY8RE9NTWF0cml4PiB0cmFuc2xh
dGVTZWxmKGRvdWJsZSB0eCA9IDAsIGRvdWJsZSB0eSA9IDAsIGRvdWJsZSB0eiA9IDApOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvRE9NTWF0cml4LmlkbAppbmRleCA2Y2ZlNTQxOTMyNDYzYjQ1ZThlOTY3Njk1NzdhMDU5
NDU3YjUwNDFlLi5iOWNmZGNjZmE4YmJjZGM4N2QwZDA3MGRjNTA2NDIzNzY0NTI0YzE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4LmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvRE9NTWF0cml4LmlkbApAQCAtMzIsOCArMzIsOCBAQAogICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUKICBdIGludGVyZmFjZSBET01NYXRyaXggOiBET01NYXRyaXhSZWFkT25s
eSB7CiAgICAgW01heVRocm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXgg
ZnJvbU1hdHJpeChvcHRpb25hbCBET01NYXRyaXhJbml0IG90aGVyKTsKLSAgICAvLyBbTmV3T2Jq
ZWN0XSBzdGF0aWMgRE9NTWF0cml4IGZyb21GbG9hdDMyQXJyYXkoRmxvYXQzMkFycmF5IGFycmF5
MzIpOyAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAgLy8gW05ld09iamVjdF0gc3RhdGlj
IERPTU1hdHJpeCBmcm9tRmxvYXQ2NEFycmF5KEZsb2F0NjRBcnJheSBhcnJheTY0KTsgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0g
c3RhdGljIERPTU1hdHJpeCBmcm9tRmxvYXQzMkFycmF5KEZsb2F0MzJBcnJheSBhcnJheTMyKTsK
KyAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeCBmcm9t
RmxvYXQ2NEFycmF5KEZsb2F0NjRBcnJheSBhcnJheTY0KTsKIAogICAgIC8vIFRoZXNlIGF0dHJp
YnV0ZXMgYXJlIHNpbXBsZSBhbGlhc2VzIGZvciBjZXJ0YWluIGVsZW1lbnRzIG9mIHRoZSA0eDQg
bWF0cml4CiAgICAgaW5oZXJpdCBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBhOyAvLyBB
bGlhcyBmb3IgbTExLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJl
YWRPbmx5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5jcHAKaW5k
ZXggYzhiMzg0ODYwNDY0NTA5NzE0MmUxZWU2MzQ0NGQ5MWNjZTNiODY0Ni4uODJkYTQwYjQ3MDk5
YjZkMjBiZGQ1YmI1MzQ0YmMyMzU1MWZiMGNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL0RPTU1hdHJpeFJlYWRPbmx5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0
cml4UmVhZE9ubHkuY3BwCkBAIC0zMiw2ICszMiw5IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29k
ZS5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydGllcy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybUZ1
bmN0aW9ucy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld0lubGluZXMuaD4KKyNpbmNsdWRlIDxoZWFwL0hlYXBJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTQs
NiArMTE3LDQwIEBAIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXhSZWFkT25seT4+IERPTU1hdHJp
eFJlYWRPbmx5Ojpmcm9tTWF0cml4KERPTU1hdHJpeEluaXQmCiAgICAgcmV0dXJuIGZyb21NYXRy
aXhIZWxwZXI8RE9NTWF0cml4UmVhZE9ubHk+KFdURk1vdmUoaW5pdCkpOwogfQogCitFeGNlcHRp
b25PcjxSZWY8RE9NTWF0cml4UmVhZE9ubHk+PiBET01NYXRyaXhSZWFkT25seTo6ZnJvbUZsb2F0
MzJBcnJheShSZWY8RmxvYXQzMkFycmF5PiYmIGFycmF5MzIpCit7CisgICAgaWYgKGFycmF5MzIt
Pmxlbmd0aCgpID09IDYpCisgICAgICAgIHJldHVybiBET01NYXRyaXhSZWFkT25seTo6Y3JlYXRl
KFRyYW5zZm9ybWF0aW9uTWF0cml4KGFycmF5MzItPml0ZW0oMCksIGFycmF5MzItPml0ZW0oMSks
IGFycmF5MzItPml0ZW0oMiksIGFycmF5MzItPml0ZW0oMyksIGFycmF5MzItPml0ZW0oNCksIGFy
cmF5MzItPml0ZW0oNSkpLCBJczJEOjpZZXMpOworCisgICAgaWYgKGFycmF5MzItPmxlbmd0aCgp
ID09IDE2KSB7CisgICAgICAgIHJldHVybiBET01NYXRyaXhSZWFkT25seTo6Y3JlYXRlKFRyYW5z
Zm9ybWF0aW9uTWF0cml4KAorICAgICAgICAgICAgYXJyYXkzMi0+aXRlbSgwKSwgYXJyYXkzMi0+
aXRlbSgxKSwgYXJyYXkzMi0+aXRlbSgyKSwgYXJyYXkzMi0+aXRlbSgzKSwKKyAgICAgICAgICAg
IGFycmF5MzItPml0ZW0oNCksIGFycmF5MzItPml0ZW0oNSksIGFycmF5MzItPml0ZW0oNiksIGFy
cmF5MzItPml0ZW0oNyksCisgICAgICAgICAgICBhcnJheTMyLT5pdGVtKDgpLCBhcnJheTMyLT5p
dGVtKDkpLCBhcnJheTMyLT5pdGVtKDEwKSwgYXJyYXkzMi0+aXRlbSgxMSksCisgICAgICAgICAg
ICBhcnJheTMyLT5pdGVtKDEyKSwgYXJyYXkzMi0+aXRlbSgxMyksIGFycmF5MzItPml0ZW0oMTQp
LCBhcnJheTMyLT5pdGVtKDE1KQorICAgICAgICApLCBJczJEOjpObyk7CisgICAgfQorCisgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworfQorCitFeGNlcHRpb25PcjxSZWY8RE9N
TWF0cml4UmVhZE9ubHk+PiBET01NYXRyaXhSZWFkT25seTo6ZnJvbUZsb2F0NjRBcnJheShSZWY8
RmxvYXQ2NEFycmF5PiYmIGFycmF5NjQpCit7CisgICAgaWYgKGFycmF5NjQtPmxlbmd0aCgpID09
IDYpCisgICAgICAgIHJldHVybiBET01NYXRyaXhSZWFkT25seTo6Y3JlYXRlKFRyYW5zZm9ybWF0
aW9uTWF0cml4KGFycmF5NjQtPml0ZW0oMCksIGFycmF5NjQtPml0ZW0oMSksIGFycmF5NjQtPml0
ZW0oMiksIGFycmF5NjQtPml0ZW0oMyksIGFycmF5NjQtPml0ZW0oNCksIGFycmF5NjQtPml0ZW0o
NSkpLCBJczJEOjpZZXMpOworCisgICAgaWYgKGFycmF5NjQtPmxlbmd0aCgpID09IDE2KSB7Cisg
ICAgICAgIHJldHVybiBET01NYXRyaXhSZWFkT25seTo6Y3JlYXRlKFRyYW5zZm9ybWF0aW9uTWF0
cml4KAorICAgICAgICAgICAgYXJyYXk2NC0+aXRlbSgwKSwgYXJyYXk2NC0+aXRlbSgxKSwgYXJy
YXk2NC0+aXRlbSgyKSwgYXJyYXk2NC0+aXRlbSgzKSwKKyAgICAgICAgICAgIGFycmF5NjQtPml0
ZW0oNCksIGFycmF5NjQtPml0ZW0oNSksIGFycmF5NjQtPml0ZW0oNiksIGFycmF5NjQtPml0ZW0o
NyksCisgICAgICAgICAgICBhcnJheTY0LT5pdGVtKDgpLCBhcnJheTY0LT5pdGVtKDkpLCBhcnJh
eTY0LT5pdGVtKDEwKSwgYXJyYXk2NC0+aXRlbSgxMSksCisgICAgICAgICAgICBhcnJheTY0LT5p
dGVtKDEyKSwgYXJyYXk2NC0+aXRlbSgxMyksIGFycmF5NjQtPml0ZW0oMTQpLCBhcnJheTY0LT5p
dGVtKDE1KQorICAgICAgICApLCBJczJEOjpObyk7CisgICAgfQorCisgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IFR5cGVFcnJvciB9OworfQorCiBib29sIERPTU1hdHJpeFJlYWRPbmx5Ojppc0lkZW50
aXR5KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9tYXRyaXguaXNJZGVudGl0eSgpOwpAQCAtMjQ4
LDYgKzI4NSw1OCBAQCBSZWY8RE9NTWF0cml4PiBET01NYXRyaXhSZWFkT25seTo6aW52ZXJzZSgp
IGNvbnN0CiAgICAgcmV0dXJuIG1hdHJpeC0+aW52ZXJ0U2VsZigpOwogfQogCitFeGNlcHRpb25P
cjxSZWY8RmxvYXQzMkFycmF5Pj4gRE9NTWF0cml4UmVhZE9ubHk6OnRvRmxvYXQzMkFycmF5KCkg
Y29uc3QKK3sKKyAgICBhdXRvIGFycmF5MzIgPSBGbG9hdDMyQXJyYXk6OmNyZWF0ZVVuaW5pdGlh
bGl6ZWQoMTYpOworICAgIGlmICghYXJyYXkzMikKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJPdXQgb2YgbWVtb3J5IikgfTsKKworICAgIHVu
c2lnbmVkIGluZGV4ID0gMDsKKyAgICBhcnJheTMyLT5zZXQoaW5kZXgrKywgbV9tYXRyaXgubTEx
KCkpOworICAgIGFycmF5MzItPnNldChpbmRleCsrLCBtX21hdHJpeC5tMTIoKSk7CisgICAgYXJy
YXkzMi0+c2V0KGluZGV4KyssIG1fbWF0cml4Lm0xMygpKTsKKyAgICBhcnJheTMyLT5zZXQoaW5k
ZXgrKywgbV9tYXRyaXgubTE0KCkpOworICAgIGFycmF5MzItPnNldChpbmRleCsrLCBtX21hdHJp
eC5tMjEoKSk7CisgICAgYXJyYXkzMi0+c2V0KGluZGV4KyssIG1fbWF0cml4Lm0yMigpKTsKKyAg
ICBhcnJheTMyLT5zZXQoaW5kZXgrKywgbV9tYXRyaXgubTIzKCkpOworICAgIGFycmF5MzItPnNl
dChpbmRleCsrLCBtX21hdHJpeC5tMjQoKSk7CisgICAgYXJyYXkzMi0+c2V0KGluZGV4KyssIG1f
bWF0cml4Lm0zMSgpKTsKKyAgICBhcnJheTMyLT5zZXQoaW5kZXgrKywgbV9tYXRyaXgubTMyKCkp
OworICAgIGFycmF5MzItPnNldChpbmRleCsrLCBtX21hdHJpeC5tMzMoKSk7CisgICAgYXJyYXkz
Mi0+c2V0KGluZGV4KyssIG1fbWF0cml4Lm0zNCgpKTsKKyAgICBhcnJheTMyLT5zZXQoaW5kZXgr
KywgbV9tYXRyaXgubTQxKCkpOworICAgIGFycmF5MzItPnNldChpbmRleCsrLCBtX21hdHJpeC5t
NDIoKSk7CisgICAgYXJyYXkzMi0+c2V0KGluZGV4KyssIG1fbWF0cml4Lm00MygpKTsKKyAgICBh
cnJheTMyLT5zZXQoaW5kZXgsIG1fbWF0cml4Lm00NCgpKTsKKyAgICByZXR1cm4gYXJyYXkzMi5y
ZWxlYXNlTm9uTnVsbCgpOworfQorCitFeGNlcHRpb25PcjxSZWY8RmxvYXQ2NEFycmF5Pj4gRE9N
TWF0cml4UmVhZE9ubHk6OnRvRmxvYXQ2NEFycmF5KCkgY29uc3QKK3sKKyAgICBhdXRvIGFycmF5
NjQgPSBGbG9hdDY0QXJyYXk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoMTYpOworICAgIGlmICghYXJy
YXk2NCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFVua25vd25FcnJvciwgQVNDSUlMaXRl
cmFsKCJPdXQgb2YgbWVtb3J5IikgfTsKKworICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICBh
cnJheTY0LT5zZXQoaW5kZXgrKywgbV9tYXRyaXgubTExKCkpOworICAgIGFycmF5NjQtPnNldChp
bmRleCsrLCBtX21hdHJpeC5tMTIoKSk7CisgICAgYXJyYXk2NC0+c2V0KGluZGV4KyssIG1fbWF0
cml4Lm0xMygpKTsKKyAgICBhcnJheTY0LT5zZXQoaW5kZXgrKywgbV9tYXRyaXgubTE0KCkpOwor
ICAgIGFycmF5NjQtPnNldChpbmRleCsrLCBtX21hdHJpeC5tMjEoKSk7CisgICAgYXJyYXk2NC0+
c2V0KGluZGV4KyssIG1fbWF0cml4Lm0yMigpKTsKKyAgICBhcnJheTY0LT5zZXQoaW5kZXgrKywg
bV9tYXRyaXgubTIzKCkpOworICAgIGFycmF5NjQtPnNldChpbmRleCsrLCBtX21hdHJpeC5tMjQo
KSk7CisgICAgYXJyYXk2NC0+c2V0KGluZGV4KyssIG1fbWF0cml4Lm0zMSgpKTsKKyAgICBhcnJh
eTY0LT5zZXQoaW5kZXgrKywgbV9tYXRyaXgubTMyKCkpOworICAgIGFycmF5NjQtPnNldChpbmRl
eCsrLCBtX21hdHJpeC5tMzMoKSk7CisgICAgYXJyYXk2NC0+c2V0KGluZGV4KyssIG1fbWF0cml4
Lm0zNCgpKTsKKyAgICBhcnJheTY0LT5zZXQoaW5kZXgrKywgbV9tYXRyaXgubTQxKCkpOworICAg
IGFycmF5NjQtPnNldChpbmRleCsrLCBtX21hdHJpeC5tNDIoKSk7CisgICAgYXJyYXk2NC0+c2V0
KGluZGV4KyssIG1fbWF0cml4Lm00MygpKTsKKyAgICBhcnJheTY0LT5zZXQoaW5kZXgsIG1fbWF0
cml4Lm00NCgpKTsKKyAgICByZXR1cm4gYXJyYXk2NC5yZWxlYXNlTm9uTnVsbCgpOworfQorCiAv
LyBodHRwczovL2RyYWZ0cy5meHRmLm9yZy9nZW9tZXRyeS8jZG9tLWRvbW1hdHJpeHJlYWRvbmx5
LXN0cmluZ2lmaWVyCiBFeGNlcHRpb25PcjxTdHJpbmc+IERPTU1hdHJpeFJlYWRPbmx5Ojp0b1N0
cmluZygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NTWF0cml4
UmVhZE9ubHkuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5oCmluZGV4
IGE5YjRkZGY3NGFkZTg3YjVjMTk3Mjk5ZGJjYzI2MWQxODY5YWUxMjEuLmNkMzcyMjExYjI0NzQ3
MWNlODU5ZjBmM2NmNDIzZjY0ODYzNGNkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9ET01NYXRyaXhSZWFkT25seS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhS
ZWFkT25seS5oCkBAIC0yOSw2ICsyOSw4IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uT3IuaCIKICNp
bmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRmxvYXQzMkFycmF5Lmg+CisjaW5jbHVkZSA8cnVudGlt
ZS9GbG9hdDY0QXJyYXkuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNjMsNiArNjUsOSBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPERPTU1hdHJpeFJlYWRPbmx5
Pj4gZnJvbU1hdHJpeChET01NYXRyaXhJbml0JiYpOwogCisgICAgc3RhdGljIEV4Y2VwdGlvbk9y
PFJlZjxET01NYXRyaXhSZWFkT25seT4+IGZyb21GbG9hdDMyQXJyYXkoUmVmPEZsb2F0MzJBcnJh
eT4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxET01NYXRyaXhSZWFkT25seT4+IGZy
b21GbG9hdDY0QXJyYXkoUmVmPEZsb2F0NjRBcnJheT4mJik7CisKICAgICBkb3VibGUgYSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWF0cml4LmEoKTsgfQogICAgIGRvdWJsZSBiKCkgY29uc3QgeyByZXR1
cm4gbV9tYXRyaXguYigpOyB9CiAgICAgZG91YmxlIGMoKSBjb25zdCB7IHJldHVybiBtX21hdHJp
eC5jKCk7IH0KQEAgLTEwNiw2ICsxMTEsOSBAQCBwdWJsaWM6CiAgICAgUmVmPERPTU1hdHJpeD4g
c2tld1koZG91YmxlIHN5ID0gMCk7IC8vIEFuZ2xlIGlzIGluIGRlZ3JlZXMuCiAgICAgUmVmPERP
TU1hdHJpeD4gaW52ZXJzZSgpIGNvbnN0OwogCisgICAgRXhjZXB0aW9uT3I8UmVmPEZsb2F0MzJB
cnJheT4+IHRvRmxvYXQzMkFycmF5KCkgY29uc3Q7CisgICAgRXhjZXB0aW9uT3I8UmVmPEZsb2F0
NjRBcnJheT4+IHRvRmxvYXQ2NEFycmF5KCkgY29uc3Q7CisKICAgICBFeGNlcHRpb25PcjxTdHJp
bmc+IHRvU3RyaW5nKCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9N
TWF0cml4UmVhZE9ubHkuaWRsCmluZGV4IDdkNmQyMWE2NThiODNlNzc1YjJlMTgwOTBmYjk5OGZk
ZjY5NzU4NDQuLjNjZjBlNDY0ZGExNzMwOGIxZDEwNzcyNWNjZTU2ZjBiOGJlMDJhZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01NYXRyaXhSZWFkT25seS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0RPTU1hdHJpeFJlYWRPbmx5LmlkbApAQCAtMzEsOCArMzEsOCBAQAog
ICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUKIF0gaW50ZXJmYWNlIERPTU1hdHJpeFJlYWRP
bmx5IHsKICAgICBbTWF5VGhyb3dFeGNlcHRpb24sIE5ld09iamVjdF0gc3RhdGljIERPTU1hdHJp
eFJlYWRPbmx5IGZyb21NYXRyaXgob3B0aW9uYWwgRE9NTWF0cml4SW5pdCBvdGhlcik7Ci0gICAg
Ly8gW05ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeFJlYWRPbmx5IGZyb21GbG9hdDMyQXJyYXko
RmxvYXQzMkFycmF5IGFycmF5MzIpOyAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAgLy8g
W05ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeFJlYWRPbmx5IGZyb21GbG9hdDY0QXJyYXkoRmxv
YXQ2NEFycmF5IGFycmF5NjQpOyAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgW01heVRo
cm93RXhjZXB0aW9uLCBOZXdPYmplY3RdIHN0YXRpYyBET01NYXRyaXhSZWFkT25seSBmcm9tRmxv
YXQzMkFycmF5KEZsb2F0MzJBcnJheSBhcnJheTMyKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb24s
IE5ld09iamVjdF0gc3RhdGljIERPTU1hdHJpeFJlYWRPbmx5IGZyb21GbG9hdDY0QXJyYXkoRmxv
YXQ2NEFycmF5IGFycmF5NjQpOwogCiAgICAgLy8gVGhlc2UgYXR0cmlidXRlcyBhcmUgc2ltcGxl
IGFsaWFzZXMgZm9yIGNlcnRhaW4gZWxlbWVudHMgb2YgdGhlIDR4NCBtYXRyaXgKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBhOyAvLyBBbGlhcyBmb3IgbTExLgpA
QCAtOTMsOCArOTMsOCBAQAogICAgIFtOZXdPYmplY3RdIERPTU1hdHJpeCBpbnZlcnNlKCk7CiAK
ICAgICAvLyBbTmV3T2JqZWN0XSBET01Qb2ludCB0cmFuc2Zvcm1Qb2ludChvcHRpb25hbCBET01Q
b2ludEluaXQgcG9pbnQpOyAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCi0gICAgLy8gW05ld09i
amVjdF0gRmxvYXQzMkFycmF5IHRvRmxvYXQzMkFycmF5KCk7IC8vIEZJWE1FOiBJbXBsZW1lbnQg
dGhpcy4KLSAgICAvLyBbTmV3T2JqZWN0XSBGbG9hdDY0QXJyYXkgdG9GbG9hdDY0QXJyYXkoKTsg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRmxvYXQz
MkFycmF5IHRvRmxvYXQzMkFycmF5KCk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSBGbG9hdDY0
QXJyYXkgdG9GbG9hdDY0QXJyYXkoKTsKIAogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gRE9NU3Ry
aW5nIHRvU3RyaW5nKCk7IC8vIEZJWE1FOiBTaG91bGQgYmUgc3RyaW5naWZpZXI7IG9uY2UgaXQg
aXMgc3VwcG9ydGVkLgogICAgIHNlcmlhbGl6ZXIgPSB7IGF0dHJpYnV0ZSB9OwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRm
NGMyMDRiYmI2OWRmZjNjMjYxOTM4N2I2ZmYwZWU4ODYzOWM4MGMuLmNmZjIxZDA2YjEzZWNjOTIz
Yjc1ZjE4MTViMjQ1MGFlNzNkMTc5MjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNy0wNi0w
MyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBE
T01NYXRyaXgncyBmcm9tRmxvYXQzMkFycmF5IC8gZnJvbUZsb2F0NjRBcnJheSAmIHRvRmxvYXQz
MkFycmF5IC8gdG9GbG9hdDY0QXJyYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3Mjg5OAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcu
CisKKyAgICAgICAgQWRkIGxheW91dCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgICogaHR0cC93
cHQvZ2VvbWV0cnkvRE9NTWF0cml4LWZyb20tdG8tdHlwZWQtYXJyYXlzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC93cHQvZ2VvbWV0cnkvRE9NTWF0cml4LWZyb20tdG8tdHlw
ZWQtYXJyYXlzLmh0bWw6IEFkZGVkLgorCiAyMDE3LTA2LTAyICBNYXR0IExld2lzICA8amxld2lz
M0BhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZWQgdGVzdCBleHBlY3RhdGlvbiBmb3IgaHR0cC90
ZXN0cy9wcmVsb2FkL3ZpZXdwb3J0L21ldGEtdmlld3BvcnQtbGluay1oZWFkZXJzLnBocCB0byBj
b3JyZWN0IGZpbGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwppbmRleCA4ZDMzNTgxZTNi
N2M2NzY1OTI2YzAxY2Y0ZDBmNmE3N2QzNWVlYmY1Li4xNzgyMjgyYTQ0MjhkMGI1MDEzODQ0MTcx
OWZmZjVjYTA0MDFmZTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxNy0wNi0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisg
ICAgICAgIEltcGxlbWVudCBET01NYXRyaXgncyBmcm9tRmxvYXQzMkFycmF5IC8gZnJvbUZsb2F0
NjRBcnJheSAmIHRvRmxvYXQzMkFycmF5IC8gdG9GbG9hdDY0QXJyYXkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3Mjg5OAorCisgICAgICAgIFJldmll
d2VkIGJ5IFNhbSBXZWluaWcuCisKKyAgICAgICAgUmViYXNlbGluZSB3ZWItcGxhdGZvcm0tdGVz
dCBub3cgdGhhdCBtb3JlIGNoZWNrcyBhcmUgcGFzc2luZy4KKworICAgICAgICAqIHdlYi1wbGF0
Zm9ybS10ZXN0cy9jc3MvZ2VvbWV0cnktMS9ET01NYXRyaXgtbmV3b2JqZWN0LWV4cGVjdGVkLnR4
dDoKKwogMjAxNy0wNi0wMiAgSmF2aWVyIEZlcm5hbmRleiAgPGpmZXJuYW5kZXpAaWdhbGlhLmNv
bT4KIAogICAgICAgICBbY3NzLWdyaWRdIE1hcmdpbiB3cm9uZyBhcHBsaWVkIHdoZW4gc3RyZXRj
aGluZyBhbiBvcnRob2dvbmFsIGl0ZW0gaW4gZml4ZWQgc2l6ZSB0cmFjawpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvZ2VvbWV0cnkvRE9NTWF0cml4LWZyb20tdG8tdHlwZWQtYXJy
YXlzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2dlb21ldHJ5L0RPTU1hdHJp
eC1mcm9tLXRvLXR5cGVkLWFycmF5cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2YwZDA3Njg4
ZWU1NzQ1M2VjODhjNDE0MDc2MGMzN2FhN2YyZjY4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L2dlb21ldHJ5L0RPTU1hdHJpeC1mcm9tLXRvLXR5cGVkLWFycmF5cy1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMiBAQAorCitQQVNTIERPTU1hdHJpeFJlYWRPbmx5LmZy
b21GbG9hdDMyQXJyYXkgKGVycm9yIGNhc2VzKSAKK1BBU1MgRE9NTWF0cml4UmVhZE9ubHkuZnJv
bUZsb2F0MzJBcnJheSAKK1BBU1MgRE9NTWF0cml4UmVhZE9ubHkuZnJvbUZsb2F0NjRBcnJheSAo
ZXJyb3IgY2FzZXMpIAorUEFTUyBET01NYXRyaXhSZWFkT25seS5mcm9tRmxvYXQ2NEFycmF5IAor
UEFTUyBET01NYXRyaXguZnJvbUZsb2F0MzJBcnJheSAoZXJyb3IgY2FzZXMpIAorUEFTUyBET01N
YXRyaXguZnJvbUZsb2F0MzJBcnJheSAKK1BBU1MgRE9NTWF0cml4LmZyb21GbG9hdDY0QXJyYXkg
KGVycm9yIGNhc2VzKSAKK1BBU1MgRE9NTWF0cml4LmZyb21GbG9hdDY0QXJyYXkgCitQQVNTIERP
TU1hdHJpeFJlYWRvbmx5LnRvRmxvYXQzMkFycmF5IAorUEFTUyBET01NYXRyaXhSZWFkb25seS50
b0Zsb2F0NjRBcnJheSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvZ2VvbWV0
cnkvRE9NTWF0cml4LWZyb20tdG8tdHlwZWQtYXJyYXlzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9nZW9tZXRyeS9ET01NYXRyaXgtZnJvbS10by10eXBlZC1hcnJheXMuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zNTk3ZDZmOTQ2OGQ3ZGU0OTViZTUwMzhlMmRmYWIzNThjOTg4ZjI2Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvZ2VvbWV0cnkvRE9NTWF0cml4LWZyb20tdG8t
dHlwZWQtYXJyYXlzLmh0bWwKQEAgLTAsMCArMSw4NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPkdlb21ldHJ5IEludGVyZmFjZXM6IERPTU1hdHJpeCBjb252ZXJz
aW9uIHRvIGFuZCBmcm9tIHR5cGVkIGFycmF5czwvdGl0bGU+Cis8bGluayBocmVmPSJtYWlsdG86
Y2R1bWV6QGFwcGxlLmNvbSIgcmVsPSJhdXRob3IiIHRpdGxlPSJDaHJpcyBEdW1leiI+Cis8bGlu
ayBocmVmPSJodHRwczovL2RyYWZ0cy5meHRmLm9yZy9nZW9tZXRyeS8jZG9tbWF0cml4cmVhZG9u
bHkiIHJlbD0iaGVscCI+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citmb3IgKGxldCBtYXRyaXggb2Yg
WyJET01NYXRyaXhSZWFkT25seSIsICJET01NYXRyaXgiXSkgeworCisgICAgdGVzdChmdW5jdGlv
bigpIHsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7IHdpbmRv
d1ttYXRyaXhdLmZyb21GbG9hdDMyQXJyYXkoKSB9LCAiTm8gcGFyYW1ldGVyIik7CisgICAgICAg
IGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geyB3aW5kb3dbbWF0cml4XS5mcm9t
RmxvYXQzMkFycmF5KG51bGwpIH0sICJQYXNzaW5nIG51bGwiKTsKKyAgICAgICAgYXNzZXJ0X3Ro
cm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7IHdpbmRvd1ttYXRyaXhdLmZyb21GbG9hdDMyQXJy
YXkobmV3IEZsb2F0NjRBcnJheSgpKSB9LCAiQmFkIHBhcmFtZXRlciIpOworICAgICAgICBhc3Nl
cnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsgd2luZG93W21hdHJpeF0uZnJvbUZsb2F0
MzJBcnJheShuZXcgRmxvYXQzMkFycmF5KCkpIH0sICJFbXB0eSBGbG9hdDMyQXJyYXkiKTsKKyAg
ICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVycm9yLCAoKSA9PiB7IHdpbmRvd1ttYXRyaXhd
LmZyb21GbG9hdDMyQXJyYXkobmV3IEZsb2F0MzJBcnJheShbMSwgMl0pKSB9LCAiRmxvYXQzMkFy
cmF5IHdpdGggdG9vIGZldyBpdGVtcyIpOworICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBl
RXJyb3IsICgpID0+IHsgd2luZG93W21hdHJpeF0uZnJvbUZsb2F0MzJBcnJheShuZXcgRmxvYXQz
MkFycmF5KFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1
LCAxNiwgMTddKSkgfSwgIkZsb2F0MzJBcnJheSB3aXRoIHRvbyBtYW55IGl0ZW1zIik7CisgICAg
fSwgbWF0cml4ICsgIi5mcm9tRmxvYXQzMkFycmF5IChlcnJvciBjYXNlcykiKTsKKworICAgIHRl
c3QoZnVuY3Rpb24oKSB7CisgICAgICAgIGxldCBtYXRyaXgyZCA9IHdpbmRvd1ttYXRyaXhdLmZy
b21GbG9hdDMyQXJyYXkobmV3IEZsb2F0MzJBcnJheShbMS41LCAyLjUsIDMuNSwgNC41LCA1LjUs
IDYuNV0pKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhtYXRyaXgyZC5fX3Byb3RvX18sIHdpbmRv
d1ttYXRyaXhdLnByb3RvdHlwZSk7CisgICAgICAgIGFzc2VydF9lcXVhbHMobWF0cml4MmQudG9T
dHJpbmcoKSwgIm1hdHJpeCgxLjUsIDIuNSwgMy41LCA0LjUsIDUuNSwgNi41KSIpOworCisgICAg
ICAgIGxldCBtYXRyaXgzZCA9IHdpbmRvd1ttYXRyaXhdLmZyb21GbG9hdDMyQXJyYXkobmV3IEZs
b2F0MzJBcnJheShbMS41LCAyLjUsIDMuNSwgNC41LCA1LjUsIDYuNSwgNy41LCA4LjUsIDkuNSwg
MTAuNSwgMTEuNSwgMTIuNSwgMTMuNSwgMTQuNSwgMTUuNSwgMTYuNV0pKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhtYXRyaXgzZC5fX3Byb3RvX18sIHdpbmRvd1ttYXRyaXhdLnByb3RvdHlwZSk7
CisgICAgICAgIGFzc2VydF9lcXVhbHMobWF0cml4M2QudG9TdHJpbmcoKSwgIm1hdHJpeDNkKDEu
NSwgMi41LCAzLjUsIDQuNSwgNS41LCA2LjUsIDcuNSwgOC41LCA5LjUsIDEwLjUsIDExLjUsIDEy
LjUsIDEzLjUsIDE0LjUsIDE1LjUsIDE2LjUpIik7CisgICAgfSwgbWF0cml4ICsgIi5mcm9tRmxv
YXQzMkFycmF5Iik7CisKKyAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdGhy
b3dzKG5ldyBUeXBlRXJyb3IsICgpID0+IHsgd2luZG93W21hdHJpeF0uZnJvbUZsb2F0NjRBcnJh
eSgpIH0sICJObyBwYXJhbWV0ZXIiKTsKKyAgICAgICAgYXNzZXJ0X3Rocm93cyhuZXcgVHlwZUVy
cm9yLCAoKSA9PiB7IHdpbmRvd1ttYXRyaXhdLmZyb21GbG9hdDY0QXJyYXkobnVsbCkgfSwgIlBh
c3NpbmcgbnVsbCIpOworICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBUeXBlRXJyb3IsICgpID0+
IHsgd2luZG93W21hdHJpeF0uZnJvbUZsb2F0NjRBcnJheShuZXcgRmxvYXQzMkFycmF5KCkpIH0s
ICJCYWQgcGFyYW1ldGVyIik7CisgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwg
KCkgPT4geyB3aW5kb3dbbWF0cml4XS5mcm9tRmxvYXQ2NEFycmF5KG5ldyBGbG9hdDY0QXJyYXko
KSkgfSwgIkVtcHR5IEZsb2F0NjRBcnJheSIpOworICAgICAgICBhc3NlcnRfdGhyb3dzKG5ldyBU
eXBlRXJyb3IsICgpID0+IHsgd2luZG93W21hdHJpeF0uZnJvbUZsb2F0NjRBcnJheShuZXcgRmxv
YXQ2NEFycmF5KFsxLCAyXSkpIH0sICJGbG9hdDY0QXJyYXkgd2l0aCB0b28gZmV3IGl0ZW1zIik7
CisgICAgICAgIGFzc2VydF90aHJvd3MobmV3IFR5cGVFcnJvciwgKCkgPT4geyB3aW5kb3dbbWF0
cml4XS5mcm9tRmxvYXQ2NEFycmF5KG5ldyBGbG9hdDY0QXJyYXkoWzEsIDIsIDMsIDQsIDUsIDYs
IDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxN10pKSB9LCAiRmxvYXQ2NEFy
cmF5IHdpdGggdG9vIG1hbnkgaXRlbXMiKTsKKyAgICB9LCBtYXRyaXggKyAiLmZyb21GbG9hdDY0
QXJyYXkgKGVycm9yIGNhc2VzKSIpOworCisgICAgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAg
bGV0IG1hdHJpeDJkID0gd2luZG93W21hdHJpeF0uZnJvbUZsb2F0NjRBcnJheShuZXcgRmxvYXQ2
NEFycmF5KFsxLjUsIDIuNSwgMy41LCA0LjUsIDUuNSwgNi41XSkpOworICAgICAgICBhc3NlcnRf
ZXF1YWxzKG1hdHJpeDJkLl9fcHJvdG9fXywgd2luZG93W21hdHJpeF0ucHJvdG90eXBlKTsKKyAg
ICAgICAgYXNzZXJ0X2VxdWFscyhtYXRyaXgyZC50b1N0cmluZygpLCAibWF0cml4KDEuNSwgMi41
LCAzLjUsIDQuNSwgNS41LCA2LjUpIik7CisKKyAgICAgICAgbGV0IG1hdHJpeDNkID0gd2luZG93
W21hdHJpeF0uZnJvbUZsb2F0NjRBcnJheShuZXcgRmxvYXQ2NEFycmF5KFsxLjUsIDIuNSwgMy41
LCA0LjUsIDUuNSwgNi41LCA3LjUsIDguNSwgOS41LCAxMC41LCAxMS41LCAxMi41LCAxMy41LCAx
NC41LCAxNS41LCAxNi41XSkpOworICAgICAgICBhc3NlcnRfZXF1YWxzKG1hdHJpeDNkLl9fcHJv
dG9fXywgd2luZG93W21hdHJpeF0ucHJvdG90eXBlKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyht
YXRyaXgzZC50b1N0cmluZygpLCAibWF0cml4M2QoMS41LCAyLjUsIDMuNSwgNC41LCA1LjUsIDYu
NSwgNy41LCA4LjUsIDkuNSwgMTAuNSwgMTEuNSwgMTIuNSwgMTMuNSwgMTQuNSwgMTUuNSwgMTYu
NSkiKTsKK30sIG1hdHJpeCArICIuZnJvbUZsb2F0NjRBcnJheSIpOworCit9CisKK3Rlc3QoZnVu
Y3Rpb24oKSB7CisgICAgbGV0IG1hdHJpeDJkID0gbmV3IERPTU1hdHJpeFJlYWRPbmx5KFsxLjUs
IDIuNSwgMy41LCA0LjUsIDUuNSwgNi41XSk7CisgICAgbGV0IGFycmF5MzIgPSBtYXRyaXgyZC50
b0Zsb2F0MzJBcnJheSgpOworICAgIGFzc2VydF9lcXVhbHMoYXJyYXkzMi5fX3Byb3RvX18sIEZs
b2F0MzJBcnJheS5wcm90b3R5cGUpOworICAgIGFzc2VydF9lcXVhbHMoYXJyYXkzMi5sZW5ndGgs
IDE2KTsKKyAgICBhc3NlcnRfZXF1YWxzKGFycmF5MzIudG9TdHJpbmcoKSwgIjEuNSwyLjUsMCww
LDMuNSw0LjUsMCwwLDAsMCwxLDAsNS41LDYuNSwwLDEiKTsKKworICAgIGxldCBtYXRyaXgzZCA9
IG5ldyBET01NYXRyaXhSZWFkT25seShbMS41LCAyLjUsIDMuNSwgNC41LCA1LjUsIDYuNSwgNy41
LCA4LjUsIDkuNSwgMTAuNSwgMTEuNSwgMTIuNSwgMTMuNSwgMTQuNSwgMTUuNSwgMTYuNV0pOwor
ICAgIGFycmF5MzIgPSBtYXRyaXgzZC50b0Zsb2F0MzJBcnJheSgpOworICAgIGFzc2VydF9lcXVh
bHMoYXJyYXkzMi5fX3Byb3RvX18sIEZsb2F0MzJBcnJheS5wcm90b3R5cGUpOworICAgIGFzc2Vy
dF9lcXVhbHMoYXJyYXkzMi5sZW5ndGgsIDE2KTsKKyAgICBhc3NlcnRfZXF1YWxzKGFycmF5MzIu
dG9TdHJpbmcoKSwgIjEuNSwyLjUsMy41LDQuNSw1LjUsNi41LDcuNSw4LjUsOS41LDEwLjUsMTEu
NSwxMi41LDEzLjUsMTQuNSwxNS41LDE2LjUiKTsKKyAgICBhc3NlcnRfZXF1YWxzKG1hdHJpeDNk
LnRvU3RyaW5nKCksIERPTU1hdHJpeFJlYWRPbmx5LmZyb21GbG9hdDMyQXJyYXkoYXJyYXkzMiku
dG9TdHJpbmcoKSk7Cit9LCAiRE9NTWF0cml4UmVhZG9ubHkudG9GbG9hdDMyQXJyYXkiKTsKKwor
dGVzdChmdW5jdGlvbigpIHsKKyAgICBsZXQgbWF0cml4MmQgPSBuZXcgRE9NTWF0cml4UmVhZE9u
bHkoWzEuNSwgMi41LCAzLjUsIDQuNSwgNS41LCA2LjVdKTsKKyAgICBsZXQgYXJyYXk2NCA9IG1h
dHJpeDJkLnRvRmxvYXQ2NEFycmF5KCk7CisgICAgYXNzZXJ0X2VxdWFscyhhcnJheTY0Ll9fcHJv
dG9fXywgRmxvYXQ2NEFycmF5LnByb3RvdHlwZSk7CisgICAgYXNzZXJ0X2VxdWFscyhhcnJheTY0
Lmxlbmd0aCwgMTYpOworICAgIGFzc2VydF9lcXVhbHMoYXJyYXk2NC50b1N0cmluZygpLCAiMS41
LDIuNSwwLDAsMy41LDQuNSwwLDAsMCwwLDEsMCw1LjUsNi41LDAsMSIpOworCisgICAgbGV0IG1h
dHJpeDNkID0gbmV3IERPTU1hdHJpeFJlYWRPbmx5KFsxLjUsIDIuNSwgMy41LCA0LjUsIDUuNSwg
Ni41LCA3LjUsIDguNSwgOS41LCAxMC41LCAxMS41LCAxMi41LCAxMy41LCAxNC41LCAxNS41LCAx
Ni41XSk7CisgICAgYXJyYXk2NCA9IG1hdHJpeDNkLnRvRmxvYXQ2NEFycmF5KCk7CisgICAgYXNz
ZXJ0X2VxdWFscyhhcnJheTY0Ll9fcHJvdG9fXywgRmxvYXQ2NEFycmF5LnByb3RvdHlwZSk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhhcnJheTY0Lmxlbmd0aCwgMTYpOworICAgIGFzc2VydF9lcXVhbHMo
YXJyYXk2NC50b1N0cmluZygpLCAiMS41LDIuNSwzLjUsNC41LDUuNSw2LjUsNy41LDguNSw5LjUs
MTAuNSwxMS41LDEyLjUsMTMuNSwxNC41LDE1LjUsMTYuNSIpOworICAgIGFzc2VydF9lcXVhbHMo
bWF0cml4M2QudG9TdHJpbmcoKSwgRE9NTWF0cml4UmVhZE9ubHkuZnJvbUZsb2F0NjRBcnJheShh
cnJheTY0KS50b1N0cmluZygpKTsKK30sICJET01NYXRyaXhSZWFkb25seS50b0Zsb2F0NjRBcnJh
eSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9nZW9tZXRyeS0xL0RPTU1hdHJp
eC1uZXdvYmplY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9jc3MvZ2VvbWV0cnktMS9ET01NYXRyaXgtbmV3b2JqZWN0LWV4cGVjdGVk
LnR4dAppbmRleCAwMzg3ZThiMDZlNDJhNGQ5MGFjNDU3OWI3ZDIwZThlNmYzMTU5OWRjLi5kMjMx
M2M0Y2NkZDk4Yjg0MDg0ZjM5MWQxNWM1ZTU5M2ExMDkzY2NiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9nZW9tZXRyeS0xL0RPTU1h
dHJpeC1uZXdvYmplY3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2dlb21ldHJ5LTEvRE9NTWF0cml4LW5ld29iamVjdC1l
eHBlY3RlZC50eHQKQEAgLTEyLDggKzEyLDggQEAgUEFTUyBET01NYXRyaXggZmxpcFgKIFBBU1Mg
RE9NTWF0cml4IGZsaXBZIAogUEFTUyBET01NYXRyaXggaW52ZXJzZSAKIEZBSUwgRE9NTWF0cml4
IHRyYW5zZm9ybVBvaW50IG1hdHJpeFttZXRob2RdIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ21h
dHJpeFttZXRob2RdKCknLCAnbWF0cml4W21ldGhvZF0nIGlzIHVuZGVmaW5lZCkKLUZBSUwgRE9N
TWF0cml4IHRvRmxvYXQzMkFycmF5IG1hdHJpeFttZXRob2RdIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ21hdHJpeFttZXRob2RdKCknLCAnbWF0cml4W21ldGhvZF0nIGlzIHVuZGVmaW5lZCkKLUZB
SUwgRE9NTWF0cml4IHRvRmxvYXQ2NEFycmF5IG1hdHJpeFttZXRob2RdIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ21hdHJpeFttZXRob2RdKCknLCAnbWF0cml4W21ldGhvZF0nIGlzIHVuZGVmaW5l
ZCkKK1BBU1MgRE9NTWF0cml4IHRvRmxvYXQzMkFycmF5IAorUEFTUyBET01NYXRyaXggdG9GbG9h
dDY0QXJyYXkgCiBQQVNTIERPTU1hdHJpeFJlYWRPbmx5IHRyYW5zbGF0ZSAKIFBBU1MgRE9NTWF0
cml4UmVhZE9ubHkgc2NhbGUgCiBQQVNTIERPTU1hdHJpeFJlYWRPbmx5IHNjYWxlM2QgCkBAIC0y
Nyw2ICsyNyw2IEBAIFBBU1MgRE9NTWF0cml4UmVhZE9ubHkgZmxpcFgKIFBBU1MgRE9NTWF0cml4
UmVhZE9ubHkgZmxpcFkgCiBQQVNTIERPTU1hdHJpeFJlYWRPbmx5IGludmVyc2UgCiBGQUlMIERP
TU1hdHJpeFJlYWRPbmx5IHRyYW5zZm9ybVBvaW50IG1hdHJpeFttZXRob2RdIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ21hdHJpeFttZXRob2RdKCknLCAnbWF0cml4W21ldGhvZF0nIGlzIHVuZGVm
aW5lZCkKLUZBSUwgRE9NTWF0cml4UmVhZE9ubHkgdG9GbG9hdDMyQXJyYXkgbWF0cml4W21ldGhv
ZF0gaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnbWF0cml4W21ldGhvZF0oKScsICdtYXRyaXhbbWV0
aG9kXScgaXMgdW5kZWZpbmVkKQotRkFJTCBET01NYXRyaXhSZWFkT25seSB0b0Zsb2F0NjRBcnJh
eSBtYXRyaXhbbWV0aG9kXSBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdtYXRyaXhbbWV0aG9kXSgp
JywgJ21hdHJpeFttZXRob2RdJyBpcyB1bmRlZmluZWQpCitQQVNTIERPTU1hdHJpeFJlYWRPbmx5
IHRvRmxvYXQzMkFycmF5IAorUEFTUyBET01NYXRyaXhSZWFkT25seSB0b0Zsb2F0NjRBcnJheSAK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>